[Pkg-e-commits] [SCM] Enlightenment DR17 advanced canvas library branch, new-svn-snapshot, updated. debian/0.9.9.050+svn20081206-1-2584-g1bf16f2

Albin Tonnerre albin.tonnerre at gmail.com
Fri Dec 4 21:04:23 UTC 2009


The following commit has been merged in the new-svn-snapshot branch:
commit 78af08deb3ae1bc79d02bce24a15ccf2fee6df5f
Author: Albin Tonnerre <albin.tonnerre at gmail.com>
Date:   Fri Dec 4 20:06:49 2009 +0100

    Import upstream release 0.9.9.063

diff --git a/AUTHORS b/AUTHORS
index c7459e6..c993de5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -15,3 +15,4 @@ Gustavo Sverzut Barbieri <barbieri at gmail.com>
 Vincent Torri <vtorri at univ-evry dot fr>
 Tim Horton <hortont424 at gmail.com>
 Tom Hacohen <tom at stosb.com>
+Mathieu Taillefumier <mathieu.taillefumier at free.fr>
diff --git a/Makefile.in b/Makefile.in
index 23731ff..d3df5ea 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -341,17 +341,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -557,7 +560,7 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 distclean-libtool:
-	-rm -f libtool
+	-rm -f libtool config.lt
 install-pkgconfigDATA: $(pkgconfig_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
@@ -651,7 +654,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/README b/README
index 383fc21..763b61d 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Evas 0.9.9.062
+Evas 0.9.9.063
 
 Evas is a clean display canvas API for several target display systems
 that can draw anti-aliased text, smooth super and sub-sampled scaled
@@ -253,7 +253,7 @@ BUILDING PACKAGES:
 
 RPM: To build rpm packages:
   
-  sudo rpm -ta evas-0.9.9.062.tar.gz
+  sudo rpm -ta evas-0.9.9.063.tar.gz
 
 You will find rpm packages in your system /usr/src/redhat/* dirs (note you may
 not need to use sudo or root if you have your own ~/.rpmrc. see rpm documents
@@ -261,11 +261,11 @@ for more details)
 
 DEB: To build deb packages:
 
-  tar zvf evas-0.9.9.062.tar.gz
-  cd evas-0.9.9.062
+  tar zvf evas-0.9.9.063.tar.gz
+  cd evas-0.9.9.063
   dpkg-buildpackage -us -uc -rfakeroot
   cd ..
-  rm -rf evas-0.9.9.062
+  rm -rf evas-0.9.9.063
 
 You will find all the debian source, binary etc. packages put in the directory
 where you first untarred the source tarball.
diff --git a/aclocal.m4 b/aclocal.m4
index d7bd3b9..5be358c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(AC_AUTOCONF_VERSION, [2.61],,
-[m4_warning([this file was generated for autoconf 2.61.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
 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'.])])
@@ -177,7 +177,7 @@ else
 fi[]dnl
 ])# PKG_CHECK_MODULES
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
+# 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,
@@ -192,7 +192,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.10'
 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.10.1], [],
+m4_if([$1], [1.10.2], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -206,12 +206,12 @@ 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 AC_INIT_AUTOMAKE.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.1])dnl
+[AM_AUTOMAKE_VERSION([1.10.2])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
@@ -484,57 +484,68 @@ _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# 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 3
+#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[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")`
-  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"
+[{
+  # 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
-done
+}
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
 
@@ -840,13 +851,13 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# 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 3
+# serial 4
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -863,7 +874,7 @@ AC_DEFUN([_AM_SET_OPTION],
 # ----------------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
 # -------------------------------------------
diff --git a/config.h.in b/config.h.in
index 8982377..9e8a240 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,5 +1,8 @@
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
 /* Build Altivec Code */
 #undef BUILD_ALTIVEC
 
@@ -75,6 +78,15 @@
 /* 32bpp RGB Rotation 90 Converter Support */
 #undef BUILD_CONVERT_32_RGB_ROT90
 
+/* 32bpp Grayscale 64-palette Converter Support */
+#undef BUILD_CONVERT_8_GRAYSCALE_64
+
+/* 8bpp GRY 1 Converter Support */
+#undef BUILD_CONVERT_8_GRY_1
+
+/* 8bpp GRY 16 Converter Support */
+#undef BUILD_CONVERT_8_GRY_16
+
 /* 8bpp RGB 111 Converter Support */
 #undef BUILD_CONVERT_8_RGB_111
 
@@ -174,6 +186,9 @@
 /* UP Image Loader Support */
 #undef BUILD_LOADER_JPEG
 
+/* JPEG Region Decode Support */
+#undef BUILD_LOADER_JPEG_REGION
+
 /* UP Image Loader Support */
 #undef BUILD_LOADER_PMAPS
 
@@ -324,6 +339,12 @@
 /* Build xrender-xcb engine inside libevas */
 #undef EVAS_STATIC_BUILD_XRENDER_XCB
 
+/* Samsung S3c6410 GLES2 support */
+#undef GLES_VARIETY_S3C6410
+
+/* Imagination SGX GLES2 support */
+#undef GLES_VARIETY_SGX
+
 /* Define to 1 if you have `alloca', as a function or macro. */
 #undef HAVE_ALLOCA
 
@@ -349,6 +370,9 @@
 /* Define to 1 if you have the `dlopen' function. */
 #undef HAVE_DLOPEN
 
+/* Define to 1 if you have the <EGL/egl.h> header file. */
+#undef HAVE_EGL_EGL_H
+
 /* Set to 1 if evil package is installed */
 #undef HAVE_EVIL
 
@@ -364,8 +388,8 @@
 /* Define to 1 if you have the <GL/glew.h> header file. */
 #undef HAVE_GL_GLEW_H
 
-/* Define to 1 if you have the <GL/glu.h> header file. */
-#undef HAVE_GL_GLU_H
+/* Define to 1 if you have the <GL/glx.h> header file. */
+#undef HAVE_GL_GLX_H
 
 /* Define to 1 if you have the <GL/gl.h> header file. */
 #undef HAVE_GL_GL_H
@@ -409,6 +433,9 @@
 /* Define to 1 if you have the <X11/extensions/Xrender.h> header file. */
 #undef HAVE_X11_EXTENSIONS_XRENDER_H
 
+/* Define to 1 if you have the <X11/Xlib.h> header file. */
+#undef HAVE_X11_XLIB_H
+
 /* Define to 1 if you have the <X11/X.h> header file. */
 #undef HAVE_X11_X_H
 
@@ -459,9 +486,17 @@
 /* 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
+/* 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
 
 /* Define to 1 if the X Window System is missing or not being used. */
 #undef X_DISPLAY_MISSING
diff --git a/configure b/configure
index bcb99de..4381a04 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for evas 0.9.9.062.
+# Generated by GNU Autoconf 2.63 for evas 0.9.9.063.
 #
 # Report bugs to <enlightenment-devel at lists.sourceforge.net>.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 ## --------------------- ##
@@ -17,7 +17,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
 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
+  # 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
@@ -39,17 +39,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
+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
-    PATH_SEPARATOR=:
+    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
-  rm -f conf$$.sh
+  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.
@@ -65,8 +93,6 @@ fi
 # 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.)
-as_nl='
-'
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
@@ -89,7 +115,7 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   { (exit 1); exit 1; }
 fi
 
@@ -102,17 +128,10 @@ PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
 
 # Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1 &&
@@ -134,7 +153,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -160,7 +179,7 @@ else
   as_have_required=no
 fi
 
-  if test $as_have_required = yes && 	 (eval ":
+  if test $as_have_required = yes &&	 (eval ":
 (as_func_return () {
   (exit \$1)
 }
@@ -242,7 +261,7 @@ IFS=$as_save_IFS
 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
+  # 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
@@ -263,7 +282,7 @@ _ASEOF
 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
+  # 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
@@ -343,10 +362,10 @@ fi
 
       if test "x$CONFIG_SHELL" != x; then
   for as_var in BASH_ENV ENV
-        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-        done
-        export CONFIG_SHELL
-        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+	done
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
 fi
 
 
@@ -415,9 +434,10 @@ fi
 
 test \$exitcode = 0") || {
   echo No shell found that supports shell functions.
-  echo Please tell autoconf at gnu.org about your system,
-  echo including any error possibly output before this
-  echo message
+  echo Please tell bug-autoconf at gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
 }
 
 
@@ -453,7 +473,7 @@ test \$exitcode = 0") || {
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+    { $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
@@ -481,7 +501,6 @@ case `echo -n x` in
 *)
   ECHO_N='-n';;
 esac
-
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -494,19 +513,22 @@ if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-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 ||
+  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'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
+  fi
 else
   as_ln_s='cp -p'
 fi
@@ -531,10 +553,10 @@ else
   as_test_x='
     eval sh -c '\''
       if test -d "$1"; then
-        test -d "$1/.";
+	test -d "$1/.";
       else
 	case $1 in
-        -*)set "./$1";;
+	-*)set "./$1";;
 	esac;
 	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
 	???[sx]*):;;*)false;;esac;fi
@@ -723,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='evas'
 PACKAGE_TARNAME='evas'
-PACKAGE_VERSION='0.9.9.062'
-PACKAGE_STRING='evas 0.9.9.062'
+PACKAGE_VERSION='0.9.9.063'
+PACKAGE_STRING='evas 0.9.9.063'
 PACKAGE_BUGREPORT='enlightenment-devel at lists.sourceforge.net'
 
 ac_unique_file="configure.ac"
@@ -764,347 +786,449 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-build
-build_cpu
-build_vendor
-build_os
-host
-host_cpu
-host_vendor
-host_os
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-EXEEXT
-OBJEXT
-INSTALL_PROGRAM
-INSTALL_SCRIPT
-INSTALL_DATA
-am__isrc
-CYGPATH_W
-PACKAGE
-VERSION
-ACLOCAL
-AUTOCONF
-AUTOMAKE
-AUTOHEADER
-MAKEINFO
-install_sh
-STRIP
-INSTALL_STRIP_PROGRAM
-mkdir_p
-AWK
-SET_MAKE
-am__leading_dot
-AMTAR
-am__tar
-am__untar
-DEPDIR
-am__include
-am__quote
-AMDEP_TRUE
-AMDEP_FALSE
-AMDEPBACKSLASH
-CCDEPMODE
-am__fastdepCC_TRUE
-am__fastdepCC_FALSE
-AS
-DLLTOOL
-OBJDUMP
-LIBTOOL
-SED
-GREP
-EGREP
-FGREP
-LD
-DUMPBIN
-ac_ct_DUMPBIN
-NM
-LN_S
-AR
-RANLIB
-lt_ECHO
-DSYMUTIL
-NMEDIT
-LIPO
-OTOOL
-OTOOL64
-CPP
-version_info
-release_info
-MODULE_ARCH
-CXX
-CXXFLAGS
-ac_ct_CXX
-CXXDEPMODE
-am__fastdepCXX_TRUE
-am__fastdepCXX_FALSE
-CXXCPP
-PKG_CONFIG
-efl_have_doxygen
-efl_doxygen
-EFL_BUILD_DOC_TRUE
-EFL_BUILD_DOC_FALSE
-EVIL_CFLAGS
-EVIL_LIBS
-EINA_CFLAGS
-EINA_LIBS
-FREETYPE_CFLAGS
-FREETYPE_LIBS
-FONTCONFIG_CFLAGS
-FONTCONFIG_LIBS
-FRIBIDI_CFLAGS
-FRIBIDI_LIBS
-WIN32_CPPFLAGS
-WIN32_CFLAGS
-lt_enable_auto_import
-ALLOCA
-dlopen_libs
-EVAS_CSERVE_TRUE
-EVAS_CSERVE_FALSE
-evas_engine_buffer_cflags
-evas_engine_buffer_libs
-BUILD_ENGINE_BUFFER_TRUE
-BUILD_ENGINE_BUFFER_FALSE
-EVAS_STATIC_BUILD_BUFFER_TRUE
-EVAS_STATIC_BUILD_BUFFER_FALSE
-XMKMF
-X_CFLAGS
-X_PRE_LIBS
-X_LIBS
-X_EXTRA_LIBS
-evas_engine_software_xlib_cflags
-evas_engine_software_xlib_libs
-BUILD_ENGINE_SOFTWARE_XLIB_TRUE
-BUILD_ENGINE_SOFTWARE_XLIB_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_XLIB_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_XLIB_FALSE
-evas_engine_xrender_x11_cflags
-evas_engine_xrender_x11_libs
-BUILD_ENGINE_XRENDER_X11_TRUE
-BUILD_ENGINE_XRENDER_X11_FALSE
-EVAS_STATIC_BUILD_XRENDER_X11_TRUE
-EVAS_STATIC_BUILD_XRENDER_X11_FALSE
-evas_engine_gl_x11_cflags
-evas_engine_gl_x11_libs
-BUILD_ENGINE_GL_X11_TRUE
-BUILD_ENGINE_GL_X11_FALSE
-EVAS_STATIC_BUILD_GL_X11_TRUE
-EVAS_STATIC_BUILD_GL_X11_FALSE
-XCB_CFLAGS
-XCB_LIBS
-evas_engine_software_xcb_cflags
-evas_engine_software_xcb_libs
-BUILD_ENGINE_SOFTWARE_XCB_TRUE
-BUILD_ENGINE_SOFTWARE_XCB_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_XCB_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_XCB_FALSE
-XCBRENDER_CFLAGS
-XCBRENDER_LIBS
-evas_engine_xrender_xcb_cflags
-evas_engine_xrender_xcb_libs
-BUILD_ENGINE_XRENDER_XCB_TRUE
-BUILD_ENGINE_XRENDER_XCB_FALSE
-EVAS_STATIC_BUILD_XRENDER_XCB_TRUE
-EVAS_STATIC_BUILD_XRENDER_XCB_FALSE
-evas_engine_software_gdi_cflags
-evas_engine_software_gdi_libs
-BUILD_ENGINE_SOFTWARE_GDI_TRUE
-BUILD_ENGINE_SOFTWARE_GDI_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE
-evas_engine_software_ddraw_cflags
-evas_engine_software_ddraw_libs
-BUILD_ENGINE_SOFTWARE_DDRAW_TRUE
-BUILD_ENGINE_SOFTWARE_DDRAW_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE
-evas_engine_direct3d_cflags
-evas_engine_direct3d_libs
-BUILD_ENGINE_DIRECT3D_TRUE
-BUILD_ENGINE_DIRECT3D_FALSE
-EVAS_STATIC_BUILD_DIRECT3D_TRUE
-EVAS_STATIC_BUILD_DIRECT3D_FALSE
-evas_engine_quartz_cflags
-evas_engine_quartz_libs
-BUILD_ENGINE_QUARTZ_TRUE
-BUILD_ENGINE_QUARTZ_FALSE
-EVAS_STATIC_BUILD_QUARTZ_TRUE
-EVAS_STATIC_BUILD_QUARTZ_FALSE
-evas_engine_gl_glew_cflags
-evas_engine_gl_glew_libs
-BUILD_ENGINE_GL_GLEW_TRUE
-BUILD_ENGINE_GL_GLEW_FALSE
-EVAS_STATIC_BUILD_GL_GLEW_TRUE
-EVAS_STATIC_BUILD_GL_GLEW_FALSE
-SDL_CFLAGS
-SDL_LIBS
-evas_engine_software_sdl_cflags
-evas_engine_software_sdl_libs
-BUILD_ENGINE_SOFTWARE_SDL_TRUE
-BUILD_ENGINE_SOFTWARE_SDL_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE
-evas_engine_fb_cflags
-evas_engine_fb_libs
-BUILD_ENGINE_FB_TRUE
-BUILD_ENGINE_FB_FALSE
-EVAS_STATIC_BUILD_FB_TRUE
-EVAS_STATIC_BUILD_FB_FALSE
-DIRECTFB_CFLAGS
-DIRECTFB_LIBS
-evas_engine_directfb_cflags
-evas_engine_directfb_libs
-BUILD_ENGINE_DIRECTFB_TRUE
-BUILD_ENGINE_DIRECTFB_FALSE
-EVAS_STATIC_BUILD_DIRECTFB_TRUE
-EVAS_STATIC_BUILD_DIRECTFB_FALSE
-evas_engine_software_16_x11_cflags
-evas_engine_software_16_x11_libs
-BUILD_ENGINE_SOFTWARE_16_X11_TRUE
-BUILD_ENGINE_SOFTWARE_16_X11_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_16_X11_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_16_X11_FALSE
-evas_engine_software_16_ddraw_cflags
-evas_engine_software_16_ddraw_libs
-BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE
-BUILD_ENGINE_SOFTWARE_16_DDRAW_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE
-evas_engine_software_16_wince_cflags
-evas_engine_software_16_wince_libs
-BUILD_ENGINE_SOFTWARE_16_WINCE_TRUE
-BUILD_ENGINE_SOFTWARE_16_WINCE_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_FALSE
-evas_engine_gl_common_libs
-BUILD_ENGINE_GL_COMMON_TRUE
-BUILD_ENGINE_GL_COMMON_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE
-BUILD_ENGINE_SOFTWARE_X11_TRUE
-BUILD_ENGINE_SOFTWARE_X11_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE
-have_evas_engine_software_xlib
-have_evas_engine_software_xcb
-BUILD_ENGINE_SOFTWARE_16_TRUE
-BUILD_ENGINE_SOFTWARE_16_FALSE
-EVAS_STATIC_BUILD_SOFTWARE_16_TRUE
-EVAS_STATIC_BUILD_SOFTWARE_16_FALSE
-EDB_CFLAGS
-EDB_LIBS
-evas_image_loader_edb_cflags
-evas_image_loader_edb_libs
-BUILD_LOADER_EDB_TRUE
-BUILD_LOADER_EDB_FALSE
-EVAS_STATIC_BUILD_EDB_TRUE
-EVAS_STATIC_BUILD_EDB_FALSE
-EET_CFLAGS
-EET_LIBS
-evas_image_loader_eet_cflags
-evas_image_loader_eet_libs
-BUILD_LOADER_EET_TRUE
-BUILD_LOADER_EET_FALSE
-EVAS_STATIC_BUILD_EET_TRUE
-EVAS_STATIC_BUILD_EET_FALSE
-evas_image_loader_gif_cflags
-evas_image_loader_gif_libs
-BUILD_LOADER_GIF_TRUE
-BUILD_LOADER_GIF_FALSE
-EVAS_STATIC_BUILD_GIF_TRUE
-EVAS_STATIC_BUILD_GIF_FALSE
-evas_image_loader_jpeg_cflags
-evas_image_loader_jpeg_libs
-BUILD_LOADER_JPEG_TRUE
-BUILD_LOADER_JPEG_FALSE
-EVAS_STATIC_BUILD_JPEG_TRUE
-EVAS_STATIC_BUILD_JPEG_FALSE
-BUILD_SAVER_JPEG_TRUE
-BUILD_SAVER_JPEG_FALSE
-evas_image_loader_pmaps_cflags
-evas_image_loader_pmaps_libs
-BUILD_LOADER_PMAPS_TRUE
-BUILD_LOADER_PMAPS_FALSE
-EVAS_STATIC_BUILD_PMAPS_TRUE
-EVAS_STATIC_BUILD_PMAPS_FALSE
-PNG_CFLAGS
-PNG_LIBS
-evas_image_loader_png_cflags
-evas_image_loader_png_libs
-BUILD_LOADER_PNG_TRUE
-BUILD_LOADER_PNG_FALSE
-EVAS_STATIC_BUILD_PNG_TRUE
-EVAS_STATIC_BUILD_PNG_FALSE
-SVG_CFLAGS
-SVG_LIBS
-evas_image_loader_svg_cflags
-evas_image_loader_svg_libs
-BUILD_LOADER_SVG_TRUE
-BUILD_LOADER_SVG_FALSE
-EVAS_STATIC_BUILD_SVG_TRUE
-EVAS_STATIC_BUILD_SVG_FALSE
-evas_image_loader_tiff_cflags
-evas_image_loader_tiff_libs
-BUILD_LOADER_TIFF_TRUE
-BUILD_LOADER_TIFF_FALSE
-EVAS_STATIC_BUILD_TIFF_TRUE
-EVAS_STATIC_BUILD_TIFF_FALSE
-evas_image_loader_xpm_cflags
-evas_image_loader_xpm_libs
-BUILD_LOADER_XPM_TRUE
-BUILD_LOADER_XPM_FALSE
-EVAS_STATIC_BUILD_XPM_TRUE
-EVAS_STATIC_BUILD_XPM_FALSE
-EVAS_MAGIC_DEBUG_TRUE
-EVAS_MAGIC_DEBUG_FALSE
-VALGRIND_CFLAGS
-VALGRIND_LIBS
-altivec_cflags
-pthread_cflags
-pthread_libs
+ac_subst_vars='LTLIBOBJS
 LIBOBJS
-LTLIBOBJS'
+requirement_evas
+pthread_libs
+pthread_cflags
+altivec_cflags
+VALGRIND_LIBS
+VALGRIND_CFLAGS
+EVAS_MAGIC_DEBUG_FALSE
+EVAS_MAGIC_DEBUG_TRUE
+EVAS_STATIC_BUILD_XPM_FALSE
+EVAS_STATIC_BUILD_XPM_TRUE
+BUILD_LOADER_XPM_FALSE
+BUILD_LOADER_XPM_TRUE
+evas_image_loader_xpm_libs
+evas_image_loader_xpm_cflags
+EVAS_STATIC_BUILD_TIFF_FALSE
+EVAS_STATIC_BUILD_TIFF_TRUE
+BUILD_LOADER_TIFF_FALSE
+BUILD_LOADER_TIFF_TRUE
+evas_image_loader_tiff_libs
+evas_image_loader_tiff_cflags
+EVAS_STATIC_BUILD_SVG_FALSE
+EVAS_STATIC_BUILD_SVG_TRUE
+BUILD_LOADER_SVG_FALSE
+BUILD_LOADER_SVG_TRUE
+evas_image_loader_svg_libs
+evas_image_loader_svg_cflags
+SVG_LIBS
+SVG_CFLAGS
+EVAS_STATIC_BUILD_PNG_FALSE
+EVAS_STATIC_BUILD_PNG_TRUE
+BUILD_LOADER_PNG_FALSE
+BUILD_LOADER_PNG_TRUE
+evas_image_loader_png_libs
+evas_image_loader_png_cflags
+PNG_LIBS
+PNG_CFLAGS
+EVAS_STATIC_BUILD_PMAPS_FALSE
+EVAS_STATIC_BUILD_PMAPS_TRUE
+BUILD_LOADER_PMAPS_FALSE
+BUILD_LOADER_PMAPS_TRUE
+evas_image_loader_pmaps_libs
+evas_image_loader_pmaps_cflags
+BUILD_SAVER_JPEG_FALSE
+BUILD_SAVER_JPEG_TRUE
+EVAS_STATIC_BUILD_JPEG_FALSE
+EVAS_STATIC_BUILD_JPEG_TRUE
+BUILD_LOADER_JPEG_FALSE
+BUILD_LOADER_JPEG_TRUE
+evas_image_loader_jpeg_libs
+evas_image_loader_jpeg_cflags
+EVAS_STATIC_BUILD_GIF_FALSE
+EVAS_STATIC_BUILD_GIF_TRUE
+BUILD_LOADER_GIF_FALSE
+BUILD_LOADER_GIF_TRUE
+evas_image_loader_gif_libs
+evas_image_loader_gif_cflags
+EVAS_STATIC_BUILD_EET_FALSE
+EVAS_STATIC_BUILD_EET_TRUE
+BUILD_LOADER_EET_FALSE
+BUILD_LOADER_EET_TRUE
+evas_image_loader_eet_libs
+evas_image_loader_eet_cflags
+EET_LIBS
+EET_CFLAGS
+EVAS_STATIC_BUILD_EDB_FALSE
+EVAS_STATIC_BUILD_EDB_TRUE
+BUILD_LOADER_EDB_FALSE
+BUILD_LOADER_EDB_TRUE
+evas_image_loader_edb_libs
+evas_image_loader_edb_cflags
+EDB_LIBS
+EDB_CFLAGS
+EVAS_STATIC_BUILD_SOFTWARE_16_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_16_TRUE
+BUILD_ENGINE_SOFTWARE_16_FALSE
+BUILD_ENGINE_SOFTWARE_16_TRUE
+have_evas_engine_software_xcb
+have_evas_engine_software_xlib
+EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE
+BUILD_ENGINE_SOFTWARE_X11_FALSE
+BUILD_ENGINE_SOFTWARE_X11_TRUE
+EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE
+BUILD_ENGINE_GL_COMMON_FALSE
+BUILD_ENGINE_GL_COMMON_TRUE
+evas_engine_gl_common_libs
+EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_TRUE
+BUILD_ENGINE_SOFTWARE_16_WINCE_FALSE
+BUILD_ENGINE_SOFTWARE_16_WINCE_TRUE
+evas_engine_software_16_wince_libs
+evas_engine_software_16_wince_cflags
+EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE
+BUILD_ENGINE_SOFTWARE_16_DDRAW_FALSE
+BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE
+evas_engine_software_16_ddraw_libs
+evas_engine_software_16_ddraw_cflags
+EVAS_STATIC_BUILD_SOFTWARE_16_X11_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_16_X11_TRUE
+BUILD_ENGINE_SOFTWARE_16_X11_FALSE
+BUILD_ENGINE_SOFTWARE_16_X11_TRUE
+evas_engine_software_16_x11_libs
+evas_engine_software_16_x11_cflags
+EVAS_STATIC_BUILD_DIRECTFB_FALSE
+EVAS_STATIC_BUILD_DIRECTFB_TRUE
+BUILD_ENGINE_DIRECTFB_FALSE
+BUILD_ENGINE_DIRECTFB_TRUE
+evas_engine_directfb_libs
+evas_engine_directfb_cflags
+DIRECTFB_LIBS
+DIRECTFB_CFLAGS
+EVAS_STATIC_BUILD_FB_FALSE
+EVAS_STATIC_BUILD_FB_TRUE
+BUILD_ENGINE_FB_FALSE
+BUILD_ENGINE_FB_TRUE
+evas_engine_fb_libs
+evas_engine_fb_cflags
+EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE
+BUILD_ENGINE_SOFTWARE_SDL_FALSE
+BUILD_ENGINE_SOFTWARE_SDL_TRUE
+evas_engine_software_sdl_libs
+evas_engine_software_sdl_cflags
+SDL_LIBS
+SDL_CFLAGS
+EVAS_STATIC_BUILD_GL_GLEW_FALSE
+EVAS_STATIC_BUILD_GL_GLEW_TRUE
+BUILD_ENGINE_GL_GLEW_FALSE
+BUILD_ENGINE_GL_GLEW_TRUE
+evas_engine_gl_glew_libs
+evas_engine_gl_glew_cflags
+EVAS_STATIC_BUILD_QUARTZ_FALSE
+EVAS_STATIC_BUILD_QUARTZ_TRUE
+BUILD_ENGINE_QUARTZ_FALSE
+BUILD_ENGINE_QUARTZ_TRUE
+evas_engine_quartz_libs
+evas_engine_quartz_cflags
+EVAS_STATIC_BUILD_DIRECT3D_FALSE
+EVAS_STATIC_BUILD_DIRECT3D_TRUE
+BUILD_ENGINE_DIRECT3D_FALSE
+BUILD_ENGINE_DIRECT3D_TRUE
+evas_engine_direct3d_libs
+evas_engine_direct3d_cflags
+EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE
+BUILD_ENGINE_SOFTWARE_DDRAW_FALSE
+BUILD_ENGINE_SOFTWARE_DDRAW_TRUE
+evas_engine_software_ddraw_libs
+evas_engine_software_ddraw_cflags
+EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE
+BUILD_ENGINE_SOFTWARE_GDI_FALSE
+BUILD_ENGINE_SOFTWARE_GDI_TRUE
+evas_engine_software_gdi_libs
+evas_engine_software_gdi_cflags
+EVAS_STATIC_BUILD_XRENDER_XCB_FALSE
+EVAS_STATIC_BUILD_XRENDER_XCB_TRUE
+BUILD_ENGINE_XRENDER_XCB_FALSE
+BUILD_ENGINE_XRENDER_XCB_TRUE
+evas_engine_xrender_xcb_libs
+evas_engine_xrender_xcb_cflags
+XCBRENDER_LIBS
+XCBRENDER_CFLAGS
+EVAS_STATIC_BUILD_SOFTWARE_XCB_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_XCB_TRUE
+BUILD_ENGINE_SOFTWARE_XCB_FALSE
+BUILD_ENGINE_SOFTWARE_XCB_TRUE
+evas_engine_software_xcb_libs
+evas_engine_software_xcb_cflags
+XCB_LIBS
+XCB_CFLAGS
+EVAS_STATIC_BUILD_GL_X11_FALSE
+EVAS_STATIC_BUILD_GL_X11_TRUE
+BUILD_ENGINE_GL_X11_FALSE
+BUILD_ENGINE_GL_X11_TRUE
+evas_engine_gl_x11_libs
+evas_engine_gl_x11_cflags
+EVAS_STATIC_BUILD_XRENDER_X11_FALSE
+EVAS_STATIC_BUILD_XRENDER_X11_TRUE
+BUILD_ENGINE_XRENDER_X11_FALSE
+BUILD_ENGINE_XRENDER_X11_TRUE
+evas_engine_xrender_x11_libs
+evas_engine_xrender_x11_cflags
+EVAS_STATIC_BUILD_SOFTWARE_XLIB_FALSE
+EVAS_STATIC_BUILD_SOFTWARE_XLIB_TRUE
+BUILD_ENGINE_SOFTWARE_XLIB_FALSE
+BUILD_ENGINE_SOFTWARE_XLIB_TRUE
+evas_engine_software_xlib_libs
+evas_engine_software_xlib_cflags
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+EVAS_STATIC_BUILD_BUFFER_FALSE
+EVAS_STATIC_BUILD_BUFFER_TRUE
+BUILD_ENGINE_BUFFER_FALSE
+BUILD_ENGINE_BUFFER_TRUE
+evas_engine_buffer_libs
+evas_engine_buffer_cflags
+EVAS_CSERVE_FALSE
+EVAS_CSERVE_TRUE
+dlopen_libs
+ALLOCA
+lt_enable_auto_import
+WIN32_CFLAGS
+WIN32_CPPFLAGS
+FRIBIDI_LIBS
+FRIBIDI_CFLAGS
+FONTCONFIG_LIBS
+FONTCONFIG_CFLAGS
+FREETYPE_LIBS
+FREETYPE_CFLAGS
+EINA_LIBS
+EINA_CFLAGS
+EVIL_LIBS
+EVIL_CFLAGS
+EFL_BUILD_DOC_FALSE
+EFL_BUILD_DOC_TRUE
+efl_doxygen
+efl_have_doxygen
+pkgconfig_requires_private
+PKG_CONFIG
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+MODULE_ARCH
+release_info
+version_info
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+lt_ECHO
+RANLIB
+AR
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+OBJDUMP
+DLLTOOL
+AS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+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
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+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_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
+enable_libtool_lock
+enable_strict
+enable_simple_x11
+enable_doc
+with_doxygen
+enable_fontconfig
+enable_fribidi
+enable_evas_cserve
+enable_gl_flavor_gles
+enable_gles_variety_sgx
+enable_gles_variety_s3c6410
+enable_buffer
+enable_software_xlib
+with_x
+enable_xrender_x11
+enable_gl_x11
+enable_software_xcb
+enable_xrender_xcb
+enable_software_gdi
+enable_software_ddraw
+enable_direct3d
+enable_quartz
+enable_gl_glew
+enable_software_sdl
+enable_fb
+enable_directfb
+enable_software_16_x11
+enable_software_16_ddraw
+enable_software_16_wince
+enable_sdl_primitive
+enable_static_software_generic
+enable_static_software_16
+enable_image_loader_edb
+enable_image_loader_eet
+enable_font_loader_eet
+enable_image_loader_gif
+enable_image_loader_jpeg
+enable_image_loader_pmaps
+enable_image_loader_png
+enable_image_loader_svg
+enable_image_loader_tiff
+enable_image_loader_xpm
+enable_pthreads
+enable_pipe_render
+enable_async_events
+enable_async_preload
+enable_cpu_mmx
+enable_cpu_sse
+enable_cpu_altivec
+enable_cpu_neon
+enable_cpu_c
+enable_evas_magic_debug
+enable_scale_sample
+enable_scale_smooth
+enable_convert_yuv
+enable_small_dither_mask
+enable_line_dither_mask
+enable_no_dither_mask
+enable_convert_8_rgb_332
+enable_convert_8_rgb_666
+enable_convert_8_rgb_232
+enable_convert_8_rgb_222
+enable_convert_8_rgb_221
+enable_convert_8_rgb_121
+enable_convert_8_rgb_111
+enable_convert_16_rgb_565
+enable_convert_16_bgr_565
+enable_convert_16_rgb_555
+enable_convert_16_rgb_444
+enable_convert_16_rgb_ipq
+enable_convert_16_rgb_rot_0
+enable_convert_16_rgb_rot_180
+enable_convert_16_rgb_rot_270
+enable_convert_16_rgb_rot_90
+enable_convert_24_rgb_888
+enable_convert_24_bgr_888
+enable_convert_32_rgb_8888
+enable_convert_32_rgbx_8888
+enable_convert_32_bgr_8888
+enable_convert_32_bgrx_8888
+enable_convert_24_rgb_ezx
+enable_convert_32_rgb_ezx
+enable_convert_32_rgb_rot_0
+enable_convert_32_rgb_rot_180
+enable_convert_32_rgb_rot_270
+enable_convert_32_rgb_rot_90
+enable_convert_8_gry_1
+enable_convert_8_gry_16
+enable_convert_8_grayscale_64
+enable_valgrind
+'
       ac_precious_vars='build_alias
 host_alias
 target_alias
@@ -1153,6 +1277,8 @@ VALGRIND_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
@@ -1251,13 +1377,21 @@ do
     datarootdir=$ac_optarg ;;
 
   -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
    { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=no ;;
+    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 ;;
@@ -1270,13 +1404,21 @@ do
     dvidir=$ac_optarg ;;
 
   -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
    { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=\$ac_optarg ;;
+    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- \
@@ -1467,22 +1609,38 @@ do
     ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
    { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=\$ac_optarg ;;
+    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_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
    { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=no ;;
+    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.
@@ -1502,7 +1660,7 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
+  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
 Try \`$0 --help' for more information." >&2
    { (exit 1); exit 1; }; }
     ;;
@@ -1511,16 +1669,16 @@ Try \`$0 --help' for more information." >&2
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
     expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
    { (exit 1); exit 1; }; }
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
     : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
@@ -1529,22 +1687,38 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
+  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
    { (exit 1); exit 1; }; }
 fi
 
-# Be sure to have absolute directory names.
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $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
-  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
    { (exit 1); exit 1; }; }
 done
 
@@ -1559,7 +1733,7 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    $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
@@ -1575,10 +1749,10 @@ 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 .` ||
-  { echo "$as_me: error: Working directory cannot be determined" >&2
+  { $as_echo "$as_me: error: working directory cannot be determined" >&2
    { (exit 1); exit 1; }; }
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { echo "$as_me: error: pwd does not report name of working directory" >&2
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
    { (exit 1); exit 1; }; }
 
 
@@ -1586,12 +1760,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
   # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$0" : 'X\(//\)[^/]' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
+  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
@@ -1618,12 +1792,12 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
    { (exit 1); exit 1; }; }
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
    { (exit 1); exit 1; }; }
 	pwd)`
 # When building in place, set srcdir=.
@@ -1650,7 +1824,7 @@ 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 evas 0.9.9.062 to adapt to many kinds of systems.
+\`configure' configures evas 0.9.9.063 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1672,9 +1846,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-			  [$ac_default_prefix]
+                          [$ac_default_prefix]
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-			  [PREFIX]
+                          [PREFIX]
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1684,25 +1858,25 @@ 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/evas]
-  --htmldir=DIR          html documentation [DOCDIR]
-  --dvidir=DIR           dvi documentation [DOCDIR]
-  --pdfdir=DIR           pdf documentation [DOCDIR]
-  --psdir=DIR            ps documentation [DOCDIR]
+  --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/evas]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -1724,11 +1898,12 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of evas 0.9.9.062:";;
+     short | recursive ) echo "Configuration of evas 0.9.9.063:";;
    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
@@ -1747,6 +1922,11 @@ Optional Features:
                           [default=enabled]
   --disable-evas-cserve   disable shared cache server support.
                           [default=enabled]
+  --enable-gl-flavor-gles enable gles falvor of gl instead of standard
+  --enable-gles-variety-sgx
+                          GLES variety SGX 3D unit
+  --enable-gles-variety-s3c6410
+                          GLES variety s3c6410 3D unit
   --enable-buffer         enable Buffer rendering backend
   --enable-software-xlib  enable Software Xlib rendering backend
   --enable-xrender-x11    enable XRender X11 rendering backend
@@ -1869,6 +2049,12 @@ Optional Features:
                           disable the 32bpp RGB rotation 270 converter code
   --disable-convert-32-rgb-rot-90
                           disable the 32bpp RGB rotation 90 converter code
+  --disable-convert-8-gry-1
+                          disable the 8bpp GRY 1 converter code
+  --disable-convert-8-gry-16
+                          disable the 8bpp GRY 16 converter code
+  --disable-convert-8-grayscale-64
+                          disable 8bpp grayscale 64-palette converter code
   --enable-valgrind       enable valgrind fixes to stop false reports
 
 Optional Packages:
@@ -1946,15 +2132,17 @@ 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" || 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=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  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/ ;;
@@ -1990,7 +2178,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1999,11 +2187,11 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-evas configure 0.9.9.062
-generated by GNU Autoconf 2.61
+evas configure 0.9.9.063
+generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -2013,8 +2201,8 @@ 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 evas $as_me 0.9.9.062, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+It was created by evas $as_me 0.9.9.063, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
 
@@ -2050,7 +2238,7 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
+  $as_echo "PATH: $as_dir"
 done
 IFS=$as_save_IFS
 
@@ -2085,7 +2273,7 @@ do
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
     1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
@@ -2137,11 +2325,12 @@ _ASBOX
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:$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= ;; #(
       *) $as_unset $ac_var ;;
       esac ;;
     esac
@@ -2171,9 +2360,9 @@ _ASBOX
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      echo "$ac_var='\''$ac_val'\''"
+      $as_echo "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
@@ -2188,9 +2377,9 @@ _ASBOX
       do
 	eval ac_val=\$$ac_var
 	case $ac_val in
-	*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
 	esac
-	echo "$ac_var='\''$ac_val'\''"
+	$as_echo "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
@@ -2206,8 +2395,8 @@ _ASBOX
       echo
     fi
     test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
+      $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 &&
@@ -2249,21 +2438,24 @@ _ACEOF
 
 
 # Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  set x "$CONFIG_SITE"
+  ac_site_file1=$CONFIG_SITE
 elif test "x$prefix" != xNONE; then
-  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
 else
-  set x "$ac_default_prefix/share/config.site" \
-	"$ac_default_prefix/etc/config.site"
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
 fi
-shift
-for ac_site_file
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
 do
+  test "x$ac_site_file" = xNONE && continue
   if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+    { $as_echo "$as_me:$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"
   fi
@@ -2273,16 +2465,16 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special
   # files actually), so we avoid doing that.
   if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+    { $as_echo "$as_me:$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
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
@@ -2296,29 +2488,38 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { $as_echo "$as_me:$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)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { $as_echo "$as_me:$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
-	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-	ac_cache_corrupted=:
+	# 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:$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:$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:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:$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=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) 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
@@ -2328,10 +2529,12 @@ echo "$as_me:   current value: $ac_new_val" >&2;}
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
@@ -2366,6 +2569,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+release="ver-svn-05"
 
 
 
@@ -2386,8 +2590,8 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
@@ -2402,34 +2606,34 @@ 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 ||
-  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
    { (exit 1); exit 1; }; }
 
-{ echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
 if test "${ac_cv_build+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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 &&
-  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
    { (exit 1); exit 1; }; }
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-echo "$as_me: error: invalid value of canonical build" >&2;}
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
    { (exit 1); exit 1; }; };;
 esac
 build=$ac_cv_build
@@ -2446,27 +2650,27 @@ IFS=$ac_save_IFS
 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 
-{ echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
 if test "${ac_cv_host+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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` ||
-    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-echo "$as_me: error: invalid value of canonical host" >&2;}
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
    { (exit 1); exit 1; }; };;
 esac
 host=$ac_cv_host
@@ -2491,10 +2695,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2507,7 +2711,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2518,11 +2722,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2531,10 +2735,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -2547,7 +2751,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2558,11 +2762,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -2570,12 +2774,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -2588,10 +2788,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2604,7 +2804,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2615,11 +2815,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2628,10 +2828,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2649,7 +2849,7 @@ do
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2672,11 +2872,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2687,10 +2887,10 @@ if test -z "$CC"; then
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2703,7 +2903,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2714,11 +2914,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2731,10 +2931,10 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -2747,7 +2947,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2758,11 +2958,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2774,12 +2974,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -2789,44 +2985,50 @@ fi
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
 See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
 { (ac_try="$ac_compiler --version >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler --version >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -v >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -v >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -V >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -V >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 
 cat >conftest.$ac_ext <<_ACEOF
@@ -2845,27 +3047,22 @@ main ()
 }
 _ACEOF
 ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+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.
-{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort.  b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions.  Remove them first so a
-# subsequent execution test works.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&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 | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     * ) ac_rmfiles="$ac_rmfiles $ac_file";;
   esac
 done
@@ -2876,10 +3073,11 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; 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'
@@ -2890,7 +3088,7 @@ 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 | *.o | *.obj )
+    *.$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
@@ -2917,25 +3115,27 @@ else
   ac_file=''
 fi
 
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 if test -z "$ac_file"; then
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
 See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
+$as_echo "$as_me: error: C compiler cannot create executables
 See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
+   { (exit 77); exit 77; }; }; }
 fi
 
 ac_exeext=$ac_cv_exeext
 
 # Check that the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
 # If not cross compiling, check that we can run a simple program.
 if test "$cross_compiling" != yes; then
@@ -2944,49 +3144,53 @@ if test "$cross_compiling" != yes; then
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
     cross_compiling=no
   else
     if test "$cross_compiling" = maybe; then
 	cross_compiling=yes
     else
-	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
+$as_echo "$as_me: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
     fi
   fi
 fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
 # Check that the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
 
-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
@@ -2995,31 +3199,33 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 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 | *.o | *.obj ) ;;
+    *.$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
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 fi
 
 rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
 if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -3042,40 +3248,43 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; 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 ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
     *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
        break;;
   esac
 done
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 fi
 
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -3101,20 +3310,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_compiler_gnu=no
@@ -3124,15 +3334,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$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
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
 if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
@@ -3159,20 +3373,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	CFLAGS=""
@@ -3197,20 +3412,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_c_werror_flag=$ac_save_c_werror_flag
@@ -3236,20 +3452,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -3264,8 +3481,8 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:$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
@@ -3281,10 +3498,10 @@ else
     CFLAGS=
   fi
 fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
 if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
@@ -3355,20 +3572,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_c89=$ac_arg
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -3384,15 +3602,15 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
   xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 
 
@@ -3403,10 +3621,10 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
 if test "${ac_cv_search_strerror+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
 cat >conftest.$ac_ext <<_ACEOF
@@ -3444,26 +3662,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_search_strerror=$ac_res
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext
   if test "${ac_cv_search_strerror+set}" = set; then
@@ -3478,8 +3700,8 @@ fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
-echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
 ac_res=$ac_cv_search_strerror
 if test "$ac_res" != no; then
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
@@ -3502,11 +3724,12 @@ am__api_version='1.10'
 # 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.
-{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
 if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3535,17 +3758,29 @@ case $as_dir/ in
 	    # program-specific install script used by HP pwplus--don't use.
 	    :
 	  else
-	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	    break 3
+	    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
@@ -3558,8 +3793,8 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
+{ $as_echo "$as_me:$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.
@@ -3569,8 +3804,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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
@@ -3593,9 +3828,9 @@ if (
       # 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".
-      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
 alias in your environment" >&5
-echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
 alias in your environment" >&2;}
    { (exit 1); exit 1; }; }
    fi
@@ -3606,26 +3841,23 @@ then
    # Ok.
    :
 else
-   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
 Check your system clock" >&5
-echo "$as_me: error: newly created file is older than distributed files!
+$as_echo "$as_me: error: newly created file is older than distributed files!
 Check your system clock" >&2;}
    { (exit 1); exit 1; }; }
 fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+{ $as_echo "$as_me:$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 $.  echo might interpret backslashes.
+# Double any \ or $.
 # By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm -f conftest.sed
+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`
@@ -3636,15 +3868,15 @@ if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
-{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_path_mkdir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
@@ -3679,8 +3911,8 @@ fi
     MKDIR_P="$ac_install_sh -d"
   fi
 fi
-{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-echo "${ECHO_T}$MKDIR_P" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
 
 mkdir_p="$MKDIR_P"
 case $mkdir_p in
@@ -3692,10 +3924,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_AWK+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
@@ -3708,7 +3940,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3719,22 +3951,23 @@ fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
   test -n "$AWK" && break
 done
 
-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+{ $as_echo "$as_me:$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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
 SHELL = /bin/sh
@@ -3751,12 +3984,12 @@ esac
 rm -f conftest.make
 fi
 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
   SET_MAKE=
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
@@ -3781,8 +4014,8 @@ am__doit:
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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
@@ -3809,8 +4042,8 @@ if test "$am__include" = "#"; then
 fi
 
 
-{ echo "$as_me:$LINENO: result: $_am_result" >&5
-echo "${ECHO_T}$_am_result" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
 # Check whether --enable-dependency-tracking was given.
@@ -3837,8 +4070,8 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
   am__isrc=' -I$(srcdir)'
   # test to see if srcdir already configured
   if test -f $srcdir/config.status; then
-    { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
    { (exit 1); exit 1; }; }
   fi
 fi
@@ -3855,7 +4088,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='evas'
- VERSION='0.9.9.062'
+ VERSION='0.9.9.063'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3893,10 +4126,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
@@ -3909,7 +4142,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3920,11 +4153,11 @@ fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -3933,10 +4166,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -3949,7 +4182,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3960,11 +4193,11 @@ fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_STRIP" = x; then
@@ -3972,12 +4205,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -4002,10 +4231,10 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 
 depcc="$CC"   am_compiler_list=
 
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -4093,8 +4322,8 @@ else
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+{ $as_echo "$as_me:$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
@@ -4112,6 +4341,7 @@ fi
 ac_config_headers="$ac_config_headers config.h"
 
 
+
 enable_win32_dll=yes
 
 case $host in
@@ -4119,10 +4349,10 @@ case $host in
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AS"; then
   ac_cv_prog_AS="$AS" # Let the user override the test.
@@ -4135,7 +4365,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4146,11 +4376,11 @@ fi
 fi
 AS=$ac_cv_prog_AS
 if test -n "$AS"; then
-  { echo "$as_me:$LINENO: result: $AS" >&5
-echo "${ECHO_T}$AS" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $AS" >&5
+$as_echo "$AS" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -4159,10 +4389,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -4175,7 +4405,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4186,11 +4416,11 @@ fi
 fi
 ac_ct_AS=$ac_cv_prog_ac_ct_AS
 if test -n "$ac_ct_AS"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
-echo "${ECHO_T}$ac_ct_AS" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_AS" = x; then
@@ -4198,12 +4428,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -4215,10 +4441,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_DLLTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$DLLTOOL"; then
   ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
@@ -4231,7 +4457,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4242,11 +4468,11 @@ fi
 fi
 DLLTOOL=$ac_cv_prog_DLLTOOL
 if test -n "$DLLTOOL"; then
-  { echo "$as_me:$LINENO: result: $DLLTOOL" >&5
-echo "${ECHO_T}$DLLTOOL" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -4255,10 +4481,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -4271,7 +4497,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4282,11 +4508,11 @@ fi
 fi
 ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
 if test -n "$ac_ct_DLLTOOL"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
-echo "${ECHO_T}$ac_ct_DLLTOOL" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_DLLTOOL" = x; then
@@ -4294,12 +4520,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -4311,10 +4533,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_OBJDUMP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$OBJDUMP"; then
   ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
@@ -4327,7 +4549,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4338,11 +4560,11 @@ fi
 fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
-  { echo "$as_me:$LINENO: result: $OBJDUMP" >&5
-echo "${ECHO_T}$OBJDUMP" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -4351,10 +4573,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -4367,7 +4589,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4378,11 +4600,11 @@ fi
 fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
-echo "${ECHO_T}$ac_ct_OBJDUMP" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_OBJDUMP" = x; then
@@ -4390,12 +4612,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -4429,14 +4647,14 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 case `pwd` in
   *\ * | *\	*)
-    { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+    { $as_echo "$as_me:$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.2.4'
-macro_revision='1.2976'
+macro_version='2.2.6'
+macro_revision='1.3012'
 
 
 
@@ -4452,48 +4670,43 @@ macro_revision='1.2976'
 
 ltmain="$ac_aux_dir/ltmain.sh"
 
-{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_path_SED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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" | sed 99q >conftest.sed
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
      $as_unset ac_script || ac_script=
-     # Extract the first word of "sed gsed" to use in msg output
-if test -z "$SED"; then
-set dummy sed gsed; ac_prog_name=$2
-if test "${ac_cv_path_SED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+     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
+  # 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.
+    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
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $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"
-    echo '' >> "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
     ac_count=`expr $ac_count + 1`
@@ -4508,31 +4721,23 @@ case `"$ac_path_SED" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_SED_found && break 3
+      $ac_path_SED_found && break 3
+    done
   done
 done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-SED="$ac_cv_path_SED"
-if test -z "$SED"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;}
+  if test -z "$ac_cv_path_SED"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
    { (exit 1); exit 1; }; }
-fi
-
+  fi
 else
   ac_cv_path_SED=$SED
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
-echo "${ECHO_T}$ac_cv_path_SED" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
 
@@ -4549,42 +4754,37 @@ Xsed="$SED -e 1s/^X//"
 
 
 
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
+{ $as_echo "$as_me:$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 test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
+  # 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.
+    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
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $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"
-    echo 'GREP' >> "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
     ac_count=`expr $ac_count + 1`
@@ -4599,74 +4799,60 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_GREP_found && break 3
+      $ac_path_GREP_found && break 3
+    done
   done
 done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+  if test -z "$ac_cv_path_GREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
    { (exit 1); exit 1; }; }
-fi
-
+  fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
-
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
 if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
-     # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-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
+  # 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.
+    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
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $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"
-    echo 'EGREP' >> "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
     ac_count=`expr $ac_count + 1`
@@ -4681,75 +4867,61 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_found && break 3
+    done
   done
 done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+  if test -z "$ac_cv_path_EGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
    { (exit 1); exit 1; }; }
-fi
-
+  fi
 else
   ac_cv_path_EGREP=$EGREP
 fi
 
-
    fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
-{ echo "$as_me:$LINENO: checking for fgrep" >&5
-echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
 if test "${ac_cv_path_FGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
-     # Extract the first word of "fgrep" to use in msg output
-if test -z "$FGREP"; then
-set dummy fgrep; ac_prog_name=$2
-if test "${ac_cv_path_FGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-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
+  # 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.
+    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
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $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"
-    echo 'FGREP' >> "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
     ac_count=`expr $ac_count + 1`
@@ -4764,33 +4936,24 @@ case `"$ac_path_FGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_FGREP_found && break 3
+      $ac_path_FGREP_found && break 3
+    done
   done
 done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-FGREP="$ac_cv_path_FGREP"
-if test -z "$FGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+  if test -z "$ac_cv_path_FGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
    { (exit 1); exit 1; }; }
-fi
-
+  fi
 else
   ac_cv_path_FGREP=$FGREP
 fi
 
-
    fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
-echo "${ECHO_T}$ac_cv_path_FGREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
 
@@ -4824,8 +4987,8 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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
@@ -4854,14 +5017,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  { echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
 else
-  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
 fi
 if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
@@ -4891,19 +5054,19 @@ fi
 
 LD="$lt_cv_path_LD"
 if test -n "$LD"; then
-  { echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
    { (exit 1); exit 1; }; }
-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
 if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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 </dev/null` in
@@ -4915,8 +5078,8 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
@@ -4927,10 +5090,10 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
-echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${lt_cv_path_NM+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
   # Let the user override the test.
@@ -4976,8 +5139,8 @@ else
   : ${lt_cv_path_NM=no}
 fi
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
-echo "${ECHO_T}$lt_cv_path_NM" >&6; }
+{ $as_echo "$as_me:$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
@@ -4987,10 +5150,10 @@ else
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_DUMPBIN+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$DUMPBIN"; then
   ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
@@ -5003,7 +5166,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5014,11 +5177,11 @@ fi
 fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
-  { echo "$as_me:$LINENO: result: $DUMPBIN" >&5
-echo "${ECHO_T}$DUMPBIN" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5031,10 +5194,10 @@ if test -z "$DUMPBIN"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -5047,7 +5210,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5058,11 +5221,11 @@ fi
 fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
-echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5074,12 +5237,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -5098,45 +5257,45 @@ test -z "$NM" && NM=nm
 
 
 
-{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
-echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
 if test "${lt_cv_nm_interface+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5108: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5267: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5111: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5270: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5114: output\"" >&5)
+  (eval echo "\"\$as_me:5273: 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
-{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
-echo "${ECHO_T}$lt_cv_nm_interface" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
 
-{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
 fi
 
 # find the maximum length of command line arguments
-{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
 if test "${lt_cv_sys_max_cmd_len+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
     i=0
   teststring="ABCD"
@@ -5253,11 +5412,11 @@ else
 fi
 
 if test -n $lt_cv_sys_max_cmd_len ; then
-  { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  { echo "$as_me:$LINENO: result: none" >&5
-echo "${ECHO_T}none" >&6; }
+  { $as_echo "$as_me:$LINENO: result: none" >&5
+$as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
@@ -5270,8 +5429,8 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 
-{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
-echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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"
@@ -5280,18 +5439,18 @@ xsi_shell=no
     && eval 'test $(( 1 + 1 )) -eq 2 \
     && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
   && xsi_shell=yes
-{ echo "$as_me:$LINENO: result: $xsi_shell" >&5
-echo "${ECHO_T}$xsi_shell" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
 
 
-{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
-echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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
-{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5
-echo "${ECHO_T}$lt_shell_append" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
 
 
 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
@@ -5325,15 +5484,15 @@ esac
 
 
 
-{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
 if test "${lt_cv_ld_reload_flag+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_reload_flag='-r'
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+{ $as_echo "$as_me:$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
 "" | " "*) ;;
@@ -5359,10 +5518,10 @@ esac
 
 
 
-{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
-echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
 if test "${lt_cv_deplibs_check_method+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_file_magic_cmd='$MAGIC_CMD'
 lt_cv_file_magic_test_file=
@@ -5549,8 +5708,8 @@ tpf*)
 esac
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
 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
@@ -5569,10 +5728,10 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
@@ -5585,7 +5744,7 @@ do
   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}ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5596,11 +5755,11 @@ fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  { echo "$as_me:$LINENO: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $AR" >&5
+$as_echo "$AR" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5609,10 +5768,10 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -5625,7 +5784,7 @@ do
   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="ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5636,11 +5795,11 @@ fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
-echo "${ECHO_T}$ac_ct_AR" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_AR" = x; then
@@ -5648,12 +5807,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -5678,10 +5833,10 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
@@ -5694,7 +5849,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5705,11 +5860,11 @@ fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5718,10 +5873,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -5734,7 +5889,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5745,11 +5900,11 @@ fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_STRIP" = x; then
@@ -5757,12 +5912,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -5781,10 +5932,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -5797,7 +5948,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5808,11 +5959,11 @@ fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  { echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5821,10 +5972,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -5837,7 +5988,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5848,11 +5999,11 @@ fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_RANLIB" = x; then
@@ -5860,12 +6011,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -5942,10 +6089,10 @@ compiler=$CC
 
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
 
 # These are sane defaults that work on at least a few old systems.
@@ -6063,14 +6210,14 @@ _LT_EOF
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
     if { (eval echo "$as_me:$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=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
@@ -6127,7 +6274,7 @@ _LT_EOF
 	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && test -s conftest${ac_exeext}; then
 	    pipe_works=yes
 	  fi
@@ -6162,11 +6309,11 @@ 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
-  { echo "$as_me:$LINENO: result: failed" >&5
-echo "${ECHO_T}failed" >&6; }
+  { $as_echo "$as_me:$LINENO: result: failed" >&5
+$as_echo "failed" >&6; }
 else
-  { echo "$as_me:$LINENO: result: ok" >&5
-echo "${ECHO_T}ok" >&6; }
+  { $as_echo "$as_me:$LINENO: result: ok" >&5
+$as_echo "ok" >&6; }
 fi
 
 
@@ -6206,7 +6353,7 @@ ia64-*-hpux*)
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
@@ -6221,11 +6368,11 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6224 "configure"' > conftest.$ac_ext
+  echo '#line 6371 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
     if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
@@ -6263,7 +6410,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
     case `/usr/bin/file conftest.o` in
       *32-bit*)
@@ -6313,10 +6460,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
-  { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
 if test "${lt_cv_cc_needs_belf+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -6345,26 +6492,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   lt_cv_cc_needs_belf=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	lt_cv_cc_needs_belf=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
      ac_ext=c
@@ -6374,8 +6525,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+{ $as_echo "$as_me:$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"
@@ -6387,7 +6538,7 @@ sparc*-*solaris*)
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
@@ -6414,10 +6565,10 @@ need_locks="$enable_libtool_lock"
     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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$DSYMUTIL"; then
   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
@@ -6430,7 +6581,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6441,11 +6592,11 @@ fi
 fi
 DSYMUTIL=$ac_cv_prog_DSYMUTIL
 if test -n "$DSYMUTIL"; then
-  { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
-echo "${ECHO_T}$DSYMUTIL" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -6454,10 +6605,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -6470,7 +6621,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6481,11 +6632,11 @@ fi
 fi
 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
 if test -n "$ac_ct_DSYMUTIL"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
-echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_DSYMUTIL" = x; then
@@ -6493,12 +6644,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -6510,10 +6657,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_NMEDIT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$NMEDIT"; then
   ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
@@ -6526,7 +6673,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6537,11 +6684,11 @@ fi
 fi
 NMEDIT=$ac_cv_prog_NMEDIT
 if test -n "$NMEDIT"; then
-  { echo "$as_me:$LINENO: result: $NMEDIT" >&5
-echo "${ECHO_T}$NMEDIT" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -6550,10 +6697,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -6566,7 +6713,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6577,11 +6724,11 @@ fi
 fi
 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
 if test -n "$ac_ct_NMEDIT"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
-echo "${ECHO_T}$ac_ct_NMEDIT" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_NMEDIT" = x; then
@@ -6589,12 +6736,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -6606,10 +6749,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_LIPO+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$LIPO"; then
   ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
@@ -6622,7 +6765,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6633,11 +6776,11 @@ fi
 fi
 LIPO=$ac_cv_prog_LIPO
 if test -n "$LIPO"; then
-  { echo "$as_me:$LINENO: result: $LIPO" >&5
-echo "${ECHO_T}$LIPO" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -6646,10 +6789,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -6662,7 +6805,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6673,11 +6816,11 @@ fi
 fi
 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
 if test -n "$ac_ct_LIPO"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
-echo "${ECHO_T}$ac_ct_LIPO" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_LIPO" = x; then
@@ -6685,12 +6828,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -6702,10 +6841,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_OTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$OTOOL"; then
   ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
@@ -6718,7 +6857,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6729,11 +6868,11 @@ fi
 fi
 OTOOL=$ac_cv_prog_OTOOL
 if test -n "$OTOOL"; then
-  { echo "$as_me:$LINENO: result: $OTOOL" >&5
-echo "${ECHO_T}$OTOOL" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -6742,10 +6881,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -6758,7 +6897,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6769,11 +6908,11 @@ fi
 fi
 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
 if test -n "$ac_ct_OTOOL"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
-echo "${ECHO_T}$ac_ct_OTOOL" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_OTOOL" = x; then
@@ -6781,12 +6920,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -6798,10 +6933,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_OTOOL64+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$OTOOL64"; then
   ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
@@ -6814,7 +6949,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6825,11 +6960,11 @@ fi
 fi
 OTOOL64=$ac_cv_prog_OTOOL64
 if test -n "$OTOOL64"; then
-  { echo "$as_me:$LINENO: result: $OTOOL64" >&5
-echo "${ECHO_T}$OTOOL64" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -6838,10 +6973,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -6854,7 +6989,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6865,11 +7000,11 @@ fi
 fi
 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
 if test -n "$ac_ct_OTOOL64"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
-echo "${ECHO_T}$ac_ct_OTOOL64" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_OTOOL64" = x; then
@@ -6877,12 +7012,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -6917,10 +7048,10 @@ fi
 
 
 
-    { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
-echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
 if test "${lt_cv_apple_cc_single_mod+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_apple_cc_single_mod=no
       if test -z "${LT_MULTI_MODULE}"; then
@@ -6944,12 +7075,12 @@ else
 	rm -f conftest.*
       fi
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
-echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; }
-    { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
-echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_exported_symbols_list=no
       save_LDFLAGS=$LDFLAGS
@@ -6976,33 +7107,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   lt_cv_ld_exported_symbols_list=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	lt_cv_ld_exported_symbols_list=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 	LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
-echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
     case $host_os in
     rhapsody* | darwin1.[012])
       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
@@ -7043,15 +7178,15 @@ 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
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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"
@@ -7083,20 +7218,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Broken: fails on valid input.
@@ -7120,13 +7256,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
@@ -7134,7 +7271,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Passes both tests.
@@ -7159,8 +7296,8 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
@@ -7188,20 +7325,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Broken: fails on valid input.
@@ -7225,13 +7363,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
@@ -7239,7 +7378,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Passes both tests.
@@ -7255,11 +7394,13 @@ rm -f conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then
   :
 else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
 See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 fi
 
 ac_ext=c
@@ -7269,10 +7410,10 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
 if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -7299,20 +7440,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_header_stdc=no
@@ -7404,37 +7546,40 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  $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
 
 ( exit $ac_status )
 ac_cv_header_stdc=no
 fi
+rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
 fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -7456,11 +7601,11 @@ fi
 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -7478,20 +7623,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   eval "$as_ac_Header=yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	eval "$as_ac_Header=no"
@@ -7499,12 +7645,15 @@ fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
@@ -7515,11 +7664,11 @@ done
 
 for ac_header in dlfcn.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -7537,20 +7686,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   eval "$as_ac_Header=yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	eval "$as_ac_Header=no"
@@ -7558,12 +7708,15 @@ fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
@@ -7741,10 +7894,10 @@ if test -n "${ZSH_VERSION+set}" ; then
    setopt NO_GLOB_SUBST
 fi
 
-{ echo "$as_me:$LINENO: checking for objdir" >&5
-echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
 if test "${lt_cv_objdir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
@@ -7756,8 +7909,8 @@ else
 fi
 rmdir .libs 2>/dev/null
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
-echo "${ECHO_T}$lt_cv_objdir" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
 
@@ -7849,10 +8002,10 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file
 case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
@@ -7902,11 +8055,11 @@ fi
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -7915,10 +8068,10 @@ fi
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
-    { echo "$as_me:$LINENO: checking for file" >&5
-echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
@@ -7968,11 +8121,11 @@ fi
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -8052,10 +8205,10 @@ lt_prog_compiler_no_builtin_flag=
 if test "$GCC" = yes; then
   lt_prog_compiler_no_builtin_flag=' -fno-builtin'
 
-  { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_rtti_exceptions=no
    ac_outfile=conftest.$ac_objext
@@ -8070,11 +8223,11 @@ else
    -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:8073: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8226: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8077: \$? = $ac_status" >&5
+   echo "$as_me:8230: \$? = $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.
@@ -8087,8 +8240,8 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+{ $as_echo "$as_me:$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"
@@ -8107,8 +8260,8 @@ fi
 lt_prog_compiler_pic=
 lt_prog_compiler_static=
 
-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   if test "$GCC" = yes; then
     lt_prog_compiler_wl='-Wl,'
@@ -8364,8 +8517,8 @@ case $host_os in
     lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
     ;;
 esac
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
 
 
 
@@ -8376,10 +8529,10 @@ echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic"; then
-  { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_pic_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
@@ -8394,11 +8547,11 @@ else
    -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:8397: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8550: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8401: \$? = $ac_status" >&5
+   echo "$as_me:8554: \$? = $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.
@@ -8411,8 +8564,8 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; }
+{ $as_echo "$as_me:$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
@@ -8435,10 +8588,10 @@ fi
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_static_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works=no
    save_LDFLAGS="$LDFLAGS"
@@ -8463,8 +8616,8 @@ else
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; }
+{ $as_echo "$as_me:$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
     :
@@ -8478,10 +8631,10 @@ fi
 
 
 
-  { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
    $RM -r conftest 2>/dev/null
@@ -8499,11 +8652,11 @@ else
    -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:8502: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8655: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8506: \$? = $ac_status" >&5
+   echo "$as_me:8659: \$? = $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
@@ -8525,18 +8678,18 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
 
 
-  { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
    $RM -r conftest 2>/dev/null
@@ -8554,11 +8707,11 @@ else
    -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:8557: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8710: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8561: \$? = $ac_status" >&5
+   echo "$as_me:8714: \$? = $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
@@ -8580,8 +8733,8 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
@@ -8589,19 +8742,19 @@ echo "${ECHO_T}$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
-  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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
-  { echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    { $as_echo "$as_me:$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
@@ -8613,8 +8766,8 @@ fi
 
 
 
-  { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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=
@@ -9073,18 +9226,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -9099,12 +9255,13 @@ if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -9140,18 +9297,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -9166,12 +9326,13 @@ if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -9390,27 +9551,31 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
 
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
         LDFLAGS="$save_LDFLAGS"
@@ -9668,8 +9833,8 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     fi
   fi
 
-{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-echo "${ECHO_T}$ld_shlibs" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
 test "$ld_shlibs" = no && can_build_shared=no
 
 with_gnu_ld=$with_gnu_ld
@@ -9705,15 +9870,15 @@ x|xyes)
       # 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.
-      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       $RM conftest*
       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } 2>conftest.err; then
         soname=conftest
         lib=conftest
@@ -9731,7 +9896,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
         if { (eval echo "$as_me:$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=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
         then
 	  archive_cmds_need_lc=no
@@ -9743,8 +9908,8 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
         cat conftest.err 1>&5
       fi
       $RM conftest*
-      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
-echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
+      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+$as_echo "$archive_cmds_need_lc" >&6; }
       ;;
     esac
   fi
@@ -9907,8 +10072,8 @@ esac
 
 
 
-  { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 if test "$GCC" = yes; then
   case $host_os in
@@ -10350,29 +10515,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
   shlibpath_overrides_runpath=yes
 fi
 
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
   LDFLAGS=$save_LDFLAGS
@@ -10598,8 +10767,8 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6; }
+{ $as_echo "$as_me:$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"
@@ -10700,8 +10869,8 @@ fi
 
 
 
-  { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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" ||
@@ -10725,8 +10894,8 @@ else
   # directories.
   hardcode_action=unsupported
 fi
-{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
-echo "${ECHO_T}$hardcode_action" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
 
 if test "$hardcode_action" = relink ||
    test "$inherit_rpath" = yes; then
@@ -10770,10 +10939,10 @@ else
 
   darwin*)
   # if libdl is installed we need to link against it
-    { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
 if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
@@ -10805,33 +10974,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dl_dlopen=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
-if test $ac_cv_lib_dl_dlopen = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
 
@@ -10844,10 +11017,10 @@ fi
     ;;
 
   *)
-    { echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
+$as_echo_n "checking for shl_load... " >&6; }
 if test "${ac_cv_func_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -10900,38 +11073,42 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_shl_load=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_shl_load=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
-if test $ac_cv_func_shl_load = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+$as_echo "$ac_cv_func_shl_load" >&6; }
+if test "x$ac_cv_func_shl_load" = x""yes; then
   lt_cv_dlopen="shl_load"
 else
-  { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
 if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
@@ -10963,39 +11140,43 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dld_shl_load=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dld_shl_load=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
-if test $ac_cv_lib_dld_shl_load = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
 else
-  { echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
+$as_echo_n "checking for dlopen... " >&6; }
 if test "${ac_cv_func_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -11048,38 +11229,42 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_dlopen=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
-if test $ac_cv_func_dlopen = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+$as_echo "$ac_cv_func_dlopen" >&6; }
+if test "x$ac_cv_func_dlopen" = x""yes; then
   lt_cv_dlopen="dlopen"
 else
-  { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
 if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
@@ -11111,39 +11296,43 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dl_dlopen=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
-if test $ac_cv_lib_dl_dlopen = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-  { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
 if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
@@ -11175,39 +11364,43 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_svld_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_svld_dlopen=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
-if test $ac_cv_lib_svld_dlopen = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
 else
-  { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
 if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
@@ -11239,33 +11432,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dld_dld_link=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dld_dld_link=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
-if test $ac_cv_lib_dld_dld_link = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
@@ -11304,10 +11501,10 @@ fi
     save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
 if test "${lt_cv_dlopen_self+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   	  if test "$cross_compiling" = yes; then :
   lt_cv_dlopen_self=cross
@@ -11315,7 +11512,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11318 "configure"
+#line 11515 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11381,7 +11578,7 @@ _LT_EOF
   if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
@@ -11399,15 +11596,15 @@ rm -fr conftest*
 
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
+{ $as_echo "$as_me:$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\"
-      { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$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 test "${lt_cv_dlopen_self_static+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   	  if test "$cross_compiling" = yes; then :
   lt_cv_dlopen_self_static=cross
@@ -11415,7 +11612,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11418 "configure"
+#line 11615 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11481,7 +11678,7 @@ _LT_EOF
   if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
@@ -11499,8 +11696,8 @@ rm -fr conftest*
 
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
     fi
 
     CPPFLAGS="$save_CPPFLAGS"
@@ -11538,13 +11735,13 @@ fi
 
 striplib=
 old_striplib=
-{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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"
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$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
@@ -11552,16 +11749,16 @@ else
     if test -n "$STRIP" ; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
-      { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+      { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
     else
-      { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+      { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
     fi
     ;;
   *)
-    { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+    { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
     ;;
   esac
 fi
@@ -11578,13 +11775,13 @@ fi
 
 
   # Report which library types will actually be built
-  { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
-  { echo "$as_me:$LINENO: result: $can_build_shared" >&5
-echo "${ECHO_T}$can_build_shared" >&6; }
+  { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
 
-  { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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
@@ -11604,15 +11801,15 @@ echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
     fi
     ;;
   esac
-  { echo "$as_me:$LINENO: result: $enable_shared" >&5
-echo "${ECHO_T}$enable_shared" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
 
-  { echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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
-  { echo "$as_me:$LINENO: result: $enable_static" >&5
-echo "${ECHO_T}$enable_static" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
 
 
 
@@ -11657,7 +11854,6 @@ version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
 
 ### Needed information
 
-release="ver-svn-03"
 case "$host_os" in
    mingw32ce* | cegcc*)
       MODULE_ARCH="$host_os-$host_cpu"
@@ -11744,6 +11940,8 @@ case "$host_os" in
       ;;
 esac
 
+requirement_evas=""
+
 
 ### Additional options to configure
 
@@ -11788,10 +11986,10 @@ if test -z "$CXX"; then
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CXX"; then
   ac_cv_prog_CXX="$CXX" # Let the user override the test.
@@ -11804,7 +12002,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -11815,11 +12013,11 @@ fi
 fi
 CXX=$ac_cv_prog_CXX
 if test -n "$CXX"; then
-  { echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -11832,10 +12030,10 @@ if test -z "$CXX"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -11848,7 +12046,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -11859,11 +12057,11 @@ fi
 fi
 ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
 if test -n "$ac_ct_CXX"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -11875,12 +12073,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -11890,43 +12084,47 @@ fi
   fi
 fi
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
 { (ac_try="$ac_compiler --version >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler --version >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -v >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -v >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -V >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -V >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -11952,20 +12150,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_compiler_gnu=no
@@ -11975,15 +12174,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
-GXX=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$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
-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
 if test "${ac_cv_prog_cxx_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_save_cxx_werror_flag=$ac_cxx_werror_flag
    ac_cxx_werror_flag=yes
@@ -12010,20 +12213,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cxx_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	CXXFLAGS=""
@@ -12048,20 +12252,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
@@ -12087,20 +12292,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cxx_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -12115,8 +12321,8 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+{ $as_echo "$as_me:$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
@@ -12140,10 +12346,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 depcc="$CXX"  am_compiler_list=
 
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -12231,8 +12437,8 @@ else
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
+{ $as_echo "$as_me:$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
@@ -12261,10 +12467,10 @@ if test -z "$CXX"; then
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CXX"; then
   ac_cv_prog_CXX="$CXX" # Let the user override the test.
@@ -12277,7 +12483,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -12288,11 +12494,11 @@ fi
 fi
 CXX=$ac_cv_prog_CXX
 if test -n "$CXX"; then
-  { echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -12305,10 +12511,10 @@ if test -z "$CXX"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -12321,7 +12527,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -12332,11 +12538,11 @@ fi
 fi
 ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
 if test -n "$ac_ct_CXX"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -12348,12 +12554,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -12363,43 +12565,47 @@ fi
   fi
 fi
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
 { (ac_try="$ac_compiler --version >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler --version >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -v >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -v >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -V >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -V >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -12425,20 +12631,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_compiler_gnu=no
@@ -12448,15 +12655,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
-GXX=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$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
-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
 if test "${ac_cv_prog_cxx_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_save_cxx_werror_flag=$ac_cxx_werror_flag
    ac_cxx_werror_flag=yes
@@ -12483,20 +12694,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cxx_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	CXXFLAGS=""
@@ -12521,20 +12733,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
@@ -12560,20 +12773,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cxx_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -12588,8 +12802,8 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+{ $as_echo "$as_me:$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
@@ -12613,10 +12827,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 depcc="$CXX"  am_compiler_list=
 
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -12704,8 +12918,8 @@ else
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
+{ $as_echo "$as_me:$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
@@ -12727,11 +12941,11 @@ 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
-{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_prog_CXXCPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
       # Double quotes because CXXCPP needs to be expanded
     for CXXCPP in "$CXX -E" "/lib/cpp"
@@ -12763,20 +12977,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Broken: fails on valid input.
@@ -12800,13 +13015,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
@@ -12814,7 +13030,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Passes both tests.
@@ -12839,8 +13055,8 @@ fi
 else
   ac_cv_prog_CXXCPP=$CXXCPP
 fi
-{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
-echo "${ECHO_T}$CXXCPP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
 ac_preproc_ok=false
 for ac_cxx_preproc_warn_flag in '' yes
 do
@@ -12868,20 +13084,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Broken: fails on valid input.
@@ -12905,13 +13122,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
@@ -12919,7 +13137,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   # Passes both tests.
@@ -12935,7 +13153,9 @@ rm -f conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then
   :
 else
-  _lt_caught_CXX_error=yes
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+_lt_caught_CXX_error=yes; }
 fi
 
 ac_ext=c
@@ -13085,8 +13305,8 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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
@@ -13115,14 +13335,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  { echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
 else
-  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
 fi
 if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
@@ -13152,19 +13372,19 @@ fi
 
 LD="$lt_cv_path_LD"
 if test -n "$LD"; then
-  { echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
    { (exit 1); exit 1; }; }
-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
 if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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 </dev/null` in
@@ -13176,8 +13396,8 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
@@ -13231,8 +13451,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
     fi
 
     # PORTME: fill in a description of your system's C++ link characteristics
-    { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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*)
@@ -13352,18 +13572,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -13378,12 +13601,13 @@ if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -13420,18 +13644,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -13446,12 +13673,13 @@ if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -14193,8 +14421,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ;;
     esac
 
-    { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+    { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
     test "$ld_shlibs_CXX" = no && can_build_shared=no
 
     GCC_CXX="$GXX"
@@ -14224,7 +14452,7 @@ _LT_EOF
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   # Parse the compiler output and extract the necessary
   # objects, libraries and library flags.
@@ -14406,8 +14634,8 @@ fi
 lt_prog_compiler_pic_CXX=
 lt_prog_compiler_static_CXX=
 
-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   # C++ specific cases for pic, static, wl, etc.
   if test "$GXX" = yes; then
@@ -14715,8 +14943,8 @@ case $host_os in
     lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
     ;;
 esac
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
 
 
 
@@ -14724,10 +14952,10 @@ echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic_CXX"; then
-  { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works_CXX=no
    ac_outfile=conftest.$ac_objext
@@ -14742,11 +14970,11 @@ else
    -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:14745: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14973: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14749: \$? = $ac_status" >&5
+   echo "$as_me:14977: \$? = $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.
@@ -14759,8 +14987,8 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+{ $as_echo "$as_me:$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
@@ -14780,10 +15008,10 @@ 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\"
-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works_CXX=no
    save_LDFLAGS="$LDFLAGS"
@@ -14808,8 +15036,8 @@ else
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; }
+{ $as_echo "$as_me:$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
     :
@@ -14820,10 +15048,10 @@ fi
 
 
 
-    { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_CXX=no
    $RM -r conftest 2>/dev/null
@@ -14841,11 +15069,11 @@ else
    -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:14844: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15072: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14848: \$? = $ac_status" >&5
+   echo "$as_me:15076: \$? = $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
@@ -14867,15 +15095,15 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
 
-    { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_CXX=no
    $RM -r conftest 2>/dev/null
@@ -14893,11 +15121,11 @@ else
    -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:14896: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15124: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14900: \$? = $ac_status" >&5
+   echo "$as_me:15128: \$? = $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
@@ -14919,8 +15147,8 @@ else
    $RM conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
 
@@ -14928,19 +15156,19 @@ echo "${ECHO_T}$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
-  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$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
-  { echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    { $as_echo "$as_me:$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
@@ -14949,8 +15177,8 @@ fi
 
 
 
-    { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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'
   case $host_os in
@@ -14978,8 +15206,8 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
   esac
   exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
 
-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+{ $as_echo "$as_me:$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
@@ -15006,15 +15234,15 @@ x|xyes)
       # 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.
-      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       $RM conftest*
       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } 2>conftest.err; then
         soname=conftest
         lib=conftest
@@ -15032,7 +15260,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
         if { (eval echo "$as_me:$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=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
         then
 	  archive_cmds_need_lc_CXX=no
@@ -15044,8 +15272,8 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
         cat conftest.err 1>&5
       fi
       $RM conftest*
-      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
+      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+$as_echo "$archive_cmds_need_lc_CXX" >&6; }
       ;;
     esac
   fi
@@ -15115,8 +15343,8 @@ esac
 
 
 
-    { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 library_names_spec=
 libname_spec='lib$name'
@@ -15506,29 +15734,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
   shlibpath_overrides_runpath=yes
 fi
 
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
   LDFLAGS=$save_LDFLAGS
@@ -15754,8 +15986,8 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6; }
+{ $as_echo "$as_me:$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"
@@ -15805,8 +16037,8 @@ fi
 
 
 
-    { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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" ||
@@ -15830,8 +16062,8 @@ else
   # directories.
   hardcode_action_CXX=unsupported
 fi
-{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
-echo "${ECHO_T}$hardcode_action_CXX" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
 
 if test "$hardcode_action_CXX" = relink ||
    test "$inherit_rpath_CXX" = yes; then
@@ -15877,10 +16109,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -15893,7 +16125,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -15904,11 +16136,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -15917,10 +16149,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -15933,7 +16165,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -15944,11 +16176,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -15956,12 +16188,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -15974,10 +16202,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -15990,7 +16218,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16001,11 +16229,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16014,10 +16242,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -16035,7 +16263,7 @@ do
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16058,11 +16286,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16073,10 +16301,10 @@ if test -z "$CC"; then
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -16089,7 +16317,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16100,11 +16328,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16117,10 +16345,10 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -16133,7 +16361,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16144,11 +16372,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16160,12 +16388,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -16175,50 +16399,56 @@ fi
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
 See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
 { (ac_try="$ac_compiler --version >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler --version >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -v >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -v >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -V >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -V >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -16244,20 +16474,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_compiler_gnu=no
@@ -16267,15 +16498,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$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
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
 if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
@@ -16302,20 +16537,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	CFLAGS=""
@@ -16340,20 +16576,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_c_werror_flag=$ac_save_c_werror_flag
@@ -16379,20 +16616,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -16407,8 +16645,8 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:$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
@@ -16424,10 +16662,10 @@ else
     CFLAGS=
   fi
 fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
 if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
@@ -16498,20 +16736,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_c89=$ac_arg
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -16527,15 +16766,15 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
   xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 
 
@@ -16553,10 +16792,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
@@ -16571,7 +16810,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16583,11 +16822,11 @@ esac
 fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 if test -n "$PKG_CONFIG"; then
-  { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-echo "${ECHO_T}$PKG_CONFIG" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16596,10 +16835,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   case $ac_pt_PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
@@ -16614,7 +16853,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16626,11 +16865,11 @@ esac
 fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 if test -n "$ac_pt_PKG_CONFIG"; then
-  { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
-echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_pt_PKG_CONFIG" = x; then
@@ -16638,12 +16877,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -16655,19 +16890,27 @@ fi
 fi
 if test -n "$PKG_CONFIG"; then
 	_pkg_min_version=0.9.0
-	{ echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
-echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$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
-		{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	else
-		{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 		PKG_CONFIG=""
 	fi
 
 fi
 
+# Check whether pkg-config supports Requires.private
+if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then
+   pkgconfig_requires_private="Requires.private"
+else
+   pkgconfig_requires_private="Requires"
+fi
+
+
 # doxygen program for documentation building
 
 
@@ -16685,10 +16928,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build documentation" >&5
-echo $ECHO_N "checking whether to build documentation... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${efl_enable_doc}" >&5
-echo "${ECHO_T}${efl_enable_doc}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build documentation" >&5
+$as_echo_n "checking whether to build documentation... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${efl_enable_doc}" >&5
+$as_echo "${efl_enable_doc}" >&6; }
 
 if test "x${efl_enable_doc}" = "xyes" ; then
 
@@ -16702,10 +16945,10 @@ if test "${with_doxygen+set}" = set; then
       efl_doxygen=${withval}
        # Extract the first word of "${efl_doxygen}", so it can be a program name with args.
 set dummy ${efl_doxygen}; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_efl_have_doxygen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$efl_have_doxygen"; then
   ac_cv_prog_efl_have_doxygen="$efl_have_doxygen" # Let the user override the test.
@@ -16718,7 +16961,7 @@ do
   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_efl_have_doxygen="yes"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16730,11 +16973,11 @@ fi
 fi
 efl_have_doxygen=$ac_cv_prog_efl_have_doxygen
 if test -n "$efl_have_doxygen"; then
-  { echo "$as_me:$LINENO: result: $efl_have_doxygen" >&5
-echo "${ECHO_T}$efl_have_doxygen" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $efl_have_doxygen" >&5
+$as_echo "$efl_have_doxygen" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16744,17 +16987,17 @@ fi
           echo "${efl_doxygen}"
           echo "was not found.  Please check the path and make sure "
           echo "the program exists and is executable."
-          { echo "$as_me:$LINENO: WARNING: no doxygen detected. Documentation will not be built" >&5
-echo "$as_me: WARNING: no doxygen detected. Documentation will not be built" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: no doxygen detected. Documentation will not be built" >&5
+$as_echo "$as_me: WARNING: no doxygen detected. Documentation will not be built" >&2;}
        fi
 
 else
   # Extract the first word of "${efl_doxygen}", so it can be a program name with args.
 set dummy ${efl_doxygen}; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_efl_have_doxygen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$efl_have_doxygen"; then
   ac_cv_prog_efl_have_doxygen="$efl_have_doxygen" # Let the user override the test.
@@ -16767,7 +17010,7 @@ do
   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_efl_have_doxygen="yes"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -16779,11 +17022,11 @@ fi
 fi
 efl_have_doxygen=$ac_cv_prog_efl_have_doxygen
 if test -n "$efl_have_doxygen"; then
-  { echo "$as_me:$LINENO: result: $efl_have_doxygen" >&5
-echo "${ECHO_T}$efl_have_doxygen" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $efl_have_doxygen" >&5
+$as_echo "$efl_have_doxygen" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -16796,8 +17039,8 @@ fi
           echo "that the doxygen program is in your execute path (see your"
           echo "shell manual page on setting the \$PATH environment variable), OR"
           echo "alternatively, specify the program to use with --with-doxygen."
-          { echo "$as_me:$LINENO: WARNING: no doxygen detected. Documentation will not be built" >&5
-echo "$as_me: WARNING: no doxygen detected. Documentation will not be built" >&2;}
+          { $as_echo "$as_me:$LINENO: WARNING: no doxygen detected. Documentation will not be built" >&5
+$as_echo "$as_me: WARNING: no doxygen detected. Documentation will not be built" >&2;}
        fi
 
 fi
@@ -16836,18 +17079,18 @@ case "$host_os" in
    mingw* | cegcc*)
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EVIL" >&5
-echo $ECHO_N "checking for EVIL... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EVIL" >&5
+$as_echo_n "checking for EVIL... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EVIL_CFLAGS"; then
         pkg_cv_EVIL_CFLAGS="$EVIL_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evil\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evil\"") >&5
   ($PKG_CONFIG --exists --print-errors "evil") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EVIL_CFLAGS=`$PKG_CONFIG --cflags "evil" 2>/dev/null`
 else
@@ -16862,10 +17105,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EVIL_LIBS="$EVIL_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evil\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evil\"") >&5
   ($PKG_CONFIG --exists --print-errors "evil") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EVIL_LIBS=`$PKG_CONFIG --libs "evil" 2>/dev/null`
 else
@@ -16893,7 +17136,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EVIL_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (evil) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (evil) were not met:
 
 $EVIL_PKG_ERRORS
 
@@ -16904,7 +17147,7 @@ Alternatively, you may set the environment variables EVIL_CFLAGS
 and EVIL_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (evil) were not met:
+$as_echo "$as_me: error: Package requirements (evil) were not met:
 
 $EVIL_PKG_ERRORS
 
@@ -16917,7 +17160,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -16927,7 +17172,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -16937,12 +17182,12 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	EVIL_CFLAGS=$pkg_cv_EVIL_CFLAGS
 	EVIL_LIBS=$pkg_cv_EVIL_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	:
 fi
 
@@ -16950,6 +17195,7 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_EVIL 1
 _ACEOF
 
+      requirement_evas="evil ${requirement_evas}"
    ;;
 esac
 
@@ -16958,18 +17204,18 @@ esac
 # Eina
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EINA" >&5
-echo $ECHO_N "checking for EINA... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EINA" >&5
+$as_echo_n "checking for EINA... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EINA_CFLAGS"; then
         pkg_cv_EINA_CFLAGS="$EINA_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eina-0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eina-0\"") >&5
   ($PKG_CONFIG --exists --print-errors "eina-0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EINA_CFLAGS=`$PKG_CONFIG --cflags "eina-0" 2>/dev/null`
 else
@@ -16984,10 +17230,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EINA_LIBS="$EINA_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eina-0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eina-0\"") >&5
   ($PKG_CONFIG --exists --print-errors "eina-0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EINA_LIBS=`$PKG_CONFIG --libs "eina-0" 2>/dev/null`
 else
@@ -17015,7 +17261,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EINA_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (eina-0) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (eina-0) were not met:
 
 $EINA_PKG_ERRORS
 
@@ -17026,7 +17272,7 @@ Alternatively, you may set the environment variables EINA_CFLAGS
 and EINA_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (eina-0) were not met:
+$as_echo "$as_me: error: Package requirements (eina-0) were not met:
 
 $EINA_PKG_ERRORS
 
@@ -17039,7 +17285,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -17049,7 +17297,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -17059,30 +17307,30 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	EINA_CFLAGS=$pkg_cv_EINA_CFLAGS
 	EINA_LIBS=$pkg_cv_EINA_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	:
 fi
 
 # Freetype
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for FREETYPE" >&5
-echo $ECHO_N "checking for FREETYPE... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for FREETYPE" >&5
+$as_echo_n "checking for FREETYPE... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$FREETYPE_CFLAGS"; then
         pkg_cv_FREETYPE_CFLAGS="$FREETYPE_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 9.3.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 9.3.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "freetype2 >= 9.3.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2 >= 9.3.0" 2>/dev/null`
 else
@@ -17097,10 +17345,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_FREETYPE_LIBS="$FREETYPE_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 9.3.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 9.3.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "freetype2 >= 9.3.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2 >= 9.3.0" 2>/dev/null`
 else
@@ -17128,7 +17376,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$FREETYPE_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (freetype2 >= 9.3.0) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (freetype2 >= 9.3.0) were not met:
 
 $FREETYPE_PKG_ERRORS
 
@@ -17139,7 +17387,7 @@ Alternatively, you may set the environment variables FREETYPE_CFLAGS
 and FREETYPE_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (freetype2 >= 9.3.0) were not met:
+$as_echo "$as_me: error: Package requirements (freetype2 >= 9.3.0) were not met:
 
 $FREETYPE_PKG_ERRORS
 
@@ -17152,7 +17400,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -17162,7 +17412,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -17172,15 +17422,17 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	FREETYPE_CFLAGS=$pkg_cv_FREETYPE_CFLAGS
 	FREETYPE_LIBS=$pkg_cv_FREETYPE_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	:
 fi
 
+requirement_evas="freetype2 eina-0 ${requirement_evas}"
+
 ## optional dependencies
 
 # FontConfig
@@ -17201,18 +17453,18 @@ fi
 if test "x${want_fontconfig}" = "xyes" -o "x${want_fontconfig}" = "xauto" ; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for FONTCONFIG" >&5
-echo $ECHO_N "checking for FONTCONFIG... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for FONTCONFIG" >&5
+$as_echo_n "checking for FONTCONFIG... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$FONTCONFIG_CFLAGS"; then
         pkg_cv_FONTCONFIG_CFLAGS="$FONTCONFIG_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fontconfig\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fontconfig\"") >&5
   ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig" 2>/dev/null`
 else
@@ -17227,10 +17479,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_FONTCONFIG_LIBS="$FONTCONFIG_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fontconfig\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fontconfig\"") >&5
   ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig" 2>/dev/null`
 else
@@ -17258,28 +17510,28 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$FONTCONFIG_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
        if test "x${want_fontconfig}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-          { { echo "$as_me:$LINENO: error: Fontconfig not found (strict dependencies checking)" >&5
-echo "$as_me: error: Fontconfig not found (strict dependencies checking)" >&2;}
+          { { $as_echo "$as_me:$LINENO: error: Fontconfig not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Fontconfig not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
        fi
 
 elif test $pkg_failed = untried; then
 
        if test "x${want_fontconfig}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-          { { echo "$as_me:$LINENO: error: Fontconfig not found (strict dependencies checking)" >&5
-echo "$as_me: error: Fontconfig not found (strict dependencies checking)" >&2;}
+          { { $as_echo "$as_me:$LINENO: error: Fontconfig not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Fontconfig not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
        fi
 
 else
 	FONTCONFIG_CFLAGS=$pkg_cv_FONTCONFIG_CFLAGS
 	FONTCONFIG_LIBS=$pkg_cv_FONTCONFIG_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
        have_fontconfig="yes"
 
@@ -17287,6 +17539,7 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_FONTCONFIG 1
 _ACEOF
 
+       requirement_evas="fontconfig ${requirement_evas}"
 
 fi
 fi
@@ -17308,18 +17561,18 @@ fi
 if test "x${want_fribidi}" = "xyes" -o "x${want_fribidi}" = "xauto" ; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for FRIBIDI" >&5
-echo $ECHO_N "checking for FRIBIDI... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for FRIBIDI" >&5
+$as_echo_n "checking for FRIBIDI... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$FRIBIDI_CFLAGS"; then
         pkg_cv_FRIBIDI_CFLAGS="$FRIBIDI_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fribidi\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fribidi\"") >&5
   ($PKG_CONFIG --exists --print-errors "fribidi") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_FRIBIDI_CFLAGS=`$PKG_CONFIG --cflags "fribidi" 2>/dev/null`
 else
@@ -17334,10 +17587,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_FRIBIDI_LIBS="$FRIBIDI_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fribidi\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"fribidi\"") >&5
   ($PKG_CONFIG --exists --print-errors "fribidi") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_FRIBIDI_LIBS=`$PKG_CONFIG --libs "fribidi" 2>/dev/null`
 else
@@ -17365,28 +17618,28 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$FRIBIDI_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
        if test "x$want_fribidi" = "xyes" -a "x$use_strict" = "xyes" ; then
-          { { echo "$as_me:$LINENO: error: Fribidi not found (strict dependencies checking)" >&5
-echo "$as_me: error: Fribidi not found (strict dependencies checking)" >&2;}
+          { { $as_echo "$as_me:$LINENO: error: Fribidi not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Fribidi not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
        fi
 
 elif test $pkg_failed = untried; then
 
        if test "x$want_fribidi" = "xyes" -a "x$use_strict" = "xyes" ; then
-          { { echo "$as_me:$LINENO: error: Fribidi not found (strict dependencies checking)" >&5
-echo "$as_me: error: Fribidi not found (strict dependencies checking)" >&2;}
+          { { $as_echo "$as_me:$LINENO: error: Fribidi not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Fribidi not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
        fi
 
 else
 	FRIBIDI_CFLAGS=$pkg_cv_FRIBIDI_CFLAGS
 	FRIBIDI_LIBS=$pkg_cv_FRIBIDI_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
        have_fribidi="yes"
 
@@ -17394,6 +17647,7 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_FRIBIDI 1
 _ACEOF
 
+       requirement_evas="fribidi ${requirement_evas}"
 
 fi
 fi
@@ -17403,10 +17657,10 @@ if test "x${have_fribidi}" = "xno"; then
 fi
 
 ### Checks for header files
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
 if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -17433,20 +17687,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_header_stdc=no
@@ -17538,37 +17793,40 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  $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
 
 ( exit $ac_status )
 ac_cv_header_stdc=no
 fi
+rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
 fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -17580,17 +17838,17 @@ fi
 
 # fnmatch.h
 if test "${ac_cv_header_fnmatch_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for fnmatch.h" >&5
-echo $ECHO_N "checking for fnmatch.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for fnmatch.h" >&5
+$as_echo_n "checking for fnmatch.h... " >&6; }
 if test "${ac_cv_header_fnmatch_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_fnmatch_h" >&5
-echo "${ECHO_T}$ac_cv_header_fnmatch_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_fnmatch_h" >&5
+$as_echo "$ac_cv_header_fnmatch_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking fnmatch.h usability" >&5
-echo $ECHO_N "checking fnmatch.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking fnmatch.h usability" >&5
+$as_echo_n "checking fnmatch.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -17606,32 +17864,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking fnmatch.h presence" >&5
-echo $ECHO_N "checking fnmatch.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking fnmatch.h presence" >&5
+$as_echo_n "checking fnmatch.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -17645,51 +17904,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: fnmatch.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: fnmatch.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: fnmatch.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: fnmatch.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: fnmatch.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: fnmatch.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: fnmatch.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: fnmatch.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: fnmatch.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: fnmatch.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: fnmatch.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: fnmatch.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: fnmatch.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: fnmatch.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: fnmatch.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: fnmatch.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: fnmatch.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: fnmatch.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -17698,22 +17958,22 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for fnmatch.h" >&5
-echo $ECHO_N "checking for fnmatch.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for fnmatch.h" >&5
+$as_echo_n "checking for fnmatch.h... " >&6; }
 if test "${ac_cv_header_fnmatch_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_fnmatch_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_fnmatch_h" >&5
-echo "${ECHO_T}$ac_cv_header_fnmatch_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_fnmatch_h" >&5
+$as_echo "$ac_cv_header_fnmatch_h" >&6; }
 
 fi
-if test $ac_cv_header_fnmatch_h = yes; then
+if test "x$ac_cv_header_fnmatch_h" = x""yes; then
   dummy="yes"
 else
-  { { echo "$as_me:$LINENO: error: Cannot find fnmatch.h. Make sure your CFLAGS environment variable contains include lines for the location of this file. MinGW users: see the INSTALL file" >&5
-echo "$as_me: error: Cannot find fnmatch.h. Make sure your CFLAGS environment variable contains include lines for the location of this file. MinGW users: see the INSTALL file" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: Cannot find fnmatch.h. Make sure your CFLAGS environment variable contains include lines for the location of this file. MinGW users: see the INSTALL file" >&5
+$as_echo "$as_me: error: Cannot find fnmatch.h. Make sure your CFLAGS environment variable contains include lines for the location of this file. MinGW users: see the INSTALL file" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
@@ -17727,10 +17987,10 @@ fi
 
 
 ### Checks for compiler characteristics
-{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
 if test "${ac_cv_c_const+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -17802,20 +18062,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_c_const=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_c_const=no
@@ -17823,38 +18084,88 @@ fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
 
 cat >>confdefs.h <<\_ACEOF
-#define const
+#define const /**/
 _ACEOF
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; }
+
+ { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
 if test "${ac_cv_c_bigendian+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
-  # See if sys/param.h defines the BYTE_ORDER macro.
-cat >conftest.$ac_ext <<_ACEOF
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are some -arch flags.  Note that *ppc* also matches
+	# ppc64.  This check is also rather less than ideal.
+	case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in  #(
+	  *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+	esac
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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 >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <sys/param.h>
+	     #include <sys/param.h>
 
 int
 main ()
 {
-#if  ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
-	&& BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
- bogus endian macros
-#endif
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
 
   ;
   return 0;
@@ -17866,33 +18177,34 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   # It does; now see whether it defined to BIG_ENDIAN or not.
-cat >conftest.$ac_ext <<_ACEOF
+	 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <sys/param.h>
+		#include <sys/param.h>
 
 int
 main ()
 {
 #if BYTE_ORDER != BIG_ENDIAN
- not big endian
-#endif
+		 not big endian
+		#endif
 
   ;
   return 0;
@@ -17904,20 +18216,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_c_bigendian=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_c_bigendian=no
@@ -17925,29 +18238,31 @@ fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	# It does not; compile a test program.
-if test "$cross_compiling" = yes; then
-  # try to guess the endianness by grepping values into an object file
-  ac_cv_c_bigendian=unknown
-  cat >conftest.$ac_ext <<_ACEOF
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* 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 };
-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
-short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
+#include <limits.h>
+
 int
 main ()
 {
- _ascii (); _ebcdic ();
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
   ;
   return 0;
 }
@@ -17958,30 +18273,139 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
   ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_c_bigendian=no
 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
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; 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
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -18000,14 +18424,14 @@ 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;
+	     /* 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;
@@ -18019,63 +18443,70 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   ac_cv_c_bigendian=no
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  $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
 
 ( exit $ac_status )
 ac_cv_c_bigendian=yes
 fi
+rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
+    fi
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
-echo "${ECHO_T}$ac_cv_c_bigendian" >&6; }
-case $ac_cv_c_bigendian in
-  yes)
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+;; #(
+   no)
+      ;; #(
+   universal)
 
 cat >>confdefs.h <<\_ACEOF
-#define WORDS_BIGENDIAN 1
+#define AC_APPLE_UNIVERSAL_BUILD 1
 _ACEOF
- ;;
-  no)
-     ;;
-  *)
-    { { echo "$as_me:$LINENO: error: unknown endianness
-presetting ac_cv_c_bigendian=no (or yes) will help" >&5
-echo "$as_me: error: unknown endianness
-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+
+     ;; #(
+   *)
+     { { $as_echo "$as_me:$LINENO: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+$as_echo "$as_me: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
    { (exit 1); exit 1; }; } ;;
-esac
+ esac
 
 
 
-{ echo "$as_me:$LINENO: checking for __attribute__" >&5
-echo $ECHO_N "checking for __attribute__... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for __attribute__" >&5
+$as_echo_n "checking for __attribute__... " >&6; }
 
 if test "${ac_cv___attribute__+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18106,20 +18537,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv___attribute__="yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv___attribute__="no"
@@ -18130,8 +18562,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
 
-{ echo "$as_me:$LINENO: result: $ac_cv___attribute__" >&5
-echo "${ECHO_T}$ac_cv___attribute__" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv___attribute__" >&5
+$as_echo "$ac_cv___attribute__" >&6; }
 
 if test "x${ac_cv___attribute__}" = "xyes" ; then
 
@@ -18147,7 +18579,7 @@ _ACEOF
   else
 
 cat >>confdefs.h <<\_ACEOF
-#define __UNUSED__
+#define __UNUSED__ /**/
 _ACEOF
 
 fi
@@ -18161,10 +18593,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -18177,7 +18609,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -18188,11 +18620,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -18201,10 +18633,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -18217,7 +18649,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -18228,11 +18660,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -18240,12 +18672,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -18258,10 +18686,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -18274,7 +18702,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -18285,11 +18713,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -18298,10 +18726,10 @@ 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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -18319,7 +18747,7 @@ do
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -18342,11 +18770,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -18357,10 +18785,10 @@ if test -z "$CC"; then
   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
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -18373,7 +18801,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -18384,11 +18812,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -18401,10 +18829,10 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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.
@@ -18417,7 +18845,7 @@ do
   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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -18428,11 +18856,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -18444,12 +18872,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:$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
@@ -18459,50 +18883,56 @@ fi
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
 See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
 { (ac_try="$ac_compiler --version >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler --version >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -v >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -v >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 { (ac_try="$ac_compiler -V >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compiler -V >&5") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }
 
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18528,20 +18958,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_compiler_gnu=no
@@ -18551,15 +18982,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$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
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
 if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
@@ -18586,20 +19021,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	CFLAGS=""
@@ -18624,20 +19060,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_c_werror_flag=$ac_save_c_werror_flag
@@ -18663,20 +19100,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -18691,8 +19129,8 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:$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
@@ -18708,10 +19146,10 @@ else
     CFLAGS=
   fi
 fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
 if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
@@ -18782,20 +19220,21 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_c89=$ac_arg
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -18811,15 +19250,15 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
   xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 
 
@@ -18873,10 +19312,10 @@ esac
 # alloca
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
-{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
 if test "${ac_cv_working_alloca_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18900,31 +19339,35 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_working_alloca_h=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_working_alloca_h=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
 if test $ac_cv_working_alloca_h = yes; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -18933,10 +19376,10 @@ _ACEOF
 
 fi
 
-{ echo "$as_me:$LINENO: checking for alloca" >&5
-echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
 if test "${ac_cv_func_alloca_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18980,31 +19423,35 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_alloca_works=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_alloca_works=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
 
 if test $ac_cv_func_alloca_works = yes; then
 
@@ -19025,10 +19472,10 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 
-{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
 if test "${ac_cv_os_cray+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -19052,15 +19499,15 @@ fi
 rm -f conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
-echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
 if test $ac_cv_os_cray = yes; then
   for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
 if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -19113,33 +19560,40 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   eval "$as_ac_var=yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	eval "$as_ac_var=no"
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
 
 cat >>confdefs.h <<_ACEOF
 #define CRAY_STACKSEG_END $ac_func
@@ -19151,10 +19605,10 @@ fi
   done
 fi
 
-{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
 if test "${ac_cv_c_stack_direction+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then
   ac_cv_c_stack_direction=0
@@ -19192,36 +19646,39 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   ac_cv_c_stack_direction=1
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  $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
 
 ( exit $ac_status )
 ac_cv_c_stack_direction=-1
 fi
+rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
 
 cat >>confdefs.h <<_ACEOF
 #define STACK_DIRECTION $ac_cv_c_stack_direction
@@ -19235,11 +19692,11 @@ fi
 
 for ac_func in fnmatch
 do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
 if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -19292,35 +19749,42 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   eval "$as_ac_var=yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	eval "$as_ac_var=no"
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
  res="yes"
 else
@@ -19329,10 +19793,10 @@ fi
 done
 
 if test "x$res" = "xno"; then
-   { echo "$as_me:$LINENO: checking for library containing fnmatch" >&5
-echo $ECHO_N "checking for library containing fnmatch... $ECHO_C" >&6; }
+   { $as_echo "$as_me:$LINENO: checking for library containing fnmatch" >&5
+$as_echo_n "checking for library containing fnmatch... " >&6; }
 if test "${ac_cv_search_fnmatch+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
 cat >conftest.$ac_ext <<_ACEOF
@@ -19370,26 +19834,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_search_fnmatch=$ac_res
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext
   if test "${ac_cv_search_fnmatch+set}" = set; then
@@ -19404,8 +19872,8 @@ fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_fnmatch" >&5
-echo "${ECHO_T}$ac_cv_search_fnmatch" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_fnmatch" >&5
+$as_echo "$ac_cv_search_fnmatch" >&6; }
 ac_res=$ac_cv_search_fnmatch
 if test "$ac_res" != no; then
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
@@ -19415,8 +19883,8 @@ else
 fi
 
    if test "x$res" = "xno"; then
-      { { echo "$as_me:$LINENO: error: Cannot find fnmatch() in neither libc nor libfnmatch, nor libiberty, nor libevil" >&5
-echo "$as_me: error: Cannot find fnmatch() in neither libc nor libfnmatch, nor libiberty, nor libevil" >&2;}
+      { { $as_echo "$as_me:$LINENO: error: Cannot find fnmatch() in neither libc nor libfnmatch, nor libiberty, nor libevil" >&5
+$as_echo "$as_me: error: Cannot find fnmatch() in neither libc nor libfnmatch, nor libiberty, nor libevil" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
@@ -19438,11 +19906,11 @@ _ACEOF
 
 for ac_func in dlopen
 do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
 if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -19495,35 +19963,42 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   eval "$as_ac_var=yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	eval "$as_ac_var=no"
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
  res=yes
 else
@@ -19535,11 +20010,11 @@ done
 
 for ac_func in dladdr
 do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
 if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -19592,35 +20067,42 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   eval "$as_ac_var=yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	eval "$as_ac_var=no"
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
  cat >>confdefs.h <<\_ACEOF
 #define HAVE_DLADDR 1
@@ -19630,10 +20112,10 @@ fi
 done
 
     else
-      { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
 if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
@@ -19665,43 +20147,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dl_dlopen=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
-if test $ac_cv_lib_dl_dlopen = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
   res=yes
 else
   res=no
 fi
 
       if test "x$res" = "xyes"; then
-        { echo "$as_me:$LINENO: checking for dladdr in -ldl" >&5
-echo $ECHO_N "checking for dladdr in -ldl... $ECHO_C" >&6; }
+        { $as_echo "$as_me:$LINENO: checking for dladdr in -ldl" >&5
+$as_echo_n "checking for dladdr in -ldl... " >&6; }
 if test "${ac_cv_lib_dl_dladdr+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
@@ -19733,33 +20219,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dl_dladdr=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dl_dladdr=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dladdr" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dladdr" >&6; }
-if test $ac_cv_lib_dl_dladdr = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dladdr" >&5
+$as_echo "$ac_cv_lib_dl_dladdr" >&6; }
+if test "x$ac_cv_lib_dl_dladdr" = x""yes; then
   cat >>confdefs.h <<\_ACEOF
 #define HAVE_DLADDR 1
 _ACEOF
@@ -19768,8 +20258,8 @@ fi
 
         dlopen_libs=-ldl
       else
-        { { echo "$as_me:$LINENO: error: Cannot find dlopen" >&5
-echo "$as_me: error: Cannot find dlopen" >&2;}
+        { { $as_echo "$as_me:$LINENO: error: Cannot find dlopen" >&5
+$as_echo "$as_me: error: Cannot find dlopen" >&2;}
    { (exit 1); exit 1; }; }
       fi
     fi
@@ -19788,14 +20278,14 @@ if test "${enable_evas_cserve+set}" = set; then
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build shared cache server and support" >&5
-echo $ECHO_N "checking whether to build shared cache server and support... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_evas_cserve}" >&5
-echo "${ECHO_T}${want_evas_cserve}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build shared cache server and support" >&5
+$as_echo_n "checking whether to build shared cache server and support... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_evas_cserve}" >&5
+$as_echo "${want_evas_cserve}" >&6; }
 
 if test "x${want_evas_cserve}" = "xyes" ; then
-   { echo "$as_me:$LINENO: checking whether shm_open() is present" >&5
-echo $ECHO_N "checking whether shm_open() is present... $ECHO_C" >&6; }
+   { $as_echo "$as_me:$LINENO: checking whether shm_open() is present" >&5
+$as_echo_n "checking whether shm_open() is present... " >&6; }
    LIBS_save=${LIBS}
    LIBS="${LIBS} -lrt"
    cat >conftest.$ac_ext <<_ACEOF
@@ -19827,31 +20317,35 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   want_evas_cserve="yes"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	want_evas_cserve="no"
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
    LIBS=${LIBS_save}
-   { echo "$as_me:$LINENO: result: ${want_evas_cserve}" >&5
-echo "${ECHO_T}${want_evas_cserve}" >&6; }
+   { $as_echo "$as_me:$LINENO: result: ${want_evas_cserve}" >&5
+$as_echo "${want_evas_cserve}" >&6; }
 fi
 
 if test "x${want_evas_cserve}" = "xyes" ; then
@@ -19873,6 +20367,100 @@ fi
 
 
 
+#######################################
+## GL force flavor gles
+gl_flavor_gles="no"
+{ $as_echo "$as_me:$LINENO: checking whether to build GLES flavor of GL" >&5
+$as_echo_n "checking whether to build GLES flavor of GL... " >&6; }
+# Check whether --enable-gl-flavor-gles was given.
+if test "${enable_gl_flavor_gles+set}" = set; then
+  enableval=$enable_gl_flavor_gles;
+      if test "x$enableval" = "xyes" ; then
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+        gl_flavor_gles="yes"
+      else
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+        gl_flavor_gles="no"
+      fi
+
+else
+
+      { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+      gl_flavor_gles="no"
+
+
+fi
+
+
+#######################################
+## GLES variety sgx
+gles_variety_sgx="no"
+{ $as_echo "$as_me:$LINENO: checking whether to build GLES variety for SGX" >&5
+$as_echo_n "checking whether to build GLES variety for SGX... " >&6; }
+# Check whether --enable-gles-variety-sgx was given.
+if test "${enable_gles_variety_sgx+set}" = set; then
+  enableval=$enable_gles_variety_sgx;
+      if test "x$enableval" = "xyes" ; then
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define GLES_VARIETY_SGX 1
+_ACEOF
+
+        gles_variety_sgx="yes"
+      else
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+        gles_variety_sgx="no"
+      fi
+
+else
+
+      { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+      gles_variety_sgx="no"
+
+
+fi
+
+
+#######################################
+## GLES variety s3c6410
+gles_variety_s3c6410="no"
+{ $as_echo "$as_me:$LINENO: checking whether to build GLES variety for s3c6410" >&5
+$as_echo_n "checking whether to build GLES variety for s3c6410... " >&6; }
+# Check whether --enable-gles-variety-s3c6410 was given.
+if test "${enable_gles_variety_s3c6410+set}" = set; then
+  enableval=$enable_gles_variety_s3c6410;
+      if test "x$enableval" = "xyes" ; then
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define GLES_VARIETY_S3C6410 1
+_ACEOF
+
+        gles_variety_s3c6410="yes"
+      else
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+        gles_variety_s3c6410="no"
+      fi
+
+else
+
+      { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+      gles_variety_s3c6410="no"
+
+
+fi
+
+
 #####################################################################
 ## Engines
 
@@ -19900,10 +20488,10 @@ if test "${enable_buffer+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Buffer rendering backend" >&5
-echo $ECHO_N "checking whether to enable Buffer rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Buffer rendering backend" >&5
+$as_echo_n "checking whether to enable Buffer rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -19925,15 +20513,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Buffer dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Buffer dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Buffer dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Buffer dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Buffer rendering backend will be built" >&5
-echo $ECHO_N "checking whether Buffer rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Buffer rendering backend will be built" >&5
+$as_echo_n "checking whether Buffer rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -20008,10 +20596,10 @@ if test "${enable_software_xlib+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software Xlib rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software Xlib rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software Xlib rendering backend" >&5
+$as_echo_n "checking whether to enable Software Xlib rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -20020,8 +20608,8 @@ have_dep="no"
 evas_engine_software_xlib_cflags=""
 evas_engine_software_xlib_libs=""
 
-{ echo "$as_me:$LINENO: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
 
 
 # Check whether --with-x was given.
@@ -20035,11 +20623,11 @@ if test "x$with_x" = xno; then
   have_x=disabled
 else
   case $x_includes,$x_libraries in #(
-    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
-echo "$as_me: error: Cannot use X directory names containing '" >&2;}
+    *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
+$as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
    { (exit 1); exit 1; }; };; #(
     *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -20060,7 +20648,7 @@ _ACEOF
       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; do
+    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
@@ -20074,7 +20662,7 @@ _ACEOF
 	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
     esac
     case $ac_im_usrlibdir in
-	/usr/lib | /lib) ;;
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
 	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
     esac
   fi
@@ -20135,13 +20723,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
@@ -20149,7 +20738,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # We can compile using X headers with no special include directory.
 ac_x_includes=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   for ac_dir in $ac_x_header_dirs; do
@@ -20190,30 +20779,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
 ac_x_libraries=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+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; do
+  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
@@ -20222,6 +20814,7 @@ do
 done
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi # $ac_x_libraries = no
@@ -20244,8 +20837,8 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  { echo "$as_me:$LINENO: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6; }
+  { $as_echo "$as_me:$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.
@@ -20255,8 +20848,8 @@ else
   ac_cv_have_x="have_x=yes\
 	ac_x_includes='$x_includes'\
 	ac_x_libraries='$x_libraries'"
-  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
 fi
 
 if test "$no_x" = yes; then
@@ -20277,8 +20870,8 @@ else
     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 . . . .
-    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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
@@ -20303,23 +20896,26 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
        X_LIBS="$X_LIBS -R$x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
@@ -20344,33 +20940,38 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	  X_LIBS="$X_LIBS -R $x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: neither works" >&5
+$as_echo "neither works" >&6; }
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     ac_c_werror_flag=$ac_xsave_c_werror_flag
@@ -20416,27 +21017,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
@@ -20468,41 +21072,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
@@ -20534,39 +21142,44 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
 fi
 
     fi
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     LIBS="$ac_xsave_LIBS"
@@ -20579,10 +21192,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # 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.
-    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5
+$as_echo_n "checking for gethostbyname... " >&6; }
 if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -20635,37 +21248,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+$as_echo "$ac_cv_func_gethostbyname" >&6; }
 
     if test $ac_cv_func_gethostbyname = no; then
-      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
@@ -20697,41 +21314,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_nsl_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_nsl_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-	{ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
@@ -20763,33 +21384,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_bsd_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_bsd_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
 fi
 
@@ -20803,10 +21428,10 @@ fi
     # 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.
-    { echo "$as_me:$LINENO: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for connect" >&5
+$as_echo_n "checking for connect... " >&6; }
 if test "${ac_cv_func_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -20859,37 +21484,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+$as_echo "$ac_cv_func_connect" >&6; }
 
     if test $ac_cv_func_connect = no; then
-      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
 if test "${ac_cv_lib_socket_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
@@ -20921,43 +21550,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_socket_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_socket_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
-if test $ac_cv_lib_socket_connect = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = x""yes; then
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
 fi
 
     fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
-    { echo "$as_me:$LINENO: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for remove" >&5
+$as_echo_n "checking for remove... " >&6; }
 if test "${ac_cv_func_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -21010,37 +21643,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+$as_echo "$ac_cv_func_remove" >&6; }
 
     if test $ac_cv_func_remove = no; then
-      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
 if test "${ac_cv_lib_posix_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
@@ -21072,43 +21709,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_posix_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_posix_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
-if test $ac_cv_lib_posix_remove = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
 fi
 
     fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    { echo "$as_me:$LINENO: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for shmat" >&5
+$as_echo_n "checking for shmat... " >&6; }
 if test "${ac_cv_func_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -21161,37 +21802,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+$as_echo "$ac_cv_func_shmat" >&6; }
 
     if test $ac_cv_func_shmat = no; then
-      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
 if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
@@ -21223,33 +21868,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ipc_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ipc_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
-if test $ac_cv_lib_ipc_shmat = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
 fi
 
@@ -21265,10 +21914,10 @@ fi
   # 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
-  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
@@ -21300,33 +21949,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ICE_IceConnectionNumber=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ICE_IceConnectionNumber=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
 fi
 
@@ -21336,17 +21989,17 @@ fi
 
 
 if test "${ac_cv_header_X11_X_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for X11/X.h" >&5
-echo $ECHO_N "checking for X11/X.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for X11/X.h" >&5
+$as_echo_n "checking for X11/X.h... " >&6; }
 if test "${ac_cv_header_X11_X_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_X_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
+$as_echo "$ac_cv_header_X11_X_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking X11/X.h usability" >&5
-echo $ECHO_N "checking X11/X.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking X11/X.h usability" >&5
+$as_echo_n "checking X11/X.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -21362,32 +22015,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking X11/X.h presence" >&5
-echo $ECHO_N "checking X11/X.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking X11/X.h presence" >&5
+$as_echo_n "checking X11/X.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -21401,51 +22055,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: X11/X.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: X11/X.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: X11/X.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: X11/X.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: X11/X.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: X11/X.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: X11/X.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: X11/X.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: X11/X.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: X11/X.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: X11/X.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: X11/X.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -21454,24 +22109,172 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for X11/X.h" >&5
-echo $ECHO_N "checking for X11/X.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for X11/X.h" >&5
+$as_echo_n "checking for X11/X.h... " >&6; }
 if test "${ac_cv_header_X11_X_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_X11_X_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_X_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
+$as_echo "$ac_cv_header_X11_X_h" >&6; }
 
 fi
-if test $ac_cv_header_X11_X_h = yes; then
+if test "x$ac_cv_header_X11_X_h" = x""yes; then
   have_dep="yes"
 fi
 
 
 
 if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XCreateImage in -lX11" >&5
+$as_echo_n "checking for XCreateImage in -lX11... " >&6; }
+if test "${ac_cv_lib_X11_XCreateImage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lX11  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XCreateImage ();
+int
+main ()
+{
+return XCreateImage ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_X11_XCreateImage=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_X11_XCreateImage=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XCreateImage" >&5
+$as_echo "$ac_cv_lib_X11_XCreateImage" >&6; }
+if test "x$ac_cv_lib_X11_XCreateImage" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XShmCreateImage in -lXext" >&5
+$as_echo_n "checking for XShmCreateImage in -lXext... " >&6; }
+if test "${ac_cv_lib_Xext_XShmCreateImage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXext  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XShmCreateImage ();
+int
+main ()
+{
+return XShmCreateImage ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_Xext_XShmCreateImage=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_Xext_XShmCreateImage=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmCreateImage" >&5
+$as_echo "$ac_cv_lib_Xext_XShmCreateImage" >&6; }
+if test "x$ac_cv_lib_Xext_XShmCreateImage" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "xyes" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
@@ -21496,15 +22299,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software Xlib dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software Xlib dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software Xlib dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software Xlib dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software Xlib rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software Xlib rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software Xlib rendering backend will be built" >&5
+$as_echo_n "checking whether Software Xlib rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -21579,10 +22382,10 @@ if test "${enable_xrender_x11+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable XRender X11 rendering backend" >&5
-echo $ECHO_N "checking whether to enable XRender X11 rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable XRender X11 rendering backend" >&5
+$as_echo_n "checking whether to enable XRender X11 rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -21590,8 +22393,8 @@ if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_
 evas_engine_xrender_x11_cflags=""
 evas_engine_xrender_x11_libs=""
 
-{ echo "$as_me:$LINENO: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
 
 
 # Check whether --with-x was given.
@@ -21605,11 +22408,11 @@ if test "x$with_x" = xno; then
   have_x=disabled
 else
   case $x_includes,$x_libraries in #(
-    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
-echo "$as_me: error: Cannot use X directory names containing '" >&2;}
+    *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
+$as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
    { (exit 1); exit 1; }; };; #(
     *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -21630,7 +22433,7 @@ _ACEOF
       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; do
+    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
@@ -21644,7 +22447,7 @@ _ACEOF
 	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
     esac
     case $ac_im_usrlibdir in
-	/usr/lib | /lib) ;;
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
 	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
     esac
   fi
@@ -21705,13 +22508,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
@@ -21719,7 +22523,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # We can compile using X headers with no special include directory.
 ac_x_includes=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   for ac_dir in $ac_x_header_dirs; do
@@ -21760,30 +22564,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
 ac_x_libraries=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+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; do
+  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
@@ -21792,6 +22599,7 @@ do
 done
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi # $ac_x_libraries = no
@@ -21814,8 +22622,8 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  { echo "$as_me:$LINENO: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6; }
+  { $as_echo "$as_me:$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.
@@ -21825,8 +22633,8 @@ else
   ac_cv_have_x="have_x=yes\
 	ac_x_includes='$x_includes'\
 	ac_x_libraries='$x_libraries'"
-  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
 fi
 
 if test "$no_x" = yes; then
@@ -21847,8 +22655,8 @@ else
     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 . . . .
-    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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
@@ -21873,23 +22681,26 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
        X_LIBS="$X_LIBS -R$x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
@@ -21914,33 +22725,38 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	  X_LIBS="$X_LIBS -R $x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: neither works" >&5
+$as_echo "neither works" >&6; }
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     ac_c_werror_flag=$ac_xsave_c_werror_flag
@@ -21986,27 +22802,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
@@ -22038,41 +22857,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
@@ -22104,39 +22927,44 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
 fi
 
     fi
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     LIBS="$ac_xsave_LIBS"
@@ -22149,10 +22977,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # 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.
-    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5
+$as_echo_n "checking for gethostbyname... " >&6; }
 if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -22205,37 +23033,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+$as_echo "$ac_cv_func_gethostbyname" >&6; }
 
     if test $ac_cv_func_gethostbyname = no; then
-      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
@@ -22267,41 +23099,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_nsl_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_nsl_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-	{ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
@@ -22333,33 +23169,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_bsd_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_bsd_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
 fi
 
@@ -22373,10 +23213,10 @@ fi
     # 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.
-    { echo "$as_me:$LINENO: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for connect" >&5
+$as_echo_n "checking for connect... " >&6; }
 if test "${ac_cv_func_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -22429,37 +23269,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+$as_echo "$ac_cv_func_connect" >&6; }
 
     if test $ac_cv_func_connect = no; then
-      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
 if test "${ac_cv_lib_socket_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
@@ -22491,43 +23335,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_socket_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_socket_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
-if test $ac_cv_lib_socket_connect = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = x""yes; then
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
 fi
 
     fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
-    { echo "$as_me:$LINENO: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for remove" >&5
+$as_echo_n "checking for remove... " >&6; }
 if test "${ac_cv_func_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -22580,37 +23428,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+$as_echo "$ac_cv_func_remove" >&6; }
 
     if test $ac_cv_func_remove = no; then
-      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
 if test "${ac_cv_lib_posix_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
@@ -22642,43 +23494,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_posix_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_posix_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
-if test $ac_cv_lib_posix_remove = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
 fi
 
     fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    { echo "$as_me:$LINENO: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for shmat" >&5
+$as_echo_n "checking for shmat... " >&6; }
 if test "${ac_cv_func_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -22731,37 +23587,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+$as_echo "$ac_cv_func_shmat" >&6; }
 
     if test $ac_cv_func_shmat = no; then
-      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
 if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
@@ -22793,33 +23653,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ipc_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ipc_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
-if test $ac_cv_lib_ipc_shmat = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
 fi
 
@@ -22835,10 +23699,10 @@ fi
   # 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
-  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
@@ -22870,33 +23734,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ICE_IceConnectionNumber=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ICE_IceConnectionNumber=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
 fi
 
@@ -22909,20 +23777,21 @@ fi
 
 for ac_header in X11/X.h X11/extensions/Xrender.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -22938,32 +23807,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -22977,51 +23847,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -23030,21 +23901,24 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
  have_dep="yes"
 else
@@ -23055,6 +23929,228 @@ done
 
 
 if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XCreateImage in -lX11" >&5
+$as_echo_n "checking for XCreateImage in -lX11... " >&6; }
+if test "${ac_cv_lib_X11_XCreateImage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lX11  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XCreateImage ();
+int
+main ()
+{
+return XCreateImage ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_X11_XCreateImage=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_X11_XCreateImage=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XCreateImage" >&5
+$as_echo "$ac_cv_lib_X11_XCreateImage" >&6; }
+if test "x$ac_cv_lib_X11_XCreateImage" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XShmCreateImage in -lXext" >&5
+$as_echo_n "checking for XShmCreateImage in -lXext... " >&6; }
+if test "${ac_cv_lib_Xext_XShmCreateImage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXext  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XShmCreateImage ();
+int
+main ()
+{
+return XShmCreateImage ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_Xext_XShmCreateImage=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_Xext_XShmCreateImage=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmCreateImage" >&5
+$as_echo "$ac_cv_lib_Xext_XShmCreateImage" >&6; }
+if test "x$ac_cv_lib_Xext_XShmCreateImage" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XRenderCreatePicture in -lXrender" >&5
+$as_echo_n "checking for XRenderCreatePicture in -lXrender... " >&6; }
+if test "${ac_cv_lib_Xrender_XRenderCreatePicture+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXrender  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XRenderCreatePicture ();
+int
+main ()
+{
+return XRenderCreatePicture ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_Xrender_XRenderCreatePicture=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_Xrender_XRenderCreatePicture=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderCreatePicture" >&5
+$as_echo "$ac_cv_lib_Xrender_XRenderCreatePicture" >&6; }
+if test "x$ac_cv_lib_Xrender_XRenderCreatePicture" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "xyes" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
@@ -23079,15 +24175,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: XRender X11 dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: XRender X11 dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: XRender X11 dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: XRender X11 dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether XRender X11 rendering backend will be built" >&5
-echo $ECHO_N "checking whether XRender X11 rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether XRender X11 rendering backend will be built" >&5
+$as_echo_n "checking whether XRender X11 rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -23162,10 +24258,10 @@ if test "${enable_gl_x11+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable OpenGL X11 rendering backend" >&5
-echo $ECHO_N "checking whether to enable OpenGL X11 rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable OpenGL X11 rendering backend" >&5
+$as_echo_n "checking whether to enable OpenGL X11 rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -23173,8 +24269,8 @@ if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_
 evas_engine_gl_x11_cflags=""
 evas_engine_gl_x11_libs=""
 
-{ echo "$as_me:$LINENO: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
 
 
 # Check whether --with-x was given.
@@ -23188,11 +24284,11 @@ if test "x$with_x" = xno; then
   have_x=disabled
 else
   case $x_includes,$x_libraries in #(
-    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
-echo "$as_me: error: Cannot use X directory names containing '" >&2;}
+    *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
+$as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
    { (exit 1); exit 1; }; };; #(
     *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -23213,7 +24309,7 @@ _ACEOF
       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; do
+    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
@@ -23227,7 +24323,7 @@ _ACEOF
 	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
     esac
     case $ac_im_usrlibdir in
-	/usr/lib | /lib) ;;
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
 	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
     esac
   fi
@@ -23288,13 +24384,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
@@ -23302,7 +24399,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # We can compile using X headers with no special include directory.
 ac_x_includes=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   for ac_dir in $ac_x_header_dirs; do
@@ -23343,30 +24440,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
 ac_x_libraries=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+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; do
+  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
@@ -23375,6 +24475,7 @@ do
 done
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi # $ac_x_libraries = no
@@ -23397,8 +24498,8 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  { echo "$as_me:$LINENO: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6; }
+  { $as_echo "$as_me:$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.
@@ -23408,8 +24509,8 @@ else
   ac_cv_have_x="have_x=yes\
 	ac_x_includes='$x_includes'\
 	ac_x_libraries='$x_libraries'"
-  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
 fi
 
 if test "$no_x" = yes; then
@@ -23430,8 +24531,8 @@ else
     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 . . . .
-    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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
@@ -23456,23 +24557,26 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
        X_LIBS="$X_LIBS -R$x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
@@ -23497,33 +24601,38 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	  X_LIBS="$X_LIBS -R $x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: neither works" >&5
+$as_echo "neither works" >&6; }
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     ac_c_werror_flag=$ac_xsave_c_werror_flag
@@ -23569,27 +24678,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
@@ -23621,41 +24733,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
@@ -23687,39 +24803,44 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
 fi
 
     fi
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     LIBS="$ac_xsave_LIBS"
@@ -23732,10 +24853,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # 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.
-    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5
+$as_echo_n "checking for gethostbyname... " >&6; }
 if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -23788,37 +24909,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+$as_echo "$ac_cv_func_gethostbyname" >&6; }
 
     if test $ac_cv_func_gethostbyname = no; then
-      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
@@ -23850,41 +24975,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_nsl_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_nsl_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-	{ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
@@ -23916,33 +25045,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_bsd_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_bsd_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
 fi
 
@@ -23956,10 +25089,10 @@ fi
     # 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.
-    { echo "$as_me:$LINENO: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for connect" >&5
+$as_echo_n "checking for connect... " >&6; }
 if test "${ac_cv_func_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -24012,37 +25145,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+$as_echo "$ac_cv_func_connect" >&6; }
 
     if test $ac_cv_func_connect = no; then
-      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
 if test "${ac_cv_lib_socket_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
@@ -24074,43 +25211,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_socket_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_socket_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
-if test $ac_cv_lib_socket_connect = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = x""yes; then
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
 fi
 
     fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
-    { echo "$as_me:$LINENO: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for remove" >&5
+$as_echo_n "checking for remove... " >&6; }
 if test "${ac_cv_func_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -24163,37 +25304,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+$as_echo "$ac_cv_func_remove" >&6; }
 
     if test $ac_cv_func_remove = no; then
-      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
 if test "${ac_cv_lib_posix_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
@@ -24225,43 +25370,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_posix_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_posix_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
-if test $ac_cv_lib_posix_remove = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
 fi
 
     fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    { echo "$as_me:$LINENO: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for shmat" >&5
+$as_echo_n "checking for shmat... " >&6; }
 if test "${ac_cv_func_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -24314,37 +25463,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+$as_echo "$ac_cv_func_shmat" >&6; }
 
     if test $ac_cv_func_shmat = no; then
-      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
 if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
@@ -24376,33 +25529,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ipc_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ipc_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
-if test $ac_cv_lib_ipc_shmat = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
 fi
 
@@ -24418,10 +25575,10 @@ fi
   # 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
-  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
@@ -24453,33 +25610,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ICE_IceConnectionNumber=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ICE_IceConnectionNumber=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
 fi
 
@@ -24491,22 +25652,23 @@ fi
 
 
 
-for ac_header in GL/gl.h GL/glu.h X11/X.h
+for ac_header in GL/gl.h GL/glx.h X11/X.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -24522,32 +25684,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -24561,51 +25724,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -24614,21 +25778,24 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
  have_dep="yes"
 else
@@ -24639,16 +25806,409 @@ done
 
 
 if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XCreateColormap in -lX11" >&5
+$as_echo_n "checking for XCreateColormap in -lX11... " >&6; }
+if test "${ac_cv_lib_X11_XCreateColormap+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lX11  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XCreateColormap ();
+int
+main ()
+{
+return XCreateColormap ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_X11_XCreateColormap=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_X11_XCreateColormap=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XCreateColormap" >&5
+$as_echo "$ac_cv_lib_X11_XCreateColormap" >&6; }
+if test "x$ac_cv_lib_X11_XCreateColormap" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for glXCreateContext in -lGL" >&5
+$as_echo_n "checking for glXCreateContext in -lGL... " >&6; }
+if test "${ac_cv_lib_GL_glXCreateContext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGL  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 glXCreateContext ();
+int
+main ()
+{
+return glXCreateContext ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_GL_glXCreateContext=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_GL_glXCreateContext=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glXCreateContext" >&5
+$as_echo "$ac_cv_lib_GL_glXCreateContext" >&6; }
+if test "x$ac_cv_lib_GL_glXCreateContext" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x$gl_flavor_gles" = "xyes" ; then
+  have_dep=no
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "xyes" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
       x_dir=${x_dir:-/usr/X11R6}
       x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
-      x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+      x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11"
    fi
    evas_engine_gl_x11_cflags="-I/usr/include ${x_cflags}"
-   evas_engine_gl_x11_libs="${x_libs} -lGL -lGLU -lpthread"
+   evas_engine_gl_x11_libs="${x_libs} -lGL -lpthread"
+   evas_engine_gl_common_libs="-lGL -lpthread"
+else
+   if test "xyes" = "xyes" ; then
+      x_libs="${x_libs} -lX11 -lXext -lXrender"
+   else
+      x_dir=${x_dir:-/usr/X11R6}
+      x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+      x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender"
+   fi
+
+
+
+
+for ac_header in EGL/egl.h X11/X.h X11/Xlib.h X11/extensions/Xrender.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
 fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$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:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## -------------------------------------------------------- ##
+## Report this to enlightenment-devel at lists.sourceforge.net ##
+## -------------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ have_egl="yes"
+fi
+
+done
+
+   if test "x${have_egl}" = "xyes" ; then
+      { $as_echo "$as_me:$LINENO: checking for glTexImage2D in -lGLESv2" >&5
+$as_echo_n "checking for glTexImage2D in -lGLESv2... " >&6; }
+if test "${ac_cv_lib_GLESv2_glTexImage2D+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGLESv2 -lEGL ${x_libs} -lpthread -lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 glTexImage2D ();
+int
+main ()
+{
+return glTexImage2D ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_GLESv2_glTexImage2D=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_GLESv2_glTexImage2D=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_GLESv2_glTexImage2D" >&5
+$as_echo "$ac_cv_lib_GLESv2_glTexImage2D" >&6; }
+if test "x$ac_cv_lib_GLESv2_glTexImage2D" = x""yes; then
+  have_glesv2="yes"
+fi
+
+      if test "x${have_glesv2}" = "xyes" ; then
+         evas_engine_gl_x11_cflags="${x_cflags}"
+         evas_engine_gl_x11_libs="${x_libs} -lGLESv2 -lpthread -lm -lEGL"
+         evas_engine_gl_common_libs="-lGLESv2 -lpthread -lm"
+         have_dep="yes"
+      fi
+   fi
+fi
+
 
 
 
@@ -24663,15 +26223,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: OpenGL X11 dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: OpenGL X11 dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: OpenGL X11 dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: OpenGL X11 dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether OpenGL X11 rendering backend will be built" >&5
-echo $ECHO_N "checking whether OpenGL X11 rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether OpenGL X11 rendering backend will be built" >&5
+$as_echo_n "checking whether OpenGL X11 rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -24749,32 +26309,33 @@ if test "${enable_software_xcb+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software XCB rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software XCB rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software XCB rendering backend" >&5
+$as_echo_n "checking whether to enable Software XCB rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
 
+requirement=""
 have_dep="no"
 evas_engine_software_xcb_cflags=""
 evas_engine_software_xcb_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for XCB" >&5
-echo $ECHO_N "checking for XCB... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for XCB" >&5
+$as_echo_n "checking for XCB... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$XCB_CFLAGS"; then
         pkg_cv_XCB_CFLAGS="$XCB_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-image >= 0.2.1 pixman-1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-image >= 0.2.1 pixman-1\"") >&5
   ($PKG_CONFIG --exists --print-errors "xcb xcb-shm xcb-image >= 0.2.1 pixman-1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_XCB_CFLAGS=`$PKG_CONFIG --cflags "xcb xcb-shm xcb-image >= 0.2.1 pixman-1" 2>/dev/null`
 else
@@ -24789,10 +26350,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_XCB_LIBS="$XCB_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-image >= 0.2.1 pixman-1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-image >= 0.2.1 pixman-1\"") >&5
   ($PKG_CONFIG --exists --print-errors "xcb xcb-shm xcb-image >= 0.2.1 pixman-1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_XCB_LIBS=`$PKG_CONFIG --libs "xcb xcb-shm xcb-image >= 0.2.1 pixman-1" 2>/dev/null`
 else
@@ -24820,7 +26381,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$XCB_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (xcb xcb-shm xcb-image >= 0.2.1 pixman-1) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (xcb xcb-shm xcb-image >= 0.2.1 pixman-1) were not met:
 
 $XCB_PKG_ERRORS
 
@@ -24831,7 +26392,7 @@ Alternatively, you may set the environment variables XCB_CFLAGS
 and XCB_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (xcb xcb-shm xcb-image >= 0.2.1 pixman-1) were not met:
+$as_echo "$as_me: error: Package requirements (xcb xcb-shm xcb-image >= 0.2.1 pixman-1) were not met:
 
 $XCB_PKG_ERRORS
 
@@ -24844,7 +26405,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -24854,7 +26417,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -24864,14 +26427,15 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	XCB_CFLAGS=$pkg_cv_XCB_CFLAGS
 	XCB_LIBS=$pkg_cv_XCB_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
     have_dep="yes"
+    requirement="xcb xcb-shm xcb-image pixman-1"
     evas_engine_software_xcb_cflags="${XCB_CFLAGS}"
     evas_engine_software_xcb_libs="${XCB_LIBS}"
 
@@ -24881,6 +26445,10 @@ fi
 
 
 
+if test "x${want_engine}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_engine="yes"
 else
@@ -24891,15 +26459,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software XCB dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software XCB dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software XCB dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software XCB dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software XCB rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software XCB rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software XCB rendering backend will be built" >&5
+$as_echo_n "checking whether Software XCB rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -24974,32 +26542,33 @@ if test "${enable_xrender_xcb+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable XRender XCB rendering backend" >&5
-echo $ECHO_N "checking whether to enable XRender XCB rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable XRender XCB rendering backend" >&5
+$as_echo_n "checking whether to enable XRender XCB rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
 
+requirement=""
 have_dep="no"
 evas_engine_xrender_xcb_cflags=""
 evas_engine_xrender_xcb_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for XCBRENDER" >&5
-echo $ECHO_N "checking for XCBRENDER... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for XCBRENDER" >&5
+$as_echo_n "checking for XCBRENDER... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$XCBRENDER_CFLAGS"; then
         pkg_cv_XCBRENDER_CFLAGS="$XCBRENDER_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1\"") >&5
   ($PKG_CONFIG --exists --print-errors "xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_XCBRENDER_CFLAGS=`$PKG_CONFIG --cflags "xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1" 2>/dev/null`
 else
@@ -25014,10 +26583,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_XCBRENDER_LIBS="$XCBRENDER_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1\"") >&5
   ($PKG_CONFIG --exists --print-errors "xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_XCBRENDER_LIBS=`$PKG_CONFIG --libs "xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1" 2>/dev/null`
 else
@@ -25045,7 +26614,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$XCBRENDER_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1) were not met:
 
 $XCBRENDER_PKG_ERRORS
 
@@ -25056,7 +26625,7 @@ Alternatively, you may set the environment variables XCBRENDER_CFLAGS
 and XCBRENDER_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1) were not met:
+$as_echo "$as_me: error: Package requirements (xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1) were not met:
 
 $XCBRENDER_PKG_ERRORS
 
@@ -25069,7 +26638,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -25079,7 +26650,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -25089,14 +26660,15 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	XCBRENDER_CFLAGS=$pkg_cv_XCBRENDER_CFLAGS
 	XCBRENDER_LIBS=$pkg_cv_XCBRENDER_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
     have_dep="yes"
+    requirement="xcb xcb-shm xcb-render xcb-image pixman-1"
     evas_engine_xrender_xcb_cflags="${XCBRENDER_CFLAGS}"
     evas_engine_xrender_xcb_libs="${XCBRENDER_LIBS}"
 
@@ -25106,6 +26678,10 @@ fi
 
 
 
+if test "x${want_engine}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_engine="yes"
 else
@@ -25116,15 +26692,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: XRender XCB dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: XRender XCB dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: XRender XCB dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: XRender XCB dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether XRender XCB rendering backend will be built" >&5
-echo $ECHO_N "checking whether XRender XCB rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether XRender XCB rendering backend will be built" >&5
+$as_echo_n "checking whether XRender XCB rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -25199,10 +26775,10 @@ if test "${enable_software_gdi+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software GDI rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software GDI rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software GDI rendering backend" >&5
+$as_echo_n "checking whether to enable Software GDI rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -25212,17 +26788,17 @@ evas_engine_software_gdi_cflags=""
 evas_engine_software_gdi_libs=""
 
 if test "${ac_cv_header_windows_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for windows.h" >&5
-echo $ECHO_N "checking for windows.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for windows.h" >&5
+$as_echo_n "checking for windows.h... " >&6; }
 if test "${ac_cv_header_windows_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_windows_h" >&5
-echo "${ECHO_T}$ac_cv_header_windows_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_windows_h" >&5
+$as_echo "$ac_cv_header_windows_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking windows.h usability" >&5
-echo $ECHO_N "checking windows.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking windows.h usability" >&5
+$as_echo_n "checking windows.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25238,32 +26814,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking windows.h presence" >&5
-echo $ECHO_N "checking windows.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking windows.h presence" >&5
+$as_echo_n "checking windows.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25277,51 +26854,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: windows.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: windows.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: windows.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: windows.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: windows.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: windows.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: windows.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: windows.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: windows.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: windows.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: windows.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: windows.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: windows.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: windows.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: windows.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: windows.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: windows.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: windows.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: windows.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: windows.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: windows.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: windows.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: windows.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: windows.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: windows.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -25330,18 +26908,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for windows.h" >&5
-echo $ECHO_N "checking for windows.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for windows.h" >&5
+$as_echo_n "checking for windows.h... " >&6; }
 if test "${ac_cv_header_windows_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_windows_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_windows_h" >&5
-echo "${ECHO_T}$ac_cv_header_windows_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_windows_h" >&5
+$as_echo "$ac_cv_header_windows_h" >&6; }
 
 fi
-if test $ac_cv_header_windows_h = yes; then
+if test "x$ac_cv_header_windows_h" = x""yes; then
 
     have_dep="yes"
     evas_engine_software_gdi_libs="-lgdi32"
@@ -25364,15 +26942,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software GDI dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software GDI dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software GDI dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software GDI dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software GDI rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software GDI rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software GDI rendering backend will be built" >&5
+$as_echo_n "checking whether Software GDI rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -25447,10 +27025,10 @@ if test "${enable_software_ddraw+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software DirectDraw rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software DirectDraw rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software DirectDraw rendering backend" >&5
+$as_echo_n "checking whether to enable Software DirectDraw rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -25460,17 +27038,17 @@ evas_engine_software_ddraw_cflags=""
 evas_engine_software_ddraw_libs=""
 
 if test "${ac_cv_header_ddraw_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for ddraw.h" >&5
-echo $ECHO_N "checking for ddraw.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for ddraw.h" >&5
+$as_echo_n "checking for ddraw.h... " >&6; }
 if test "${ac_cv_header_ddraw_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
-echo "${ECHO_T}$ac_cv_header_ddraw_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
+$as_echo "$ac_cv_header_ddraw_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking ddraw.h usability" >&5
-echo $ECHO_N "checking ddraw.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking ddraw.h usability" >&5
+$as_echo_n "checking ddraw.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25486,32 +27064,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking ddraw.h presence" >&5
-echo $ECHO_N "checking ddraw.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking ddraw.h presence" >&5
+$as_echo_n "checking ddraw.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25525,51 +27104,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: ddraw.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: ddraw.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: ddraw.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: ddraw.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: ddraw.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: ddraw.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: ddraw.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: ddraw.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: ddraw.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: ddraw.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: ddraw.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: ddraw.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -25578,18 +27158,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for ddraw.h" >&5
-echo $ECHO_N "checking for ddraw.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ddraw.h" >&5
+$as_echo_n "checking for ddraw.h... " >&6; }
 if test "${ac_cv_header_ddraw_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_ddraw_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
-echo "${ECHO_T}$ac_cv_header_ddraw_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
+$as_echo "$ac_cv_header_ddraw_h" >&6; }
 
 fi
-if test $ac_cv_header_ddraw_h = yes; then
+if test "x$ac_cv_header_ddraw_h" = x""yes; then
 
     have_dep="yes"
     evas_engine_software_ddraw_libs="-lddraw"
@@ -25612,15 +27192,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software DirectDraw dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software DirectDraw dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software DirectDraw dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software DirectDraw dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software DirectDraw rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software DirectDraw rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software DirectDraw rendering backend will be built" >&5
+$as_echo_n "checking whether Software DirectDraw rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -25695,10 +27275,10 @@ if test "${enable_direct3d+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Direct3D rendering backend" >&5
-echo $ECHO_N "checking whether to enable Direct3D rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Direct3D rendering backend" >&5
+$as_echo_n "checking whether to enable Direct3D rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -25710,20 +27290,21 @@ evas_engine_direct3d_libs=""
 
 for ac_header in d3d9.h d3dx9.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25739,32 +27320,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25778,51 +27360,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -25831,21 +27414,24 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
     have_dep="yes"
@@ -25872,15 +27458,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Direct3D dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Direct3D dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Direct3D dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Direct3D dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Direct3D rendering backend will be built" >&5
-echo $ECHO_N "checking whether Direct3D rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Direct3D rendering backend will be built" >&5
+$as_echo_n "checking whether Direct3D rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -25955,10 +27541,10 @@ if test "${enable_quartz+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Quartz rendering backend" >&5
-echo $ECHO_N "checking whether to enable Quartz rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Quartz rendering backend" >&5
+$as_echo_n "checking whether to enable Quartz rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -25969,20 +27555,21 @@ evas_engine_quartz_libs=""
 
 for ac_header in /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -25998,32 +27585,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -26037,51 +27625,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -26090,21 +27679,24 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
  have_dep="yes"
 else
@@ -26128,15 +27720,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Quartz dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Quartz dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Quartz dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Quartz dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Quartz rendering backend will be built" >&5
-echo $ECHO_N "checking whether Quartz rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Quartz rendering backend will be built" >&5
+$as_echo_n "checking whether Quartz rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -26211,10 +27803,10 @@ if test "${enable_gl_glew+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable OpenGL Glew rendering backend" >&5
-echo $ECHO_N "checking whether to enable OpenGL Glew rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable OpenGL Glew rendering backend" >&5
+$as_echo_n "checking whether to enable OpenGL Glew rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -26224,23 +27816,23 @@ evas_engine_gl_glew_libs=""
 
 
 
-
-for ac_header in GL/gl.h GL/glu.h GL/glew.h
+for ac_header in GL/gl.h GL/glew.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -26256,32 +27848,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -26295,51 +27888,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -26348,25 +27942,28 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
     have_dep="yes"
-    evas_engine_gl_glew_libs="-lglu32 -lglew32 -lopengl32 -lgdi32"
+    evas_engine_gl_glew_libs="-lglew32 -lopengl32 -lgdi32"
 
 else
   have_dep="no"
@@ -26389,15 +27986,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: OpenGL Glew dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: OpenGL Glew dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: OpenGL Glew dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: OpenGL Glew dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether OpenGL Glew rendering backend will be built" >&5
-echo $ECHO_N "checking whether OpenGL Glew rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether OpenGL Glew rendering backend will be built" >&5
+$as_echo_n "checking whether OpenGL Glew rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -26472,32 +28069,33 @@ if test "${enable_software_sdl+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software SDL rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software SDL rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software SDL rendering backend" >&5
+$as_echo_n "checking whether to enable Software SDL rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
 
+requirement=""
 have_dep="no"
 evas_engine_software_sdl_cflags=""
 evas_engine_software_sdl_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for SDL" >&5
-echo $ECHO_N "checking for SDL... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for SDL" >&5
+$as_echo_n "checking for SDL... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$SDL_CFLAGS"; then
         pkg_cv_SDL_CFLAGS="$SDL_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sdl >= 1.2.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sdl >= 1.2.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "sdl >= 1.2.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl >= 1.2.0" 2>/dev/null`
 else
@@ -26512,10 +28110,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_SDL_LIBS="$SDL_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sdl >= 1.2.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sdl >= 1.2.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "sdl >= 1.2.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_SDL_LIBS=`$PKG_CONFIG --libs "sdl >= 1.2.0" 2>/dev/null`
 else
@@ -26543,7 +28141,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$SDL_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (sdl >= 1.2.0) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (sdl >= 1.2.0) were not met:
 
 $SDL_PKG_ERRORS
 
@@ -26554,7 +28152,7 @@ Alternatively, you may set the environment variables SDL_CFLAGS
 and SDL_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (sdl >= 1.2.0) were not met:
+$as_echo "$as_me: error: Package requirements (sdl >= 1.2.0) were not met:
 
 $SDL_PKG_ERRORS
 
@@ -26567,7 +28165,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -26577,7 +28177,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -26587,14 +28187,15 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	SDL_CFLAGS=$pkg_cv_SDL_CFLAGS
 	SDL_LIBS=$pkg_cv_SDL_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
     have_dep="yes"
+    requirement="sdl"
     evas_engine_software_sdl_cflags="${SDL_CFLAGS}"
     evas_engine_software_sdl_libs="${SDL_LIBS}"
 
@@ -26604,6 +28205,10 @@ fi
 
 
 
+if test "x${want_engine}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_engine="yes"
 else
@@ -26614,15 +28219,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software SDL dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software SDL dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software SDL dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software SDL dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software SDL rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software SDL rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software SDL rendering backend will be built" >&5
+$as_echo_n "checking whether Software SDL rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -26697,10 +28302,10 @@ if test "${enable_fb+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Framebuffer rendering backend" >&5
-echo $ECHO_N "checking whether to enable Framebuffer rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Framebuffer rendering backend" >&5
+$as_echo_n "checking whether to enable Framebuffer rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -26710,17 +28315,17 @@ evas_engine_fb_cflags=""
 evas_engine_fb_libs=""
 
 if test "${ac_cv_header_linux_fb_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for linux/fb.h" >&5
-echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for linux/fb.h" >&5
+$as_echo_n "checking for linux/fb.h... " >&6; }
 if test "${ac_cv_header_linux_fb_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5
-echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5
+$as_echo "$ac_cv_header_linux_fb_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking linux/fb.h usability" >&5
-echo $ECHO_N "checking linux/fb.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking linux/fb.h usability" >&5
+$as_echo_n "checking linux/fb.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -26736,32 +28341,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking linux/fb.h presence" >&5
-echo $ECHO_N "checking linux/fb.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking linux/fb.h presence" >&5
+$as_echo_n "checking linux/fb.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -26775,51 +28381,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: linux/fb.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: linux/fb.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: linux/fb.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: linux/fb.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: linux/fb.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: linux/fb.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: linux/fb.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: linux/fb.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: linux/fb.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: linux/fb.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -26828,18 +28435,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for linux/fb.h" >&5
-echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for linux/fb.h" >&5
+$as_echo_n "checking for linux/fb.h... " >&6; }
 if test "${ac_cv_header_linux_fb_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_linux_fb_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5
-echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5
+$as_echo "$ac_cv_header_linux_fb_h" >&6; }
 
 fi
-if test $ac_cv_header_linux_fb_h = yes; then
+if test "x$ac_cv_header_linux_fb_h" = x""yes; then
   have_dep="yes"
 fi
 
@@ -26858,15 +28465,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Framebuffer dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Framebuffer dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Framebuffer dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Framebuffer dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Framebuffer rendering backend will be built" >&5
-echo $ECHO_N "checking whether Framebuffer rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Framebuffer rendering backend will be built" >&5
+$as_echo_n "checking whether Framebuffer rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -26941,32 +28548,33 @@ if test "${enable_directfb+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable DirectFB rendering backend" >&5
-echo $ECHO_N "checking whether to enable DirectFB rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable DirectFB rendering backend" >&5
+$as_echo_n "checking whether to enable DirectFB rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
 
+requirement=""
 have_dep="no"
 evas_engine_directfb_cflags=""
 evas_engine_directfb_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for DIRECTFB" >&5
-echo $ECHO_N "checking for DIRECTFB... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for DIRECTFB" >&5
+$as_echo_n "checking for DIRECTFB... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$DIRECTFB_CFLAGS"; then
         pkg_cv_DIRECTFB_CFLAGS="$DIRECTFB_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"directfb >= 0.9.16\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"directfb >= 0.9.16\"") >&5
   ($PKG_CONFIG --exists --print-errors "directfb >= 0.9.16") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags "directfb >= 0.9.16" 2>/dev/null`
 else
@@ -26981,10 +28589,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_DIRECTFB_LIBS="$DIRECTFB_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"directfb >= 0.9.16\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"directfb >= 0.9.16\"") >&5
   ($PKG_CONFIG --exists --print-errors "directfb >= 0.9.16") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_DIRECTFB_LIBS=`$PKG_CONFIG --libs "directfb >= 0.9.16" 2>/dev/null`
 else
@@ -27012,7 +28620,7 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$DIRECTFB_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (directfb >= 0.9.16) were not met:
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (directfb >= 0.9.16) were not met:
 
 $DIRECTFB_PKG_ERRORS
 
@@ -27023,7 +28631,7 @@ Alternatively, you may set the environment variables DIRECTFB_CFLAGS
 and DIRECTFB_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (directfb >= 0.9.16) were not met:
+$as_echo "$as_me: error: Package requirements (directfb >= 0.9.16) were not met:
 
 $DIRECTFB_PKG_ERRORS
 
@@ -27036,7 +28644,9 @@ See the pkg-config man page for more details.
 " >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
-	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: 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.
 
@@ -27046,7 +28656,7 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
-echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+$as_echo "$as_me: 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.
 
@@ -27056,14 +28666,15 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+   { (exit 1); exit 1; }; }; }
 else
 	DIRECTFB_CFLAGS=$pkg_cv_DIRECTFB_CFLAGS
 	DIRECTFB_LIBS=$pkg_cv_DIRECTFB_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
     have_dep="yes"
+    requirement="directfb"
     evas_engine_directfb_cflags="${DIRECTFB_CFLAGS}"
     evas_engine_directfb_libs="${DIRECTFB_LIBS}"
 
@@ -27073,6 +28684,10 @@ fi
 
 
 
+if test "x${want_engine}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_engine="yes"
 else
@@ -27083,15 +28698,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: DirectFB dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: DirectFB dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: DirectFB dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: DirectFB dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether DirectFB rendering backend will be built" >&5
-echo $ECHO_N "checking whether DirectFB rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether DirectFB rendering backend will be built" >&5
+$as_echo_n "checking whether DirectFB rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -27169,10 +28784,10 @@ if test "${enable_software_16_x11+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software X11 16 bits rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software X11 16 bits rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software X11 16 bits rendering backend" >&5
+$as_echo_n "checking whether to enable Software X11 16 bits rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -27181,8 +28796,8 @@ have_dep="no"
 evas_engine_software_16_x11_cflags=""
 evas_engine_software_16_x11_libs=""
 
-{ echo "$as_me:$LINENO: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
 
 
 # Check whether --with-x was given.
@@ -27196,11 +28811,11 @@ if test "x$with_x" = xno; then
   have_x=disabled
 else
   case $x_includes,$x_libraries in #(
-    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
-echo "$as_me: error: Cannot use X directory names containing '" >&2;}
+    *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
+$as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
    { (exit 1); exit 1; }; };; #(
     *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $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
@@ -27221,7 +28836,7 @@ _ACEOF
       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; do
+    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
@@ -27235,7 +28850,7 @@ _ACEOF
 	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
     esac
     case $ac_im_usrlibdir in
-	/usr/lib | /lib) ;;
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
 	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
     esac
   fi
@@ -27296,13 +28911,14 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
@@ -27310,7 +28926,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   # We can compile using X headers with no special include directory.
 ac_x_includes=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   for ac_dir in $ac_x_header_dirs; do
@@ -27351,30 +28967,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
 ac_x_libraries=
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+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; do
+  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
@@ -27383,6 +29002,7 @@ do
 done
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi # $ac_x_libraries = no
@@ -27405,8 +29025,8 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  { echo "$as_me:$LINENO: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6; }
+  { $as_echo "$as_me:$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.
@@ -27416,8 +29036,8 @@ else
   ac_cv_have_x="have_x=yes\
 	ac_x_includes='$x_includes'\
 	ac_x_libraries='$x_libraries'"
-  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
 fi
 
 if test "$no_x" = yes; then
@@ -27438,8 +29058,8 @@ else
     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 . . . .
-    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$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
@@ -27464,23 +29084,26 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
        X_LIBS="$X_LIBS -R$x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
@@ -27505,33 +29128,38 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	  X_LIBS="$X_LIBS -R $x_libraries"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: neither works" >&5
+$as_echo "neither works" >&6; }
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     ac_c_werror_flag=$ac_xsave_c_werror_flag
@@ -27577,27 +29205,30 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   :
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	{ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
@@ -27629,41 +29260,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
@@ -27695,39 +29330,44 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+{ $as_echo "$as_me:$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" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
 fi
 
     fi
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
     LIBS="$ac_xsave_LIBS"
@@ -27740,10 +29380,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # 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.
-    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5
+$as_echo_n "checking for gethostbyname... " >&6; }
 if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -27796,37 +29436,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+$as_echo "$ac_cv_func_gethostbyname" >&6; }
 
     if test $ac_cv_func_gethostbyname = no; then
-      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
@@ -27858,41 +29502,45 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_nsl_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_nsl_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-	{ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
+	{ $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
@@ -27924,33 +29572,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_bsd_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_bsd_gethostbyname=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
 fi
 
@@ -27964,10 +29616,10 @@ fi
     # 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.
-    { echo "$as_me:$LINENO: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for connect" >&5
+$as_echo_n "checking for connect... " >&6; }
 if test "${ac_cv_func_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -28020,37 +29672,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+$as_echo "$ac_cv_func_connect" >&6; }
 
     if test $ac_cv_func_connect = no; then
-      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
 if test "${ac_cv_lib_socket_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
@@ -28082,43 +29738,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_socket_connect=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_socket_connect=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
-if test $ac_cv_lib_socket_connect = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = x""yes; then
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
 fi
 
     fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
-    { echo "$as_me:$LINENO: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for remove" >&5
+$as_echo_n "checking for remove... " >&6; }
 if test "${ac_cv_func_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -28171,37 +29831,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+$as_echo "$ac_cv_func_remove" >&6; }
 
     if test $ac_cv_func_remove = no; then
-      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
 if test "${ac_cv_lib_posix_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
@@ -28233,43 +29897,47 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_posix_remove=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_posix_remove=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
-if test $ac_cv_lib_posix_remove = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
 fi
 
     fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    { echo "$as_me:$LINENO: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for shmat" >&5
+$as_echo_n "checking for shmat... " >&6; }
 if test "${ac_cv_func_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -28322,37 +29990,41 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_func_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_func_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+$as_echo "$ac_cv_func_shmat" >&6; }
 
     if test $ac_cv_func_shmat = no; then
-      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
 if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
@@ -28384,33 +30056,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ipc_shmat=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ipc_shmat=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
-if test $ac_cv_lib_ipc_shmat = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
 fi
 
@@ -28426,10 +30102,10 @@ fi
   # 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
-  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
@@ -28461,33 +30137,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ICE_IceConnectionNumber=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ICE_IceConnectionNumber=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
 fi
 
@@ -28497,17 +30177,17 @@ fi
 
 
 if test "${ac_cv_header_X11_X_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for X11/X.h" >&5
-echo $ECHO_N "checking for X11/X.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for X11/X.h" >&5
+$as_echo_n "checking for X11/X.h... " >&6; }
 if test "${ac_cv_header_X11_X_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_X_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
+$as_echo "$ac_cv_header_X11_X_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking X11/X.h usability" >&5
-echo $ECHO_N "checking X11/X.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking X11/X.h usability" >&5
+$as_echo_n "checking X11/X.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -28523,32 +30203,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking X11/X.h presence" >&5
-echo $ECHO_N "checking X11/X.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking X11/X.h presence" >&5
+$as_echo_n "checking X11/X.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -28562,51 +30243,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: X11/X.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: X11/X.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: X11/X.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: X11/X.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: X11/X.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: X11/X.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/X.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: X11/X.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: X11/X.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: X11/X.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: X11/X.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: X11/X.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: X11/X.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: X11/X.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: X11/X.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -28615,24 +30297,172 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for X11/X.h" >&5
-echo $ECHO_N "checking for X11/X.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for X11/X.h" >&5
+$as_echo_n "checking for X11/X.h... " >&6; }
 if test "${ac_cv_header_X11_X_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_X11_X_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_X_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5
+$as_echo "$ac_cv_header_X11_X_h" >&6; }
 
 fi
-if test $ac_cv_header_X11_X_h = yes; then
+if test "x$ac_cv_header_X11_X_h" = x""yes; then
   have_dep="yes"
 fi
 
 
 
 if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XCreateImage in -lX11" >&5
+$as_echo_n "checking for XCreateImage in -lX11... " >&6; }
+if test "${ac_cv_lib_X11_XCreateImage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lX11  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XCreateImage ();
+int
+main ()
+{
+return XCreateImage ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_X11_XCreateImage=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_X11_XCreateImage=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XCreateImage" >&5
+$as_echo "$ac_cv_lib_X11_XCreateImage" >&6; }
+if test "x$ac_cv_lib_X11_XCreateImage" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   { $as_echo "$as_me:$LINENO: checking for XShmCreateImage in -lXext" >&5
+$as_echo_n "checking for XShmCreateImage in -lXext... " >&6; }
+if test "${ac_cv_lib_Xext_XShmCreateImage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXext  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 XShmCreateImage ();
+int
+main ()
+{
+return XShmCreateImage ();
+  ;
+  return 0;
+}
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 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_cv_lib_Xext_XShmCreateImage=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_Xext_XShmCreateImage=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmCreateImage" >&5
+$as_echo "$ac_cv_lib_Xext_XShmCreateImage" >&6; }
+if test "x$ac_cv_lib_Xext_XShmCreateImage" = x""yes; then
+  have_dep="yes"
+else
+  have_dep="no"
+fi
+
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "xyes" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
@@ -28657,15 +30487,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software X11 16 bits dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software X11 16 bits dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software X11 16 bits dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software X11 16 bits dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software X11 16 bits rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software X11 16 bits rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software X11 16 bits rendering backend will be built" >&5
+$as_echo_n "checking whether Software X11 16 bits rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -28740,10 +30570,10 @@ if test "${enable_software_16_ddraw+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software DirectDraw 16 bits rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software DirectDraw 16 bits rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software DirectDraw 16 bits rendering backend" >&5
+$as_echo_n "checking whether to enable Software DirectDraw 16 bits rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -28753,17 +30583,17 @@ evas_engine_software_16_ddraw_cflags=""
 evas_engine_software_16_ddraw_libs=""
 
 if test "${ac_cv_header_ddraw_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for ddraw.h" >&5
-echo $ECHO_N "checking for ddraw.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for ddraw.h" >&5
+$as_echo_n "checking for ddraw.h... " >&6; }
 if test "${ac_cv_header_ddraw_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
-echo "${ECHO_T}$ac_cv_header_ddraw_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
+$as_echo "$ac_cv_header_ddraw_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking ddraw.h usability" >&5
-echo $ECHO_N "checking ddraw.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking ddraw.h usability" >&5
+$as_echo_n "checking ddraw.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -28779,32 +30609,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking ddraw.h presence" >&5
-echo $ECHO_N "checking ddraw.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking ddraw.h presence" >&5
+$as_echo_n "checking ddraw.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -28818,51 +30649,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: ddraw.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: ddraw.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: ddraw.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: ddraw.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: ddraw.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: ddraw.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: ddraw.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ddraw.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: ddraw.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: ddraw.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: ddraw.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: ddraw.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: ddraw.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: ddraw.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: ddraw.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: ddraw.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -28871,18 +30703,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for ddraw.h" >&5
-echo $ECHO_N "checking for ddraw.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ddraw.h" >&5
+$as_echo_n "checking for ddraw.h... " >&6; }
 if test "${ac_cv_header_ddraw_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_ddraw_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
-echo "${ECHO_T}$ac_cv_header_ddraw_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_ddraw_h" >&5
+$as_echo "$ac_cv_header_ddraw_h" >&6; }
 
 fi
-if test $ac_cv_header_ddraw_h = yes; then
+if test "x$ac_cv_header_ddraw_h" = x""yes; then
 
     have_dep="yes"
     evas_engine_software_16_ddraw_libs="-lddraw -lgdi32"
@@ -28905,15 +30737,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software DirectDraw 16 bits dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software DirectDraw 16 bits dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software DirectDraw 16 bits dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software DirectDraw 16 bits dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software DirectDraw 16 bits rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software DirectDraw 16 bits rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software DirectDraw 16 bits rendering backend will be built" >&5
+$as_echo_n "checking whether Software DirectDraw 16 bits rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -28988,10 +30820,10 @@ if test "${enable_software_16_wince+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Software Windows CE 16 bits rendering backend" >&5
-echo $ECHO_N "checking whether to enable Software Windows CE 16 bits rendering backend... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_engine}" >&5
-echo "${ECHO_T}${want_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Software Windows CE 16 bits rendering backend" >&5
+$as_echo_n "checking whether to enable Software Windows CE 16 bits rendering backend... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_engine}" >&5
+$as_echo "${want_engine}" >&6; }
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
 
@@ -29013,15 +30845,15 @@ fi
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Software Windows CE 16 bits dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Software Windows CE 16 bits dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Software Windows CE 16 bits dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Software Windows CE 16 bits dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Software Windows CE 16 bits rendering backend will be built" >&5
-echo $ECHO_N "checking whether Software Windows CE 16 bits rendering backend will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_engine}" >&5
-echo "${ECHO_T}${have_engine}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Software Windows CE 16 bits rendering backend will be built" >&5
+$as_echo_n "checking whether Software Windows CE 16 bits rendering backend will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_engine}" >&5
+$as_echo "${have_engine}" >&6; }
 
 if test "x${have_engine}" = "xyes" ; then
    if test "x${want_engine}" = "xstatic" ; then
@@ -29089,15 +30921,12 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
    have_evas_engine_gl_common="yes"
-   evas_engine_gl_common_libs="-lglu32"
-fi
-
-if test "x$have_evas_engine_gl_x11" = "xyes" ; then
-   evas_engine_gl_common_libs="-lGL -lGLU -lpthread"
+   evas_engine_gl_common_libs=""
 fi
 
 if test "x$have_evas_engine_gl_glew" = "xyes" ; then
-   evas_engine_gl_common_libs="-lglu32"
+   have_evas_engine_gl_common="yes"
+   evas_engine_gl_common_libs=""
 fi
 
 
@@ -29119,10 +30948,10 @@ if test "${enable_sdl_primitive+set}" = set; then
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether to use SDL primitive when possible" >&5
-echo $ECHO_N "checking whether to use SDL primitive when possible... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${sdl_primitive}" >&5
-echo "${ECHO_T}${sdl_primitive}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to use SDL primitive when possible" >&5
+$as_echo_n "checking whether to use SDL primitive when possible... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${sdl_primitive}" >&5
+$as_echo "${sdl_primitive}" >&6; }
 
 if test "x${sdl_primitive}" = "xyes" ; then
 
@@ -29140,10 +30969,10 @@ if test "${enable_static_software_generic+set}" = set; then
 
 fi
 
-{ echo "$as_me:$LINENO: checking Whether to build software generic engine as part of libevas" >&5
-echo $ECHO_N "checking Whether to build software generic engine as part of libevas... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_static_software_generic}" >&5
-echo "${ECHO_T}${have_static_software_generic}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking Whether to build software generic engine as part of libevas" >&5
+$as_echo_n "checking Whether to build software generic engine as part of libevas... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_static_software_generic}" >&5
+$as_echo "${have_static_software_generic}" >&6; }
 
  if test "x${have_static_software_generic}" = "xyes"; then
   EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE=
@@ -29247,10 +31076,10 @@ if test "${enable_static_software_16+set}" = set; then
 
 fi
 
-{ echo "$as_me:$LINENO: checking Whether to build software 16 engine as part of libevas" >&5
-echo $ECHO_N "checking Whether to build software 16 engine as part of libevas... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_static_software_16}" >&5
-echo "${ECHO_T}${have_static_software_16}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking Whether to build software 16 engine as part of libevas" >&5
+$as_echo_n "checking Whether to build software 16 engine as part of libevas... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_static_software_16}" >&5
+$as_echo "${have_static_software_16}" >&6; }
 
  if test "x${have_static_software_16}" = "xyes"; then
   EVAS_STATIC_BUILD_SOFTWARE_16_TRUE=
@@ -29281,7 +31110,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_edb="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-edb was given.
 if test "${enable_image_loader_edb+set}" = set; then
   enableval=$enable_image_loader_edb;
     if test "x${enableval}" = "xyes" ; then
@@ -29298,32 +31127,33 @@ if test "${enable_image_loader_edb+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Edb image loader" >&5
-echo $ECHO_N "checking whether to enable Edb image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Edb image loader" >&5
+$as_echo_n "checking whether to enable Edb image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
 
+requirement=""
 have_dep="no"
 evas_image_loader_edb_cflags=""
 evas_image_loader_edb_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EDB" >&5
-echo $ECHO_N "checking for EDB... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EDB" >&5
+$as_echo_n "checking for EDB... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EDB_CFLAGS"; then
         pkg_cv_EDB_CFLAGS="$EDB_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"edb\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"edb\"") >&5
   ($PKG_CONFIG --exists --print-errors "edb") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EDB_CFLAGS=`$PKG_CONFIG --cflags "edb" 2>/dev/null`
 else
@@ -29338,10 +31168,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EDB_LIBS="$EDB_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"edb\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"edb\"") >&5
   ($PKG_CONFIG --exists --print-errors "edb") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EDB_LIBS=`$PKG_CONFIG --libs "edb" 2>/dev/null`
 else
@@ -29369,17 +31199,17 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EDB_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_dep="no"
 elif test $pkg_failed = untried; then
 	have_dep="no"
 else
 	EDB_CFLAGS=$pkg_cv_EDB_CFLAGS
 	EDB_LIBS=$pkg_cv_EDB_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_dep="yes"
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_dep="yes" requirement="edb"
 fi
 evas_image_loader_edb_cflags="${EDB_CFLAGS}"
 evas_image_loader_edb_libs="${EDB_LIBS}"
@@ -29387,6 +31217,10 @@ evas_image_loader_edb_libs="${EDB_LIBS}"
 
 
 
+if test "x${want_loader}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_loader="yes"
 else
@@ -29397,15 +31231,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Edb dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Edb dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Edb dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Edb dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Edb image loader will be built" >&5
-echo $ECHO_N "checking whether Edb image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Edb image loader will be built" >&5
+$as_echo_n "checking whether Edb image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -29466,7 +31300,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_eet="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-eet was given.
 if test "${enable_image_loader_eet+set}" = set; then
   enableval=$enable_image_loader_eet;
     if test "x${enableval}" = "xyes" ; then
@@ -29483,32 +31317,33 @@ if test "${enable_image_loader_eet+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Eet image loader" >&5
-echo $ECHO_N "checking whether to enable Eet image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Eet image loader" >&5
+$as_echo_n "checking whether to enable Eet image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
 
+requirement=""
 have_dep="no"
 evas_image_loader_eet_cflags=""
 evas_image_loader_eet_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EET" >&5
-echo $ECHO_N "checking for EET... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EET" >&5
+$as_echo_n "checking for EET... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EET_CFLAGS"; then
         pkg_cv_EET_CFLAGS="$EET_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
   ($PKG_CONFIG --exists --print-errors "eet >= 1.0.1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EET_CFLAGS=`$PKG_CONFIG --cflags "eet >= 1.0.1" 2>/dev/null`
 else
@@ -29523,10 +31358,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EET_LIBS="$EET_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
   ($PKG_CONFIG --exists --print-errors "eet >= 1.0.1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EET_LIBS=`$PKG_CONFIG --libs "eet >= 1.0.1" 2>/dev/null`
 else
@@ -29554,17 +31389,17 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EET_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_dep="no"
 elif test $pkg_failed = untried; then
 	have_dep="no"
 else
 	EET_CFLAGS=$pkg_cv_EET_CFLAGS
 	EET_LIBS=$pkg_cv_EET_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_dep="yes"
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_dep="yes" requirement="eet"
 fi
 evas_image_loader_eet_cflags="${EET_CFLAGS}"
 evas_image_loader_eet_libs="${EET_LIBS}"
@@ -29572,6 +31407,10 @@ evas_image_loader_eet_libs="${EET_LIBS}"
 
 
 
+if test "x${want_loader}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_loader="yes"
 else
@@ -29582,15 +31421,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Eet dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Eet dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Eet dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Eet dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Eet image loader will be built" >&5
-echo $ECHO_N "checking whether Eet image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Eet image loader will be built" >&5
+$as_echo_n "checking whether Eet image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -29653,26 +31492,26 @@ if test "${enable_font_loader_eet+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Eet font loader" >&5
-echo $ECHO_N "checking whether to enable Eet font loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Eet font loader" >&5
+$as_echo_n "checking whether to enable Eet font loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x$want_loader" = "xyes" -o "x$want_loader" = "xauto"; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EET" >&5
-echo $ECHO_N "checking for EET... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EET" >&5
+$as_echo_n "checking for EET... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EET_CFLAGS"; then
         pkg_cv_EET_CFLAGS="$EET_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
   ($PKG_CONFIG --exists --print-errors "eet >= 1.0.1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EET_CFLAGS=`$PKG_CONFIG --cflags "eet >= 1.0.1" 2>/dev/null`
 else
@@ -29687,10 +31526,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EET_LIBS="$EET_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"eet >= 1.0.1\"") >&5
   ($PKG_CONFIG --exists --print-errors "eet >= 1.0.1") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_EET_LIBS=`$PKG_CONFIG --libs "eet >= 1.0.1" 2>/dev/null`
 else
@@ -29718,23 +31557,23 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EET_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_evas_font_loader_eet="no"
 elif test $pkg_failed = untried; then
 	have_evas_font_loader_eet="no"
 else
 	EET_CFLAGS=$pkg_cv_EET_CFLAGS
 	EET_LIBS=$pkg_cv_EET_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 	have_evas_font_loader_eet="yes"
 fi
 fi
 
 if test "x${have_evas_font_loader_eet}" = "xno" -a "x$want_loader" = "xyes" -a "x$use_strict" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Eet dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Eet dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Eet dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Eet dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
@@ -29744,6 +31583,7 @@ cat >>confdefs.h <<\_ACEOF
 #define BUILD_FONT_LOADER_EET 1
 _ACEOF
 
+   requirement_evas="eet ${requirement_evas}"
 fi
 
 
@@ -29761,7 +31601,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_gif="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-gif was given.
 if test "${enable_image_loader_gif+set}" = set; then
   enableval=$enable_image_loader_gif;
     if test "x${enableval}" = "xyes" ; then
@@ -29778,10 +31618,10 @@ if test "${enable_image_loader_gif+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Gif image loader" >&5
-echo $ECHO_N "checking whether to enable Gif image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Gif image loader" >&5
+$as_echo_n "checking whether to enable Gif image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
@@ -29791,17 +31631,17 @@ evas_image_loader_gif_cflags=""
 evas_image_loader_gif_libs=""
 
 if test "${ac_cv_header_gif_lib_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for gif_lib.h" >&5
-echo $ECHO_N "checking for gif_lib.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for gif_lib.h" >&5
+$as_echo_n "checking for gif_lib.h... " >&6; }
 if test "${ac_cv_header_gif_lib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_gif_lib_h" >&5
-echo "${ECHO_T}$ac_cv_header_gif_lib_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_gif_lib_h" >&5
+$as_echo "$ac_cv_header_gif_lib_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking gif_lib.h usability" >&5
-echo $ECHO_N "checking gif_lib.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking gif_lib.h usability" >&5
+$as_echo_n "checking gif_lib.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -29817,32 +31657,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking gif_lib.h presence" >&5
-echo $ECHO_N "checking gif_lib.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking gif_lib.h presence" >&5
+$as_echo_n "checking gif_lib.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -29856,51 +31697,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: gif_lib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: gif_lib.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: gif_lib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: gif_lib.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: gif_lib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: gif_lib.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: gif_lib.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: gif_lib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: gif_lib.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gif_lib.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: gif_lib.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: gif_lib.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: gif_lib.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: gif_lib.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: gif_lib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: gif_lib.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: gif_lib.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: gif_lib.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -29909,28 +31751,28 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for gif_lib.h" >&5
-echo $ECHO_N "checking for gif_lib.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for gif_lib.h" >&5
+$as_echo_n "checking for gif_lib.h... " >&6; }
 if test "${ac_cv_header_gif_lib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_gif_lib_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_gif_lib_h" >&5
-echo "${ECHO_T}$ac_cv_header_gif_lib_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_gif_lib_h" >&5
+$as_echo "$ac_cv_header_gif_lib_h" >&6; }
 
 fi
-if test $ac_cv_header_gif_lib_h = yes; then
+if test "x$ac_cv_header_gif_lib_h" = x""yes; then
   have_dep="yes"
 fi
 
 
 
 if test "x${have_dep}"  = "xyes" ; then
-   { echo "$as_me:$LINENO: checking for DGifOpenFileName in -lgif" >&5
-echo $ECHO_N "checking for DGifOpenFileName in -lgif... $ECHO_C" >&6; }
+   { $as_echo "$as_me:$LINENO: checking for DGifOpenFileName in -lgif" >&5
+$as_echo_n "checking for DGifOpenFileName in -lgif... " >&6; }
 if test "${ac_cv_lib_gif_DGifOpenFileName+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgif  $LIBS"
@@ -29962,33 +31804,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_gif_DGifOpenFileName=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_gif_DGifOpenFileName=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_gif_DGifOpenFileName" >&5
-echo "${ECHO_T}$ac_cv_lib_gif_DGifOpenFileName" >&6; }
-if test $ac_cv_lib_gif_DGifOpenFileName = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_gif_DGifOpenFileName" >&5
+$as_echo "$ac_cv_lib_gif_DGifOpenFileName" >&6; }
+if test "x$ac_cv_lib_gif_DGifOpenFileName" = x""yes; then
 
        evas_image_loader_gif_libs="-lgif"
 
@@ -29999,10 +31845,10 @@ fi
 
 
    if test "x${have_dep}"  = "xno" ; then
-      { echo "$as_me:$LINENO: checking for DGifOpenFileName in -lungif" >&5
-echo $ECHO_N "checking for DGifOpenFileName in -lungif... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for DGifOpenFileName in -lungif" >&5
+$as_echo_n "checking for DGifOpenFileName in -lungif... " >&6; }
 if test "${ac_cv_lib_ungif_DGifOpenFileName+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lungif  $LIBS"
@@ -30034,33 +31880,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_ungif_DGifOpenFileName=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_ungif_DGifOpenFileName=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ungif_DGifOpenFileName" >&5
-echo "${ECHO_T}$ac_cv_lib_ungif_DGifOpenFileName" >&6; }
-if test $ac_cv_lib_ungif_DGifOpenFileName = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ungif_DGifOpenFileName" >&5
+$as_echo "$ac_cv_lib_ungif_DGifOpenFileName" >&6; }
+if test "x$ac_cv_lib_ungif_DGifOpenFileName" = x""yes; then
 
           have_dep="yes"
           evas_image_loader_gif_libs="-lungif"
@@ -30084,15 +31934,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Gif dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Gif dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Gif dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Gif dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Gif image loader will be built" >&5
-echo $ECHO_N "checking whether Gif image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Gif image loader will be built" >&5
+$as_echo_n "checking whether Gif image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -30154,7 +32004,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_jpeg="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-jpeg was given.
 if test "${enable_image_loader_jpeg+set}" = set; then
   enableval=$enable_image_loader_jpeg;
     if test "x${enableval}" = "xyes" ; then
@@ -30171,10 +32021,10 @@ if test "${enable_image_loader_jpeg+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Jpeg image loader" >&5
-echo $ECHO_N "checking whether to enable Jpeg image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Jpeg image loader" >&5
+$as_echo_n "checking whether to enable Jpeg image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
@@ -30184,17 +32034,17 @@ evas_image_loader_jpeg_cflags=""
 evas_image_loader_jpeg_libs=""
 
 if test "${ac_cv_header_jpeglib_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for jpeglib.h" >&5
-echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for jpeglib.h" >&5
+$as_echo_n "checking for jpeglib.h... " >&6; }
 if test "${ac_cv_header_jpeglib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
-echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
+$as_echo "$ac_cv_header_jpeglib_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking jpeglib.h usability" >&5
-echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking jpeglib.h usability" >&5
+$as_echo_n "checking jpeglib.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -30210,32 +32060,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking jpeglib.h presence" >&5
-echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking jpeglib.h presence" >&5
+$as_echo_n "checking jpeglib.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -30249,51 +32100,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -30302,28 +32154,28 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for jpeglib.h" >&5
-echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for jpeglib.h" >&5
+$as_echo_n "checking for jpeglib.h... " >&6; }
 if test "${ac_cv_header_jpeglib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_jpeglib_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
-echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
+$as_echo "$ac_cv_header_jpeglib_h" >&6; }
 
 fi
-if test $ac_cv_header_jpeglib_h = yes; then
+if test "x$ac_cv_header_jpeglib_h" = x""yes; then
   have_dep="yes"
 fi
 
 
 
 if test "x${have_dep}"  = "xyes" ; then
-   { echo "$as_me:$LINENO: checking for jpeg_CreateDecompress in -ljpeg" >&5
-echo $ECHO_N "checking for jpeg_CreateDecompress in -ljpeg... $ECHO_C" >&6; }
+   { $as_echo "$as_me:$LINENO: checking for jpeg_CreateDecompress in -ljpeg" >&5
+$as_echo_n "checking for jpeg_CreateDecompress in -ljpeg... " >&6; }
 if test "${ac_cv_lib_jpeg_jpeg_CreateDecompress+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ljpeg  $LIBS"
@@ -30355,39 +32207,90 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_jpeg_jpeg_CreateDecompress=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_jpeg_jpeg_CreateDecompress=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateDecompress" >&5
-echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateDecompress" >&6; }
-if test $ac_cv_lib_jpeg_jpeg_CreateDecompress = yes; then
-  evas_image_loader_jpeg_libs="-ljpeg"
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateDecompress" >&5
+$as_echo "$ac_cv_lib_jpeg_jpeg_CreateDecompress" >&6; }
+if test "x$ac_cv_lib_jpeg_jpeg_CreateDecompress" = x""yes; then
+
+        evas_image_loader_jpeg_libs="-ljpeg"
+        cat >conftest.$ac_ext <<_ACEOF
+
+                          #include <stdio.h>
+                          #include <jpeglib.h>
+                          #include <setjmp.h>
+                          int main(int argc, char **argv) {
+                          struct jpeg_decompress_struct decomp;
+                          decomp.region_x = 0;
+                          }
+
+_ACEOF
+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:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  have_jpeg_region="yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	have_jpeg_region="no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 else
   have_dep="no"
 
 fi
 
+   if test "x${have_jpeg_region}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_LOADER_JPEG_REGION 1
+_ACEOF
+
+   fi
 fi
 
 
@@ -30403,15 +32306,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Jpeg dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Jpeg dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Jpeg dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Jpeg dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Jpeg image loader will be built" >&5
-echo $ECHO_N "checking whether Jpeg image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Jpeg image loader will be built" >&5
+$as_echo_n "checking whether Jpeg image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -30490,7 +32393,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_pmaps="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-pmaps was given.
 if test "${enable_image_loader_pmaps+set}" = set; then
   enableval=$enable_image_loader_pmaps;
     if test "x${enableval}" = "xyes" ; then
@@ -30507,10 +32410,10 @@ if test "${enable_image_loader_pmaps+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable PMAPS image loader" >&5
-echo $ECHO_N "checking whether to enable PMAPS image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable PMAPS image loader" >&5
+$as_echo_n "checking whether to enable PMAPS image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
@@ -30532,15 +32435,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: PMAPS dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: PMAPS dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: PMAPS dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: PMAPS dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether PMAPS image loader will be built" >&5
-echo $ECHO_N "checking whether PMAPS image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether PMAPS image loader will be built" >&5
+$as_echo_n "checking whether PMAPS image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -30601,7 +32504,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_png="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-png was given.
 if test "${enable_image_loader_png+set}" = set; then
   enableval=$enable_image_loader_png;
     if test "x${enableval}" = "xyes" ; then
@@ -30618,38 +32521,39 @@ if test "${enable_image_loader_png+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable PNG image loader" >&5
-echo $ECHO_N "checking whether to enable PNG image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable PNG image loader" >&5
+$as_echo_n "checking whether to enable PNG image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
 
+requirement=""
 have_dep="no"
 evas_image_loader_png_cflags=""
 evas_image_loader_png_libs=""
 
 if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng12\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng12\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng12") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for PNG" >&5
-echo $ECHO_N "checking for PNG... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for PNG" >&5
+$as_echo_n "checking for PNG... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$PNG_CFLAGS"; then
         pkg_cv_PNG_CFLAGS="$PNG_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng12\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng12\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng12") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng12" 2>/dev/null`
 else
@@ -30664,10 +32568,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_PNG_LIBS="$PNG_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng12\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng12\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng12") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng12" 2>/dev/null`
 else
@@ -30695,39 +32599,39 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$PNG_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_dep="no"
 elif test $pkg_failed = untried; then
 	have_dep="no"
 else
 	PNG_CFLAGS=$pkg_cv_PNG_CFLAGS
 	PNG_LIBS=$pkg_cv_PNG_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_dep="yes"
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_dep="yes" requirement="libpng12"
 fi
 else
   if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng10\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng10\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng10") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for PNG" >&5
-echo $ECHO_N "checking for PNG... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for PNG" >&5
+$as_echo_n "checking for PNG... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$PNG_CFLAGS"; then
         pkg_cv_PNG_CFLAGS="$PNG_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng10\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng10\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng10") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng10" 2>/dev/null`
 else
@@ -30742,10 +32646,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_PNG_LIBS="$PNG_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng10\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng10\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng10") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng10" 2>/dev/null`
 else
@@ -30773,33 +32677,33 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$PNG_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_dep="no"
 elif test $pkg_failed = untried; then
 	have_dep="no"
 else
 	PNG_CFLAGS=$pkg_cv_PNG_CFLAGS
 	PNG_LIBS=$pkg_cv_PNG_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_dep="yes"
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_dep="yes" requirement="libpng10"
 fi
 else
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for PNG" >&5
-echo $ECHO_N "checking for PNG... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for PNG" >&5
+$as_echo_n "checking for PNG... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$PNG_CFLAGS"; then
         pkg_cv_PNG_CFLAGS="$PNG_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng" 2>/dev/null`
 else
@@ -30814,10 +32718,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_PNG_LIBS="$PNG_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpng\"") >&5
   ($PKG_CONFIG --exists --print-errors "libpng") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng" 2>/dev/null`
 else
@@ -30845,17 +32749,17 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$PNG_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_dep="no"
 elif test $pkg_failed = untried; then
 	have_dep="no"
 else
 	PNG_CFLAGS=$pkg_cv_PNG_CFLAGS
 	PNG_LIBS=$pkg_cv_PNG_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_dep="yes"
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_dep="yes" requirement="libpng"
 fi
 fi
 
@@ -30867,6 +32771,10 @@ evas_image_loader_png_libs="${PNG_LIBS}"
 
 
 
+if test "x${want_loader}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_loader="yes"
 else
@@ -30877,15 +32785,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: PNG dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: PNG dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: PNG dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: PNG dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether PNG image loader will be built" >&5
-echo $ECHO_N "checking whether PNG image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether PNG image loader will be built" >&5
+$as_echo_n "checking whether PNG image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -30946,7 +32854,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_svg="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-svg was given.
 if test "${enable_image_loader_svg+set}" = set; then
   enableval=$enable_image_loader_svg;
     if test "x${enableval}" = "xyes" ; then
@@ -30963,32 +32871,33 @@ if test "${enable_image_loader_svg+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable SVG image loader" >&5
-echo $ECHO_N "checking whether to enable SVG image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable SVG image loader" >&5
+$as_echo_n "checking whether to enable SVG image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
 
+requirement=""
 have_dep="no"
 evas_image_loader_svg_cflags=""
 evas_image_loader_svg_libs=""
 
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for SVG" >&5
-echo $ECHO_N "checking for SVG... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for SVG" >&5
+$as_echo_n "checking for SVG... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$SVG_CFLAGS"; then
         pkg_cv_SVG_CFLAGS="$SVG_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.14.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.14.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.14.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_SVG_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.14.0" 2>/dev/null`
 else
@@ -31003,10 +32912,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_SVG_LIBS="$SVG_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.14.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.14.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.14.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_SVG_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.14.0" 2>/dev/null`
 else
@@ -31034,8 +32943,8 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$SVG_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
                 have_svg="no"
 
 elif test $pkg_failed = untried; then
@@ -31044,9 +32953,9 @@ elif test $pkg_failed = untried; then
 else
 	SVG_CFLAGS=$pkg_cv_SVG_CFLAGS
 	SVG_LIBS=$pkg_cv_SVG_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_dep="yes"
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_dep="yes" requirement="librsvg-2.0"
 fi
 
 if test "x${have_dep}" = "xyes" ; then
@@ -31057,6 +32966,10 @@ fi
 
 
 
+if test "x${want_loader}" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
   have_loader="yes"
 else
@@ -31067,15 +32980,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: SVG dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: SVG dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: SVG dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: SVG dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether SVG image loader will be built" >&5
-echo $ECHO_N "checking whether SVG image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether SVG image loader will be built" >&5
+$as_echo_n "checking whether SVG image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -31136,7 +33049,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_tiff="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-tiff was given.
 if test "${enable_image_loader_tiff+set}" = set; then
   enableval=$enable_image_loader_tiff;
     if test "x${enableval}" = "xyes" ; then
@@ -31153,10 +33066,10 @@ if test "${enable_image_loader_tiff+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable Tiff image loader" >&5
-echo $ECHO_N "checking whether to enable Tiff image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable Tiff image loader" >&5
+$as_echo_n "checking whether to enable Tiff image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
@@ -31166,17 +33079,17 @@ evas_image_loader_tiff_cflags=""
 evas_image_loader_tiff_libs=""
 
 if test "${ac_cv_header_tiffio_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for tiffio.h" >&5
-echo $ECHO_N "checking for tiffio.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for tiffio.h" >&5
+$as_echo_n "checking for tiffio.h... " >&6; }
 if test "${ac_cv_header_tiffio_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_tiffio_h" >&5
-echo "${ECHO_T}$ac_cv_header_tiffio_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_tiffio_h" >&5
+$as_echo "$ac_cv_header_tiffio_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking tiffio.h usability" >&5
-echo $ECHO_N "checking tiffio.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking tiffio.h usability" >&5
+$as_echo_n "checking tiffio.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -31192,32 +33105,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking tiffio.h presence" >&5
-echo $ECHO_N "checking tiffio.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking tiffio.h presence" >&5
+$as_echo_n "checking tiffio.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -31231,51 +33145,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: tiffio.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: tiffio.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tiffio.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: tiffio.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: tiffio.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: tiffio.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: tiffio.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: tiffio.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tiffio.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: tiffio.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tiffio.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: tiffio.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tiffio.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: tiffio.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tiffio.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: tiffio.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tiffio.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: tiffio.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: tiffio.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: tiffio.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: tiffio.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: tiffio.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: tiffio.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: tiffio.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: tiffio.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -31284,28 +33199,28 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for tiffio.h" >&5
-echo $ECHO_N "checking for tiffio.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for tiffio.h" >&5
+$as_echo_n "checking for tiffio.h... " >&6; }
 if test "${ac_cv_header_tiffio_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_tiffio_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_tiffio_h" >&5
-echo "${ECHO_T}$ac_cv_header_tiffio_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_tiffio_h" >&5
+$as_echo "$ac_cv_header_tiffio_h" >&6; }
 
 fi
-if test $ac_cv_header_tiffio_h = yes; then
+if test "x$ac_cv_header_tiffio_h" = x""yes; then
   have_dep="yes"
 fi
 
 
 
 if test "x${have_dep}"  = "xyes" ; then
-   { echo "$as_me:$LINENO: checking for TIFFReadScanline in -ltiff" >&5
-echo $ECHO_N "checking for TIFFReadScanline in -ltiff... $ECHO_C" >&6; }
+   { $as_echo "$as_me:$LINENO: checking for TIFFReadScanline in -ltiff" >&5
+$as_echo_n "checking for TIFFReadScanline in -ltiff... " >&6; }
 if test "${ac_cv_lib_tiff_TIFFReadScanline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltiff  $LIBS"
@@ -31337,33 +33252,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_tiff_TIFFReadScanline=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_tiff_TIFFReadScanline=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFReadScanline" >&5
-echo "${ECHO_T}$ac_cv_lib_tiff_TIFFReadScanline" >&6; }
-if test $ac_cv_lib_tiff_TIFFReadScanline = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFReadScanline" >&5
+$as_echo "$ac_cv_lib_tiff_TIFFReadScanline" >&6; }
+if test "x$ac_cv_lib_tiff_TIFFReadScanline" = x""yes; then
 
        evas_image_loader_tiff_libs="-ltiff"
 
@@ -31374,10 +33293,10 @@ fi
 
 
    if test "x${have_dep}"  = "xno" ; then
-      { echo "$as_me:$LINENO: checking for TIFFReadScanline in -ltiff" >&5
-echo $ECHO_N "checking for TIFFReadScanline in -ltiff... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for TIFFReadScanline in -ltiff" >&5
+$as_echo_n "checking for TIFFReadScanline in -ltiff... " >&6; }
 if test "${ac_cv_lib_tiff_TIFFReadScanline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltiff  $LIBS"
@@ -31409,33 +33328,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_tiff_TIFFReadScanline=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_tiff_TIFFReadScanline=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFReadScanline" >&5
-echo "${ECHO_T}$ac_cv_lib_tiff_TIFFReadScanline" >&6; }
-if test $ac_cv_lib_tiff_TIFFReadScanline = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFReadScanline" >&5
+$as_echo "$ac_cv_lib_tiff_TIFFReadScanline" >&6; }
+if test "x$ac_cv_lib_tiff_TIFFReadScanline" = x""yes; then
 
           have_dep="yes"
           evas_image_loader_tiff_libs="-ltiff -ljpeg -lz -lm"
@@ -31446,10 +33369,10 @@ fi
    fi
 
    if test "x${have_dep}"  = "xno" ; then
-      { echo "$as_me:$LINENO: checking for TIFFReadScanline in -ltiff34" >&5
-echo $ECHO_N "checking for TIFFReadScanline in -ltiff34... $ECHO_C" >&6; }
+      { $as_echo "$as_me:$LINENO: checking for TIFFReadScanline in -ltiff34" >&5
+$as_echo_n "checking for TIFFReadScanline in -ltiff34... " >&6; }
 if test "${ac_cv_lib_tiff34_TIFFReadScanline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltiff34  $LIBS"
@@ -31481,33 +33404,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_tiff34_TIFFReadScanline=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_tiff34_TIFFReadScanline=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_tiff34_TIFFReadScanline" >&5
-echo "${ECHO_T}$ac_cv_lib_tiff34_TIFFReadScanline" >&6; }
-if test $ac_cv_lib_tiff34_TIFFReadScanline = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tiff34_TIFFReadScanline" >&5
+$as_echo "$ac_cv_lib_tiff34_TIFFReadScanline" >&6; }
+if test "x$ac_cv_lib_tiff34_TIFFReadScanline" = x""yes; then
 
           have_dep="yes"
           evas_image_loader_tiff_libs="-ltiff34 -ljpeg -lz -lm"
@@ -31531,15 +33458,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: Tiff dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: Tiff dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: Tiff dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Tiff dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether Tiff image loader will be built" >&5
-echo $ECHO_N "checking whether Tiff image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether Tiff image loader will be built" >&5
+$as_echo_n "checking whether Tiff image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -31600,7 +33527,7 @@ want_static_loader="no"
 have_loader="no"
 have_evas_image_loader_xpm="no"
 
-# Check whether --enable-image-loader-[]DOWN was given.
+# Check whether --enable-image-loader-xpm was given.
 if test "${enable_image_loader_xpm+set}" = set; then
   enableval=$enable_image_loader_xpm;
     if test "x${enableval}" = "xyes" ; then
@@ -31617,10 +33544,10 @@ if test "${enable_image_loader_xpm+set}" = set; then
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to enable XPM image loader" >&5
-echo $ECHO_N "checking whether to enable XPM image loader... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_loader}" >&5
-echo "${ECHO_T}${want_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable XPM image loader" >&5
+$as_echo_n "checking whether to enable XPM image loader... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${want_loader}" >&5
+$as_echo "${want_loader}" >&6; }
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
 
@@ -31642,15 +33569,15 @@ fi
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
-   { { echo "$as_me:$LINENO: error: XPM dependencies not found (strict dependencies checking)" >&5
-echo "$as_me: error: XPM dependencies not found (strict dependencies checking)" >&2;}
+   { { $as_echo "$as_me:$LINENO: error: XPM dependencies not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: XPM dependencies not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-{ echo "$as_me:$LINENO: checking whether XPM image loader will be built" >&5
-echo $ECHO_N "checking whether XPM image loader will be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_loader}" >&5
-echo "${ECHO_T}${have_loader}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether XPM image loader will be built" >&5
+$as_echo_n "checking whether XPM image loader will be built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_loader}" >&5
+$as_echo "${have_loader}" >&6; }
 
 if test "x${have_loader}" = "xyes" ; then
    if test "x${want_loader}" = "xstatic" ; then
@@ -31714,17 +33641,17 @@ has_pthreads="no"
 need_pthreads="no"
 # basic pthread support
 if test "${ac_cv_header_pthread_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for pthread.h" >&5
-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for pthread.h" >&5
+$as_echo_n "checking for pthread.h... " >&6; }
 if test "${ac_cv_header_pthread_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5
-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5
+$as_echo "$ac_cv_header_pthread_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking pthread.h usability" >&5
-echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking pthread.h usability" >&5
+$as_echo_n "checking pthread.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -31740,32 +33667,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking pthread.h presence" >&5
-echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking pthread.h presence" >&5
+$as_echo_n "checking pthread.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -31779,51 +33707,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: pthread.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: pthread.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: pthread.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: pthread.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: pthread.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: pthread.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -31832,18 +33761,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for pthread.h" >&5
-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for pthread.h" >&5
+$as_echo_n "checking for pthread.h... " >&6; }
 if test "${ac_cv_header_pthread_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_pthread_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5
-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5
+$as_echo "$ac_cv_header_pthread_h" >&6; }
 
 fi
-if test $ac_cv_header_pthread_h = yes; then
+if test "x$ac_cv_header_pthread_h" = x""yes; then
 
    has_pthreads="yes"
 
@@ -31861,20 +33790,21 @@ fi
 
 for ac_header in pthread.h sched.h
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -31890,32 +33820,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -31929,51 +33860,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -31982,27 +33914,30 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
-        { echo "$as_me:$LINENO: checking for pthread_attr_setaffinity_np in -lpthread" >&5
-echo $ECHO_N "checking for pthread_attr_setaffinity_np in -lpthread... $ECHO_C" >&6; }
+        { $as_echo "$as_me:$LINENO: checking for pthread_attr_setaffinity_np in -lpthread" >&5
+$as_echo_n "checking for pthread_attr_setaffinity_np in -lpthread... " >&6; }
 if test "${ac_cv_lib_pthread_pthread_attr_setaffinity_np+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lpthread  $LIBS"
@@ -32034,38 +33969,42 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_pthread_pthread_attr_setaffinity_np=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_pthread_pthread_attr_setaffinity_np=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_attr_setaffinity_np" >&5
-echo "${ECHO_T}$ac_cv_lib_pthread_pthread_attr_setaffinity_np" >&6; }
-if test $ac_cv_lib_pthread_pthread_attr_setaffinity_np = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_attr_setaffinity_np" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_attr_setaffinity_np" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_attr_setaffinity_np" = x""yes; then
 
-            { echo "$as_me:$LINENO: checking for pthread_barrier_wait in -lpthread" >&5
-echo $ECHO_N "checking for pthread_barrier_wait in -lpthread... $ECHO_C" >&6; }
+            { $as_echo "$as_me:$LINENO: checking for pthread_barrier_wait in -lpthread" >&5
+$as_echo_n "checking for pthread_barrier_wait in -lpthread... " >&6; }
 if test "${ac_cv_lib_pthread_pthread_barrier_wait+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lpthread  $LIBS"
@@ -32097,33 +34036,37 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
   ac_cv_lib_pthread_pthread_barrier_wait=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_cv_lib_pthread_pthread_barrier_wait=no
 fi
 
+rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_barrier_wait" >&5
-echo "${ECHO_T}$ac_cv_lib_pthread_pthread_barrier_wait" >&6; }
-if test $ac_cv_lib_pthread_pthread_barrier_wait = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_barrier_wait" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_barrier_wait" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_barrier_wait" = x""yes; then
    build_pthreads="yes"
 else
    build_pthreads="no"
@@ -32147,15 +34090,15 @@ done
 
 #######################################
 ## Pthread
-{ echo "$as_me:$LINENO: checking whether to build pthread code" >&5
-echo $ECHO_N "checking whether to build pthread code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build pthread code" >&5
+$as_echo_n "checking whether to build pthread code... " >&6; }
 # Check whether --enable-pthreads was given.
 if test "${enable_pthreads+set}" = set; then
   enableval=$enable_pthreads;
       if test "x$enableval" = "xyes" ; then
         if test "x$build_pthreads" = "xyes"; then
-          { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+          { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_PTHREAD 1
@@ -32165,24 +34108,24 @@ _ACEOF
 	  need_pthreads="yes"
         else
           if "x$use_strict" = "xyes"; then
-            { { echo "$as_me:$LINENO: error: pthreads headers or functions not found (strict dependencies checking)" >&5
-echo "$as_me: error: pthreads headers or functions not found (strict dependencies checking)" >&2;}
+            { { $as_echo "$as_me:$LINENO: error: pthreads headers or functions not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: pthreads headers or functions not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
           else
-            { echo "$as_me:$LINENO: result: no: pthread headers or functions not found" >&5
-echo "${ECHO_T}no: pthread headers or functions not found" >&6; }
+            { $as_echo "$as_me:$LINENO: result: no: pthread headers or functions not found" >&5
+$as_echo "no: pthread headers or functions not found" >&6; }
           fi
         fi
       else
-        { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
         build_pthreads="no"
       fi
 
 else
 
-    { echo "$as_me:$LINENO: result: $build_pthreads" >&5
-echo "${ECHO_T}$build_pthreads" >&6; }
+    { $as_echo "$as_me:$LINENO: result: $build_pthreads" >&5
+$as_echo "$build_pthreads" >&6; }
     if test "x$build_pthreads" = "xyes" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -32199,22 +34142,22 @@ fi
 #######################################
 ## Pipe Renderer
 build_pipe_render="no"
-{ echo "$as_me:$LINENO: checking whether to build Threaded Pipe Rendering support" >&5
-echo $ECHO_N "checking whether to build Threaded Pipe Rendering support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build Threaded Pipe Rendering support" >&5
+$as_echo_n "checking whether to build Threaded Pipe Rendering support... " >&6; }
 # Check whether --enable-pipe-render was given.
 if test "${enable_pipe_render+set}" = set; then
   enableval=$enable_pipe_render;  build_pipe_render=$enableval
 
 fi
 
-{ echo "$as_me:$LINENO: result: $build_pipe_render" >&5
-echo "${ECHO_T}$build_pipe_render" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $build_pipe_render" >&5
+$as_echo "$build_pipe_render" >&6; }
 
-{ echo "$as_me:$LINENO: checking whether we can build Threaded Pipe Rendering support" >&5
-echo $ECHO_N "checking whether we can build Threaded Pipe Rendering support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we can build Threaded Pipe Rendering support" >&5
+$as_echo_n "checking whether we can build Threaded Pipe Rendering support... " >&6; }
 if test \( "x$build_pipe_render" = "xyes" -o "x$build_pipe_render" = "xauto" \); then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_PIPE_RENDER 1
@@ -32223,30 +34166,30 @@ _ACEOF
   build_pipe_render="yes"
   need_pthreads="yes"
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
   build_pipe_render="no"
 fi
 
 #######################################
 ## Async events
 build_async_events="auto"
-{ echo "$as_me:$LINENO: checking whether to build Async Events support" >&5
-echo $ECHO_N "checking whether to build Async Events support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build Async Events support" >&5
+$as_echo_n "checking whether to build Async Events support... " >&6; }
 # Check whether --enable-async-events was given.
 if test "${enable_async_events+set}" = set; then
   enableval=$enable_async_events;  build_async_events=$enableval
 
 fi
 
-{ echo "$as_me:$LINENO: result: $build_async_events" >&5
-echo "${ECHO_T}$build_async_events" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $build_async_events" >&5
+$as_echo "$build_async_events" >&6; }
 
-{ echo "$as_me:$LINENO: checking whether we can build Async Events support" >&5
-echo $ECHO_N "checking whether we can build Async Events support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we can build Async Events support" >&5
+$as_echo_n "checking whether we can build Async Events support... " >&6; }
 if test \( "x$build_async_events" = "xyes" -o "x$build_async_events" = "xauto" \) -a "x$has_pthreads" = "xyes"; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_ASYNC_EVENTS 1
@@ -32255,30 +34198,30 @@ _ACEOF
   build_async_events="yes"
   need_pthreads="yes"
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
   build_async_events="no"
 fi
 
 #######################################
 ## Async image preload
 build_async_preload="auto"
-{ echo "$as_me:$LINENO: checking whether to build Async Image Preload support" >&5
-echo $ECHO_N "checking whether to build Async Image Preload support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build Async Image Preload support" >&5
+$as_echo_n "checking whether to build Async Image Preload support... " >&6; }
 # Check whether --enable-async-preload was given.
 if test "${enable_async_preload+set}" = set; then
   enableval=$enable_async_preload;  build_async_preload=$enableval
 
 fi
 
-{ echo "$as_me:$LINENO: result: $build_async_preload" >&5
-echo "${ECHO_T}$build_async_preload" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $build_async_preload" >&5
+$as_echo "$build_async_preload" >&6; }
 
-{ echo "$as_me:$LINENO: checking whether we can build Async Image Preload support" >&5
-echo $ECHO_N "checking whether we can build Async Image Preload support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we can build Async Image Preload support" >&5
+$as_echo_n "checking whether we can build Async Image Preload support... " >&6; }
 if test \( "x$build_async_preload" = "xyes" -o "x$build_async_preload" = "xauto" \) -a "x$build_async_events" = "xyes"; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_ASYNC_PRELOAD 1
@@ -32287,23 +34230,23 @@ _ACEOF
   build_async_preload="yes"
   need_pthreads="yes"
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
   build_async_preload="no"
 fi
 
 #######################################
 ## Link with pthread if needed
-{ echo "$as_me:$LINENO: checking whether we should link with pthread" >&5
-echo $ECHO_N "checking whether we should link with pthread... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we should link with pthread" >&5
+$as_echo_n "checking whether we should link with pthread... " >&6; }
 if test "x$need_pthreads" = "xyes"; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
   pthread_cflags=""
   pthread_libs="-lpthread"
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 #######################################
@@ -32317,14 +34260,14 @@ case $host_cpu in
     build_cpu_mmx="yes"
     ;;
 esac
-{ echo "$as_me:$LINENO: checking whether to build mmx code" >&5
-echo $ECHO_N "checking whether to build mmx code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build mmx code" >&5
+$as_echo_n "checking whether to build mmx code... " >&6; }
 # Check whether --enable-cpu-mmx was given.
 if test "${enable_cpu_mmx+set}" = set; then
   enableval=$enable_cpu_mmx;
       if test "x$enableval" = "xyes" ; then
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_MMX 1
@@ -32332,15 +34275,15 @@ _ACEOF
 
         build_cpu_mmx="yes"
       else
-        { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
         build_cpu_mmx="no"
       fi
 
 else
 
-    { echo "$as_me:$LINENO: result: $build_cpu_mmx" >&5
-echo "${ECHO_T}$build_cpu_mmx" >&6; }
+    { $as_echo "$as_me:$LINENO: result: $build_cpu_mmx" >&5
+$as_echo "$build_cpu_mmx" >&6; }
     if test "x$build_cpu_mmx" = "xyes" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -32364,14 +34307,14 @@ case $host_cpu in
     build_cpu_sse="yes"
     ;;
 esac
-{ echo "$as_me:$LINENO: checking whether to build sse code" >&5
-echo $ECHO_N "checking whether to build sse code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build sse code" >&5
+$as_echo_n "checking whether to build sse code... " >&6; }
 # Check whether --enable-cpu-sse was given.
 if test "${enable_cpu_sse+set}" = set; then
   enableval=$enable_cpu_sse;
       if test "x$enableval" = "xyes" ; then
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_SSE 1
@@ -32379,15 +34322,15 @@ _ACEOF
 
         build_cpu_sse="yes"
       else
-        { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
         build_cpu_sse="no"
       fi
 
 else
 
-    { echo "$as_me:$LINENO: result: $build_cpu_sse" >&5
-echo "${ECHO_T}$build_cpu_sse" >&6; }
+    { $as_echo "$as_me:$LINENO: result: $build_cpu_sse" >&5
+$as_echo "$build_cpu_sse" >&6; }
     if test "x$build_cpu_sse" = "xyes" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -32409,8 +34352,8 @@ case $host_cpu in
     ;;
 esac
 altivec_cflags=""
-{ echo "$as_me:$LINENO: checking whether to build altivec code" >&5
-echo $ECHO_N "checking whether to build altivec code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build altivec code" >&5
+$as_echo_n "checking whether to build altivec code... " >&6; }
 # Check whether --enable-cpu-altivec was given.
 if test "${enable_cpu_altivec+set}" = set; then
   enableval=$enable_cpu_altivec;  build_cpu_altivec=$enableval
@@ -32423,22 +34366,22 @@ else
 
 fi
 
-{ echo "$as_me:$LINENO: result: $build_cpu_altivec" >&5
-echo "${ECHO_T}$build_cpu_altivec" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $build_cpu_altivec" >&5
+$as_echo "$build_cpu_altivec" >&6; }
 
 if test "x$build_cpu_altivec" = "xyes"; then
    if test "${ac_cv_header_altivec_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for altivec.h" >&5
-echo $ECHO_N "checking for altivec.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for altivec.h" >&5
+$as_echo_n "checking for altivec.h... " >&6; }
 if test "${ac_cv_header_altivec_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
-echo "${ECHO_T}$ac_cv_header_altivec_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
+$as_echo "$ac_cv_header_altivec_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking altivec.h usability" >&5
-echo $ECHO_N "checking altivec.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking altivec.h usability" >&5
+$as_echo_n "checking altivec.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -32454,32 +34397,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking altivec.h presence" >&5
-echo $ECHO_N "checking altivec.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking altivec.h presence" >&5
+$as_echo_n "checking altivec.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -32493,51 +34437,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: altivec.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: altivec.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: altivec.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: altivec.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: altivec.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: altivec.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: altivec.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: altivec.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: altivec.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: altivec.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: altivec.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: altivec.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: altivec.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -32546,18 +34491,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for altivec.h" >&5
-echo $ECHO_N "checking for altivec.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for altivec.h" >&5
+$as_echo_n "checking for altivec.h... " >&6; }
 if test "${ac_cv_header_altivec_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_altivec_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
-echo "${ECHO_T}$ac_cv_header_altivec_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
+$as_echo "$ac_cv_header_altivec_h" >&6; }
 
 fi
-if test $ac_cv_header_altivec_h = yes; then
+if test "x$ac_cv_header_altivec_h" = x""yes; then
 
 
 cat >>confdefs.h <<\_ACEOF
@@ -32579,17 +34524,17 @@ else
        CPPFLAGS=$CPPFLAGS" -maltivec"
        unset ac_cv_header_altivec_h
        if test "${ac_cv_header_altivec_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for altivec.h" >&5
-echo $ECHO_N "checking for altivec.h... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for altivec.h" >&5
+$as_echo_n "checking for altivec.h... " >&6; }
 if test "${ac_cv_header_altivec_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
-echo "${ECHO_T}$ac_cv_header_altivec_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
+$as_echo "$ac_cv_header_altivec_h" >&6; }
 else
   # Is the header compilable?
-{ echo "$as_me:$LINENO: checking altivec.h usability" >&5
-echo $ECHO_N "checking altivec.h usability... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking altivec.h usability" >&5
+$as_echo_n "checking altivec.h usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -32605,32 +34550,33 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   ac_header_compiler=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_header_compiler=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
 # Is the header present?
-{ echo "$as_me:$LINENO: checking altivec.h presence" >&5
-echo $ECHO_N "checking altivec.h presence... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking altivec.h presence" >&5
+$as_echo_n "checking altivec.h presence... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -32644,51 +34590,52 @@ case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then
   ac_header_preproc=yes
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
   ac_header_preproc=no
 fi
 
 rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+{ $as_echo "$as_me:$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: )
-    { echo "$as_me:$LINENO: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: altivec.h: proceeding with the compiler's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: altivec.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: altivec.h: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: altivec.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: altivec.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: altivec.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: altivec.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: altivec.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: altivec.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: altivec.h: in the future, the compiler will take precedence" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: altivec.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: altivec.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: altivec.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: altivec.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: altivec.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: altivec.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: altivec.h: in the future, the compiler will take precedence" >&2;}
     ( cat <<\_ASBOX
 ## -------------------------------------------------------- ##
 ## Report this to enlightenment-devel at lists.sourceforge.net ##
@@ -32697,18 +34644,18 @@ _ASBOX
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-{ echo "$as_me:$LINENO: checking for altivec.h" >&5
-echo $ECHO_N "checking for altivec.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for altivec.h" >&5
+$as_echo_n "checking for altivec.h... " >&6; }
 if test "${ac_cv_header_altivec_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_header_altivec_h=$ac_header_preproc
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
-echo "${ECHO_T}$ac_cv_header_altivec_h" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_altivec_h" >&5
+$as_echo "$ac_cv_header_altivec_h" >&6; }
 
 fi
-if test $ac_cv_header_altivec_h = yes; then
+if test "x$ac_cv_header_altivec_h" = x""yes; then
 
 
 cat >>confdefs.h <<\_ACEOF
@@ -32725,8 +34672,8 @@ _ACEOF
 else
 
             if test "x$build_cpu_altivec" = "xyes" -a "x$use_strict" = "xyes" ; then
-              { { echo "$as_me:$LINENO: error: Altivec not found (strict dependencies checking)" >&5
-echo "$as_me: error: Altivec not found (strict dependencies checking)" >&2;}
+              { { $as_echo "$as_me:$LINENO: error: Altivec not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Altivec not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
             fi
             build_cpu_altivec="no"
@@ -32745,8 +34692,8 @@ fi
 fi
 
 if test "x$build_cpu_altivec" = "xyes"; then
-   { echo "$as_me:$LINENO: checking whether to use altivec compiler flag" >&5
-echo $ECHO_N "checking whether to use altivec compiler flag... $ECHO_C" >&6; }
+   { $as_echo "$as_me:$LINENO: checking whether to use altivec compiler flag" >&5
+$as_echo_n "checking whether to use altivec compiler flag... " >&6; }
    if test "x$GCC" = "xyes"; then
       if echo "int main(){return 0;}" | ${CPP} -faltivec - > /dev/null 2>&1; then
          altivec_cflags="-faltivec"
@@ -32764,8 +34711,8 @@ _ACEOF
 
       fi
    fi
-  { echo "$as_me:$LINENO: result: $altivec_cflags" >&5
-echo "${ECHO_T}$altivec_cflags" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $altivec_cflags" >&5
+$as_echo "$altivec_cflags" >&6; }
    CFLAGS="$CFLAGS $altivec_cflags"
 fi
 
@@ -32777,14 +34724,14 @@ case $host_cpu in
     build_cpu_neon="yes"
     ;;
 esac
-{ echo "$as_me:$LINENO: checking whether to build neon code" >&5
-echo $ECHO_N "checking whether to build neon code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build neon code" >&5
+$as_echo_n "checking whether to build neon code... " >&6; }
 # Check whether --enable-cpu-neon was given.
 if test "${enable_cpu_neon+set}" = set; then
   enableval=$enable_cpu_neon;
       if test "x$enableval" = "xyes" ; then
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_NEON 1
@@ -32792,15 +34739,15 @@ _ACEOF
 
         build_cpu_neon="yes"
       else
-        { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
         build_cpu_neon="no"
       fi
 
 else
 
-    { echo "$as_me:$LINENO: result: $build_cpu_neon" >&5
-echo "${ECHO_T}$build_cpu_neon" >&6; }
+    { $as_echo "$as_me:$LINENO: result: $build_cpu_neon" >&5
+$as_echo "$build_cpu_neon" >&6; }
     if test "x$build_cpu_neon" = "xyes" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -32816,14 +34763,14 @@ fi
 #######################################
 ## C
 build_cpu_c="yes"
-{ echo "$as_me:$LINENO: checking whether to build c code" >&5
-echo $ECHO_N "checking whether to build c code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build c code" >&5
+$as_echo_n "checking whether to build c code... " >&6; }
 # Check whether --enable-cpu-c was given.
 if test "${enable_cpu_c+set}" = set; then
   enableval=$enable_cpu_c;
       if test "x$enableval" = "xyes" ; then
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_C 1
@@ -32831,15 +34778,15 @@ _ACEOF
 
         build_cpu_c="yes"
       else
-        { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
         build_cpu_c="no"
       fi
 
 else
 
-      { echo "$as_me:$LINENO: result: $build_cpu_c" >&5
-echo "${ECHO_T}$build_cpu_c" >&6; }
+      { $as_echo "$as_me:$LINENO: result: $build_cpu_c" >&5
+$as_echo "$build_cpu_c" >&6; }
       if test "x$build_cpu_c" = "xyes" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -32855,16 +34802,16 @@ fi
 #######################################
 ## MAGIC_DEBUG
 want_evas_magic_debug="yes"
-{ echo "$as_me:$LINENO: checking whether to check magic for evas object" >&5
-echo $ECHO_N "checking whether to check magic for evas object... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to check magic for evas object" >&5
+$as_echo_n "checking whether to check magic for evas object... " >&6; }
 # Check whether --enable-evas-magic-debug was given.
 if test "${enable_evas_magic_debug+set}" = set; then
   enableval=$enable_evas_magic_debug;  want_evas_magic_debug="$enableval"
 
 fi
 
-{ echo "$as_me:$LINENO: result: $want_evas_magic_debug" >&5
-echo "${ECHO_T}$want_evas_magic_debug" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $want_evas_magic_debug" >&5
+$as_echo "$want_evas_magic_debug" >&6; }
 
  if test "x$want_evas_magic_debug" = "xyes"; then
   EVAS_MAGIC_DEBUG_TRUE=
@@ -32903,10 +34850,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build sampling scaler" >&5
-echo $ECHO_N "checking whether to build sampling scaler... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_scaler_option_scale_sample}" >&5
-echo "${ECHO_T}${_efl_enable_scaler_option_scale_sample}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build sampling scaler" >&5
+$as_echo_n "checking whether to build sampling scaler... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_scaler_option_scale_sample}" >&5
+$as_echo "${_efl_enable_scaler_option_scale_sample}" >&6; }
 
 if test "x${_efl_enable_scaler_option_scale_sample}" = "xyes" ; then
 
@@ -32942,10 +34889,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build smooth scaler" >&5
-echo $ECHO_N "checking whether to build smooth scaler... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_scaler_option_scale_smooth}" >&5
-echo "${ECHO_T}${_efl_enable_scaler_option_scale_smooth}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build smooth scaler" >&5
+$as_echo_n "checking whether to build smooth scaler... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_scaler_option_scale_smooth}" >&5
+$as_echo "${_efl_enable_scaler_option_scale_smooth}" >&6; }
 
 if test "x${_efl_enable_scaler_option_scale_smooth}" = "xyes" ; then
 
@@ -32969,14 +34916,14 @@ fi
 ## YUV -> ARGB converter
 conv_yuv="no"
 conv_yuv="yes"
-{ echo "$as_me:$LINENO: checking whether to build yuv converter code" >&5
-echo $ECHO_N "checking whether to build yuv converter code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build yuv converter code" >&5
+$as_echo_n "checking whether to build yuv converter code... " >&6; }
 # Check whether --enable-convert-yuv was given.
 if test "${enable_convert_yuv+set}" = set; then
   enableval=$enable_convert_yuv;
       if test "x$enableval" = "xyes" ; then
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define BUILD_CONVERT_YUV 1
@@ -32984,15 +34931,15 @@ _ACEOF
 
         conv_yuv="yes"
       else
-        { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+        { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
         conv_yuv="no"
       fi
 
 else
 
-      { echo "$as_me:$LINENO: result: $conv_yuv" >&5
-echo "${ECHO_T}$conv_yuv" >&6; }
+      { $as_echo "$as_me:$LINENO: result: $conv_yuv" >&5
+$as_echo "$conv_yuv" >&6; }
       if test "x$conv_yuv" = "xyes" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -33026,10 +34973,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build small dither mask" >&5
-echo $ECHO_N "checking whether to build small dither mask... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_dither_option_small_dither_mask}" >&5
-echo "${ECHO_T}${_efl_enable_dither_option_small_dither_mask}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build small dither mask" >&5
+$as_echo_n "checking whether to build small dither mask... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_dither_option_small_dither_mask}" >&5
+$as_echo "${_efl_enable_dither_option_small_dither_mask}" >&6; }
 
 if test "x${_efl_enable_dither_option_small_dither_mask}" = "xyes" ; then
 
@@ -33065,10 +35012,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build line dither mask" >&5
-echo $ECHO_N "checking whether to build line dither mask... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_dither_option_line_dither_mask}" >&5
-echo "${ECHO_T}${_efl_enable_dither_option_line_dither_mask}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build line dither mask" >&5
+$as_echo_n "checking whether to build line dither mask... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_dither_option_line_dither_mask}" >&5
+$as_echo "${_efl_enable_dither_option_line_dither_mask}" >&6; }
 
 if test "x${_efl_enable_dither_option_line_dither_mask}" = "xyes" ; then
 
@@ -33104,10 +35051,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build conversion to 16bpp without dither mask" >&5
-echo $ECHO_N "checking whether to build conversion to 16bpp without dither mask... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_dither_option_no_dither_mask}" >&5
-echo "${ECHO_T}${_efl_enable_dither_option_no_dither_mask}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build conversion to 16bpp without dither mask" >&5
+$as_echo_n "checking whether to build conversion to 16bpp without dither mask... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_dither_option_no_dither_mask}" >&5
+$as_echo "${_efl_enable_dither_option_no_dither_mask}" >&6; }
 
 if test "x${_efl_enable_dither_option_no_dither_mask}" = "xyes" ; then
 
@@ -33144,10 +35091,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 332 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 332 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_332" >&5
-echo "${ECHO_T}$conv_8_rgb_332" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 332 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 332 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_332" >&5
+$as_echo "$conv_8_rgb_332" >&6; }
 
 if test "x$conv_8_rgb_332" = "xyes" ; then
 
@@ -33177,10 +35124,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 666 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 666 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_666" >&5
-echo "${ECHO_T}$conv_8_rgb_666" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 666 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 666 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_666" >&5
+$as_echo "$conv_8_rgb_666" >&6; }
 
 if test "x$conv_8_rgb_666" = "xyes" ; then
 
@@ -33210,10 +35157,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 232 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 232 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_232" >&5
-echo "${ECHO_T}$conv_8_rgb_232" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 232 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 232 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_232" >&5
+$as_echo "$conv_8_rgb_232" >&6; }
 
 if test "x$conv_8_rgb_232" = "xyes" ; then
 
@@ -33243,10 +35190,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 222 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 222 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_222" >&5
-echo "${ECHO_T}$conv_8_rgb_222" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 222 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 222 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_222" >&5
+$as_echo "$conv_8_rgb_222" >&6; }
 
 if test "x$conv_8_rgb_222" = "xyes" ; then
 
@@ -33276,10 +35223,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 221 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 221 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_221" >&5
-echo "${ECHO_T}$conv_8_rgb_221" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 221 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 221 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_221" >&5
+$as_echo "$conv_8_rgb_221" >&6; }
 
 if test "x$conv_8_rgb_221" = "xyes" ; then
 
@@ -33309,10 +35256,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 121 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 121 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_121" >&5
-echo "${ECHO_T}$conv_8_rgb_121" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 121 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 121 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_121" >&5
+$as_echo "$conv_8_rgb_121" >&6; }
 
 if test "x$conv_8_rgb_121" = "xyes" ; then
 
@@ -33342,10 +35289,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 8bpp RGB 111 converter code" >&5
-echo $ECHO_N "checking whether to build 8bpp RGB 111 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_8_rgb_111" >&5
-echo "${ECHO_T}$conv_8_rgb_111" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp RGB 111 converter code" >&5
+$as_echo_n "checking whether to build 8bpp RGB 111 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_rgb_111" >&5
+$as_echo "$conv_8_rgb_111" >&6; }
 
 if test "x$conv_8_rgb_111" = "xyes" ; then
 
@@ -33375,10 +35322,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB 565 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB 565 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_565" >&5
-echo "${ECHO_T}$conv_16_rgb_565" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB 565 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB 565 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_565" >&5
+$as_echo "$conv_16_rgb_565" >&6; }
 
 if test "x$conv_16_rgb_565" = "xyes" ; then
 
@@ -33408,10 +35355,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp BGR 565 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp BGR 565 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_bgr_565" >&5
-echo "${ECHO_T}$conv_16_bgr_565" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp BGR 565 converter code" >&5
+$as_echo_n "checking whether to build 16bpp BGR 565 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_bgr_565" >&5
+$as_echo "$conv_16_bgr_565" >&6; }
 
 if test "x$conv_16_bgr_565" = "xyes" ; then
 
@@ -33441,10 +35388,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB 555 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB 555 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_555" >&5
-echo "${ECHO_T}$conv_16_rgb_555" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB 555 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB 555 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_555" >&5
+$as_echo "$conv_16_rgb_555" >&6; }
 
 if test "x$conv_16_rgb_555" = "xyes" ; then
 
@@ -33474,10 +35421,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB 444 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB 444 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_444" >&5
-echo "${ECHO_T}$conv_16_rgb_444" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB 444 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB 444 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_444" >&5
+$as_echo "$conv_16_rgb_444" >&6; }
 
 if test "x$conv_16_rgb_444" = "xyes" ; then
 
@@ -33495,8 +35442,8 @@ fi
 #######################################
 ## Convert to 16bpp RGB 565 (444 ipaq)
 conv_16_rgb_ipq="yes"
-{ echo "$as_me:$LINENO: checking whether to build 16bpp 565 (444 ipaq) converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp 565 (444 ipaq) converter code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp 565 (444 ipaq) converter code" >&5
+$as_echo_n "checking whether to build 16bpp 565 (444 ipaq) converter code... " >&6; }
 # Check whether --enable-convert-16-rgb-ipq was given.
 if test "${enable_convert_16_rgb_ipq+set}" = set; then
   enableval=$enable_convert_16_rgb_ipq;
@@ -33524,8 +35471,8 @@ _ACEOF
 
 fi
 
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_ipq" >&5
-echo "${ECHO_T}$conv_16_rgb_ipq" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_ipq" >&5
+$as_echo "$conv_16_rgb_ipq" >&6; }
 
 #######################################
 ## Convert to 16bpp RGB with rotation of 0
@@ -33544,10 +35491,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 0 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB rotation 0 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_rot_0" >&5
-echo "${ECHO_T}$conv_16_rgb_rot_0" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 0 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB rotation 0 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_rot_0" >&5
+$as_echo "$conv_16_rgb_rot_0" >&6; }
 
 if test "x$conv_16_rgb_rot_0" = "xyes" ; then
 
@@ -33577,10 +35524,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 180 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB rotation 180 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_rot_180" >&5
-echo "${ECHO_T}$conv_16_rgb_rot_180" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 180 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB rotation 180 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_rot_180" >&5
+$as_echo "$conv_16_rgb_rot_180" >&6; }
 
 if test "x$conv_16_rgb_rot_180" = "xyes" ; then
 
@@ -33610,10 +35557,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 270 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB rotation 270 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_rot_270" >&5
-echo "${ECHO_T}$conv_16_rgb_rot_270" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 270 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB rotation 270 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_rot_270" >&5
+$as_echo "$conv_16_rgb_rot_270" >&6; }
 
 if test "x$conv_16_rgb_rot_270" = "xyes" ; then
 
@@ -33643,10 +35590,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 90 converter code" >&5
-echo $ECHO_N "checking whether to build 16bpp RGB rotation 90 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_16_rgb_rot_90" >&5
-echo "${ECHO_T}$conv_16_rgb_rot_90" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 16bpp RGB rotation 90 converter code" >&5
+$as_echo_n "checking whether to build 16bpp RGB rotation 90 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_16_rgb_rot_90" >&5
+$as_echo "$conv_16_rgb_rot_90" >&6; }
 
 if test "x$conv_16_rgb_rot_90" = "xyes" ; then
 
@@ -33678,10 +35625,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 24bpp RGB 888 converter code" >&5
-echo $ECHO_N "checking whether to build 24bpp RGB 888 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_24_rgb_888" >&5
-echo "${ECHO_T}$conv_24_rgb_888" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 24bpp RGB 888 converter code" >&5
+$as_echo_n "checking whether to build 24bpp RGB 888 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_24_rgb_888" >&5
+$as_echo "$conv_24_rgb_888" >&6; }
 
 if test "x$conv_24_rgb_888" = "xyes" ; then
 
@@ -33711,10 +35658,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 24bpp BGR 888 converter code" >&5
-echo $ECHO_N "checking whether to build 24bpp BGR 888 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_24_bgr_888" >&5
-echo "${ECHO_T}$conv_24_bgr_888" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 24bpp BGR 888 converter code" >&5
+$as_echo_n "checking whether to build 24bpp BGR 888 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_24_bgr_888" >&5
+$as_echo "$conv_24_bgr_888" >&6; }
 
 if test "x$conv_24_bgr_888" = "xyes" ; then
 
@@ -33744,10 +35691,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp RGB 8888 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp RGB 8888 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_rgb_8888" >&5
-echo "${ECHO_T}$conv_32_rgb_8888" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp RGB 8888 converter code" >&5
+$as_echo_n "checking whether to build 32bpp RGB 8888 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgb_8888" >&5
+$as_echo "$conv_32_rgb_8888" >&6; }
 
 if test "x$conv_32_rgb_8888" = "xyes" ; then
 
@@ -33777,10 +35724,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp RGBX 8888 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp RGBX 8888 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_rgbx_8888" >&5
-echo "${ECHO_T}$conv_32_rgbx_8888" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp RGBX 8888 converter code" >&5
+$as_echo_n "checking whether to build 32bpp RGBX 8888 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgbx_8888" >&5
+$as_echo "$conv_32_rgbx_8888" >&6; }
 
 if test "x$conv_32_rgbx_8888" = "xyes" ; then
 
@@ -33810,10 +35757,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp BGR 8888 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp BGR 8888 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_bgr_8888" >&5
-echo "${ECHO_T}$conv_32_bgr_8888" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp BGR 8888 converter code" >&5
+$as_echo_n "checking whether to build 32bpp BGR 8888 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_bgr_8888" >&5
+$as_echo "$conv_32_bgr_8888" >&6; }
 
 if test "x$conv_32_bgr_8888" = "xyes" ; then
 
@@ -33843,10 +35790,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp BGRX 8888 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp BGRX 8888 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_bgrx_8888" >&5
-echo "${ECHO_T}$conv_32_bgrx_8888" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp BGRX 8888 converter code" >&5
+$as_echo_n "checking whether to build 32bpp BGRX 8888 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_bgrx_8888" >&5
+$as_echo "$conv_32_bgrx_8888" >&6; }
 
 if test "x$conv_32_bgrx_8888" = "xyes" ; then
 
@@ -33864,8 +35811,8 @@ fi
 #######################################
 ## Convert to 24bpp RGB 666 (666 ezx)
 conv_24_rgb_ezx="yes"
-{ echo "$as_me:$LINENO: checking whether to build 24bpp 666 (666 ezx) converter code" >&5
-echo $ECHO_N "checking whether to build 24bpp 666 (666 ezx) converter code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 24bpp 666 (666 ezx) converter code" >&5
+$as_echo_n "checking whether to build 24bpp 666 (666 ezx) converter code... " >&6; }
 # Check whether --enable-convert-24-rgb-ezx was given.
 if test "${enable_convert_24_rgb_ezx+set}" = set; then
   enableval=$enable_convert_24_rgb_ezx;
@@ -33893,14 +35840,14 @@ _ACEOF
 
 fi
 
-{ echo "$as_me:$LINENO: result: $conv_24_rgb_ezx" >&5
-echo "${ECHO_T}$conv_24_rgb_ezx" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_24_rgb_ezx" >&5
+$as_echo "$conv_24_rgb_ezx" >&6; }
 
 #######################################
 ## Convert to 32bpp RGB 666 (666 ezx)
 conv_32_rgb_ezx="yes"
-{ echo "$as_me:$LINENO: checking whether to build 32bpp 666 (666 ezx) converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp 666 (666 ezx) converter code... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp 666 (666 ezx) converter code" >&5
+$as_echo_n "checking whether to build 32bpp 666 (666 ezx) converter code... " >&6; }
 # Check whether --enable-convert-32-rgb-ezx was given.
 if test "${enable_convert_32_rgb_ezx+set}" = set; then
   enableval=$enable_convert_32_rgb_ezx;
@@ -33928,8 +35875,8 @@ _ACEOF
 
 fi
 
-{ echo "$as_me:$LINENO: result: $conv_32_rgb_ezx" >&5
-echo "${ECHO_T}$conv_32_rgb_ezx" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgb_ezx" >&5
+$as_echo "$conv_32_rgb_ezx" >&6; }
 
 #######################################
 ## Convert to 32bpp RGB with rotation of 0
@@ -33948,10 +35895,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 0 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp RGB rotation 0 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_rgb_rot_0" >&5
-echo "${ECHO_T}$conv_32_rgb_rot_0" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 0 converter code" >&5
+$as_echo_n "checking whether to build 32bpp RGB rotation 0 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgb_rot_0" >&5
+$as_echo "$conv_32_rgb_rot_0" >&6; }
 
 if test "x$conv_32_rgb_rot_0" = "xyes" ; then
 
@@ -33981,10 +35928,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 180 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp RGB rotation 180 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_rgb_rot_180" >&5
-echo "${ECHO_T}$conv_32_rgb_rot_180" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 180 converter code" >&5
+$as_echo_n "checking whether to build 32bpp RGB rotation 180 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgb_rot_180" >&5
+$as_echo "$conv_32_rgb_rot_180" >&6; }
 
 if test "x$conv_32_rgb_rot_180" = "xyes" ; then
 
@@ -34014,10 +35961,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 270 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp RGB rotation 270 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_rgb_rot_270" >&5
-echo "${ECHO_T}$conv_32_rgb_rot_270" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 270 converter code" >&5
+$as_echo_n "checking whether to build 32bpp RGB rotation 270 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgb_rot_270" >&5
+$as_echo "$conv_32_rgb_rot_270" >&6; }
 
 if test "x$conv_32_rgb_rot_270" = "xyes" ; then
 
@@ -34047,10 +35994,10 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 90 converter code" >&5
-echo $ECHO_N "checking whether to build 32bpp RGB rotation 90 converter code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $conv_32_rgb_rot_90" >&5
-echo "${ECHO_T}$conv_32_rgb_rot_90" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build 32bpp RGB rotation 90 converter code" >&5
+$as_echo_n "checking whether to build 32bpp RGB rotation 90 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_32_rgb_rot_90" >&5
+$as_echo "$conv_32_rgb_rot_90" >&6; }
 
 if test "x$conv_32_rgb_rot_90" = "xyes" ; then
 
@@ -34065,36 +36012,139 @@ fi
 
 
 
+#######################################
+## Convert to 8bpp grayscale with 256 value, no palette
+
+
+conv_8_gry_1="no"
+
+
+  # Check whether --enable-convert-8-gry-1 was given.
+if test "${enable_convert_8_gry_1+set}" = set; then
+  enableval=$enable_convert_8_gry_1;  conv_8_gry_1=$enableval
+else
+   conv_8_gry_1=yes
+
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp GRY 1 converter code" >&5
+$as_echo_n "checking whether to build 8bpp GRY 1 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_gry_1" >&5
+$as_echo "$conv_8_gry_1" >&6; }
+
+if test "x$conv_8_gry_1" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_CONVERT_8_GRY_1 1
+_ACEOF
+
+fi
+
+
+
+
+
+## Convert to 8bpp grayscale with 16 value, no palette
+
+
+conv_8_gry_16="no"
+
+
+  # Check whether --enable-convert-8-gry-16 was given.
+if test "${enable_convert_8_gry_16+set}" = set; then
+  enableval=$enable_convert_8_gry_16;  conv_8_gry_16=$enableval
+else
+   conv_8_gry_16=yes
+
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp GRY 16 converter code" >&5
+$as_echo_n "checking whether to build 8bpp GRY 16 converter code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $conv_8_gry_16" >&5
+$as_echo "$conv_8_gry_16" >&6; }
+
+if test "x$conv_8_gry_16" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_CONVERT_8_GRY_16 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+#######################################
+## Convert to 8bpp grayscale, 64-palette
+conv_8_grayscale_64="yes"
+{ $as_echo "$as_me:$LINENO: checking whether to build 8bpp grayscale 64-palette converter code" >&5
+$as_echo_n "checking whether to build 8bpp grayscale 64-palette converter code... " >&6; }
+# Check whether --enable-convert-8-grayscale-64 was given.
+if test "${enable_convert_8_grayscale_64+set}" = set; then
+  enableval=$enable_convert_8_grayscale_64;
+     if test "$enableval" = "xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_CONVERT_8_GRAYSCALE_64 1
+_ACEOF
+
+       conv_8_grayscale_64="yes"
+     else
+       conv_8_grayscale_64="no"
+     fi
+
+else
+
+     if test "x$conv_8_grayscale_64" = "xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_CONVERT_8_GRAYSCALE_64 1
+_ACEOF
+
+     fi
+
+
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $conv_8_grayscale_64" >&5
+$as_echo "$conv_8_grayscale_64" >&6; }
+
 ## valgrind
 want_valgrind="no"
 have_valgrind="no"
 
-{ echo "$as_me:$LINENO: checking whether to enable build with valgrind" >&5
-echo $ECHO_N "checking whether to enable build with valgrind... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable build with valgrind" >&5
+$as_echo_n "checking whether to enable build with valgrind... " >&6; }
 # Check whether --enable-valgrind was given.
 if test "${enable_valgrind+set}" = set; then
   enableval=$enable_valgrind;  want_valgrind=$enableval
 
 fi
 
-{ echo "$as_me:$LINENO: result: $want_valgrind" >&5
-echo "${ECHO_T}$want_valgrind" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $want_valgrind" >&5
+$as_echo "$want_valgrind" >&6; }
 
 if test x$want_valgrind = "xyes"; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for VALGRIND" >&5
-echo $ECHO_N "checking for VALGRIND... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for VALGRIND" >&5
+$as_echo_n "checking for VALGRIND... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$VALGRIND_CFLAGS"; then
         pkg_cv_VALGRIND_CFLAGS="$VALGRIND_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"valgrind >= 2.4.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"valgrind >= 2.4.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "valgrind >= 2.4.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_VALGRIND_CFLAGS=`$PKG_CONFIG --cflags "valgrind >= 2.4.0" 2>/dev/null`
 else
@@ -34109,10 +36159,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_VALGRIND_LIBS="$VALGRIND_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"valgrind >= 2.4.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"valgrind >= 2.4.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "valgrind >= 2.4.0") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   pkg_cv_VALGRIND_LIBS=`$PKG_CONFIG --libs "valgrind >= 2.4.0" 2>/dev/null`
 else
@@ -34140,12 +36190,12 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$VALGRIND_PKG_ERRORS" >&5
 
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
       if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then
-        { { echo "$as_me:$LINENO: error: Valgrind not found (strict dependencies checking)" >&5
-echo "$as_me: error: Valgrind not found (strict dependencies checking)" >&2;}
+        { { $as_echo "$as_me:$LINENO: error: Valgrind not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Valgrind not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
       fi
 
@@ -34153,8 +36203,8 @@ echo "$as_me: error: Valgrind not found (strict dependencies checking)" >&2;}
 elif test $pkg_failed = untried; then
 
       if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then
-        { { echo "$as_me:$LINENO: error: Valgrind not found (strict dependencies checking)" >&5
-echo "$as_me: error: Valgrind not found (strict dependencies checking)" >&2;}
+        { { $as_echo "$as_me:$LINENO: error: Valgrind not found (strict dependencies checking)" >&5
+$as_echo "$as_me: error: Valgrind not found (strict dependencies checking)" >&2;}
    { (exit 1); exit 1; }; }
       fi
 
@@ -34162,8 +36212,8 @@ echo "$as_me: error: Valgrind not found (strict dependencies checking)" >&2;}
 else
 	VALGRIND_CFLAGS=$pkg_cv_VALGRIND_CFLAGS
 	VALGRIND_LIBS=$pkg_cv_VALGRIND_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
 
 
 cat >>confdefs.h <<\_ACEOF
@@ -34171,6 +36221,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
       have_valgrind=yes
+      requirement_evas="valgrind ${requirement_evas}"
 
 fi
 fi
@@ -34183,6 +36234,7 @@ fi
 
 
 
+
 #####################################################################
 ## Output
 
@@ -34215,11 +36267,12 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:$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= ;; #(
       *) $as_unset $ac_var ;;
       esac ;;
     esac
@@ -34252,12 +36305,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     test "x$cache_file" != "x/dev/null" &&
-      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
     cat confcache >$cache_file
   else
-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -34273,7 +36326,7 @@ ac_ltlibobjs=
 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=`echo "$ac_i" | sed "$ac_script"`
+  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.
   ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -34285,474 +36338,476 @@ LTLIBOBJS=$ac_ltlibobjs
 
 
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"AMDEP\" was never defined.
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EFL_BUILD_DOC_TRUE}" && test -z "${EFL_BUILD_DOC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EFL_BUILD_DOC\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EFL_BUILD_DOC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EFL_BUILD_DOC\" was never defined.
+$as_echo "$as_me: error: conditional \"EFL_BUILD_DOC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+
 if test -z "${EVAS_CSERVE_TRUE}" && test -z "${EVAS_CSERVE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_CSERVE\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_CSERVE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_CSERVE\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_CSERVE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_BUFFER_TRUE}" && test -z "${BUILD_ENGINE_BUFFER_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_BUFFER\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_BUFFER\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_BUFFER\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_BUFFER\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_BUFFER_TRUE}" && test -z "${EVAS_STATIC_BUILD_BUFFER_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_BUFFER\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_BUFFER\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_BUFFER\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_BUFFER\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_XLIB_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_XLIB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_XLIB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_XLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_XLIB\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_XLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_XLIB_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_XLIB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XLIB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XLIB\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_XRENDER_X11_TRUE}" && test -z "${BUILD_ENGINE_XRENDER_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_XRENDER_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_XRENDER_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_XRENDER_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_XRENDER_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_XRENDER_X11_TRUE}" && test -z "${EVAS_STATIC_BUILD_XRENDER_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_XRENDER_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_XRENDER_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_XRENDER_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_XRENDER_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_GL_X11_TRUE}" && test -z "${BUILD_ENGINE_GL_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_GL_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_GL_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_GL_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_GL_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_GL_X11_TRUE}" && test -z "${EVAS_STATIC_BUILD_GL_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_GL_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_GL_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_GL_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_GL_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_XCB_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_XCB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_XCB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_XCB\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_XCB_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_XCB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XCB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XCB\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_XRENDER_XCB_TRUE}" && test -z "${BUILD_ENGINE_XRENDER_XCB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_XRENDER_XCB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_XRENDER_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_XRENDER_XCB\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_XRENDER_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_XRENDER_XCB_TRUE}" && test -z "${EVAS_STATIC_BUILD_XRENDER_XCB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_XRENDER_XCB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_XRENDER_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_XRENDER_XCB\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_XRENDER_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_GDI_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_GDI_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_GDI\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_GDI\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_GDI\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_GDI\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GDI\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GDI\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GDI\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GDI\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_DDRAW_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_DDRAW_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_DDRAW\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_DDRAW\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_DDRAW\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_DDRAW\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_DIRECT3D_TRUE}" && test -z "${BUILD_ENGINE_DIRECT3D_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_DIRECT3D\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_DIRECT3D\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_DIRECT3D\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_DIRECT3D\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_DIRECT3D_TRUE}" && test -z "${EVAS_STATIC_BUILD_DIRECT3D_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_DIRECT3D\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_DIRECT3D\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_DIRECT3D\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_DIRECT3D\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_QUARTZ_TRUE}" && test -z "${BUILD_ENGINE_QUARTZ_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_QUARTZ\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_QUARTZ\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_QUARTZ\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_QUARTZ\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_QUARTZ_TRUE}" && test -z "${EVAS_STATIC_BUILD_QUARTZ_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_QUARTZ\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_QUARTZ\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_QUARTZ\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_QUARTZ\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_GL_GLEW_TRUE}" && test -z "${BUILD_ENGINE_GL_GLEW_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_GL_GLEW\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_GL_GLEW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_GL_GLEW\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_GL_GLEW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_GL_GLEW_TRUE}" && test -z "${EVAS_STATIC_BUILD_GL_GLEW_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_GL_GLEW\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_GL_GLEW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_GL_GLEW\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_GL_GLEW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_SDL_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_SDL_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_SDL\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_SDL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_SDL\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_SDL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_SDL\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_SDL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_SDL\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_SDL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_FB_TRUE}" && test -z "${BUILD_ENGINE_FB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_FB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_FB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_FB\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_FB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_FB_TRUE}" && test -z "${EVAS_STATIC_BUILD_FB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_FB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_FB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_FB\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_FB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_DIRECTFB_TRUE}" && test -z "${BUILD_ENGINE_DIRECTFB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_DIRECTFB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_DIRECTFB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_DIRECTFB\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_DIRECTFB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_DIRECTFB_TRUE}" && test -z "${EVAS_STATIC_BUILD_DIRECTFB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_DIRECTFB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_DIRECTFB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_DIRECTFB\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_DIRECTFB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_16_X11_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_16_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_X11_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_16_DDRAW_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16_DDRAW\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16_DDRAW\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_16_WINCE_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_16_WINCE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16_WINCE\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16_WINCE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16_WINCE\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16_WINCE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_WINCE\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_WINCE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_WINCE\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16_WINCE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_GL_COMMON_TRUE}" && test -z "${BUILD_ENGINE_GL_COMMON_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_GL_COMMON\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_GL_COMMON\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_GL_COMMON\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_GL_COMMON\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GENERIC\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GENERIC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GENERIC\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_GENERIC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_X11_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_X11\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_X11\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_X11\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_ENGINE_SOFTWARE_16_TRUE}" && test -z "${BUILD_ENGINE_SOFTWARE_16_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ENGINE_SOFTWARE_16\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_ENGINE_SOFTWARE_16\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_TRUE}" && test -z "${EVAS_STATIC_BUILD_SOFTWARE_16_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SOFTWARE_16\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_EDB_TRUE}" && test -z "${BUILD_LOADER_EDB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_EDB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_EDB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_EDB\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_EDB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_EDB_TRUE}" && test -z "${EVAS_STATIC_BUILD_EDB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_EDB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_EDB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_EDB\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_EDB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_EET_TRUE}" && test -z "${BUILD_LOADER_EET_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_EET\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_EET\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_EET\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_EET\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_EET_TRUE}" && test -z "${EVAS_STATIC_BUILD_EET_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_EET\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_EET\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_EET\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_EET\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_GIF_TRUE}" && test -z "${BUILD_LOADER_GIF_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_GIF\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_GIF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_GIF\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_GIF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_GIF_TRUE}" && test -z "${EVAS_STATIC_BUILD_GIF_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_GIF\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_GIF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_GIF\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_GIF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_JPEG_TRUE}" && test -z "${BUILD_LOADER_JPEG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_JPEG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_JPEG\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_JPEG_TRUE}" && test -z "${EVAS_STATIC_BUILD_JPEG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_JPEG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_JPEG\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_SAVER_JPEG_TRUE}" && test -z "${BUILD_SAVER_JPEG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_SAVER_JPEG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_SAVER_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_SAVER_JPEG\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_SAVER_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_PMAPS_TRUE}" && test -z "${BUILD_LOADER_PMAPS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_PMAPS\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_PMAPS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_PMAPS\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_PMAPS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_PMAPS_TRUE}" && test -z "${EVAS_STATIC_BUILD_PMAPS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_PMAPS\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_PMAPS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_PMAPS\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_PMAPS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_PNG_TRUE}" && test -z "${BUILD_LOADER_PNG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_PNG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_PNG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_PNG\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_PNG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_PNG_TRUE}" && test -z "${EVAS_STATIC_BUILD_PNG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_PNG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_PNG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_PNG\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_PNG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_SVG_TRUE}" && test -z "${BUILD_LOADER_SVG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_SVG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_SVG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_SVG\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_SVG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_SVG_TRUE}" && test -z "${EVAS_STATIC_BUILD_SVG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SVG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_SVG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SVG\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_SVG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_TIFF_TRUE}" && test -z "${BUILD_LOADER_TIFF_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_TIFF\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_TIFF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_TIFF\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_TIFF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_TIFF_TRUE}" && test -z "${EVAS_STATIC_BUILD_TIFF_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_TIFF\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_TIFF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_TIFF\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_TIFF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${BUILD_LOADER_XPM_TRUE}" && test -z "${BUILD_LOADER_XPM_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_XPM\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LOADER_XPM\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"BUILD_LOADER_XPM\" was never defined.
+$as_echo "$as_me: error: conditional \"BUILD_LOADER_XPM\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_STATIC_BUILD_XPM_TRUE}" && test -z "${EVAS_STATIC_BUILD_XPM_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_XPM\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_STATIC_BUILD_XPM\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_XPM\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_STATIC_BUILD_XPM\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EVAS_MAGIC_DEBUG_TRUE}" && test -z "${EVAS_MAGIC_DEBUG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EVAS_MAGIC_DEBUG\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EVAS_MAGIC_DEBUG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EVAS_MAGIC_DEBUG\" was never defined.
+$as_echo "$as_me: error: conditional \"EVAS_MAGIC_DEBUG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 : ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -34765,7 +36820,7 @@ ac_cs_silent=false
 SHELL=\${CONFIG_SHELL-$SHELL}
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ## --------------------- ##
 ## M4sh Initialization.  ##
 ## --------------------- ##
@@ -34775,7 +36830,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
 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
+  # 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
@@ -34797,17 +36852,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
+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
-    PATH_SEPARATOR=:
+    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
-  rm -f conf$$.sh
+  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.
@@ -34823,8 +36906,6 @@ fi
 # 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.)
-as_nl='
-'
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
@@ -34847,7 +36928,7 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   { (exit 1); exit 1; }
 fi
 
@@ -34860,17 +36941,10 @@ PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
 
 # Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1 &&
@@ -34892,7 +36966,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -34943,7 +37017,7 @@ $as_unset CDPATH
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+    { $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
@@ -34971,7 +37045,6 @@ case `echo -n x` in
 *)
   ECHO_N='-n';;
 esac
-
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -34984,19 +37057,22 @@ if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-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 ||
+  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'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
+  fi
 else
   as_ln_s='cp -p'
 fi
@@ -35021,10 +37097,10 @@ else
   as_test_x='
     eval sh -c '\''
       if test -d "$1"; then
-        test -d "$1/.";
+	test -d "$1/.";
       else
 	case $1 in
-        -*)set "./$1";;
+	-*)set "./$1";;
 	esac;
 	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
 	???[sx]*):;;*)false;;esac;fi
@@ -35046,8 +37122,8 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by evas $as_me 0.9.9.062, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+This file was extended by evas $as_me 0.9.9.063, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -35060,7 +37136,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<_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"
@@ -35068,22 +37153,23 @@ config_commands="$ac_config_commands"
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
 \`$as_me' instantiates files from templates according to the
 current configuration.
 
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [FILE]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
-  -q, --quiet      do not print progress messages
+  -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
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
 
 Configuration files:
 $config_files
@@ -35097,13 +37183,13 @@ $config_commands
 Report bugs to <bug-autoconf at gnu.org>."
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-evas config.status 0.9.9.062
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+evas config.status 0.9.9.063
+configured by $0, generated by GNU Autoconf 2.63,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
-Copyright (C) 2006 Free Software Foundation, Inc.
+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."
 
@@ -35111,11 +37197,12 @@ ac_pwd='$ac_pwd'
 srcdir='$srcdir'
 INSTALL='$INSTALL'
 MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
+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
@@ -35137,30 +37224,36 @@ do
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    echo "$ac_cs_version"; exit ;;
+    $as_echo "$ac_cs_version"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    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
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    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
-    { echo "$as_me: error: ambiguous option: $1
+    { $as_echo "$as_me: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&2
    { (exit 1); exit 1; }; };;
   --help | --hel | -h )
-    echo "$ac_cs_usage"; exit ;;
+    $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.
-  -*) { echo "$as_me: error: unrecognized option: $1
+  -*) { $as_echo "$as_me: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&2
    { (exit 1); exit 1; }; } ;;
 
@@ -35179,27 +37272,29 @@ if $ac_cs_silent; then
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  CONFIG_SHELL=$SHELL
+  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 $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  exec "\$@"
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<\_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
-  echo "$ac_log"
+  $as_echo "$ac_log"
 } >&5
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #
 # INIT-COMMANDS
 #
@@ -35559,7 +37654,7 @@ fi
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 
 # Handling of arguments.
 for ac_config_target in $ac_config_targets
@@ -35646,8 +37741,8 @@ do
     "README") CONFIG_FILES="$CONFIG_FILES README" ;;
     "evas.spec") CONFIG_FILES="$CONFIG_FILES evas.spec" ;;
 
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+  *) { { $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
@@ -35688,528 +37783,144 @@ $debug ||
   (umask 077 && mkdir "$tmp")
 } ||
 {
-   echo "$me: cannot create a temporary directory in ." >&2
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
    { (exit 1); exit 1; }
 }
 
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
+# 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
 
-_ACEOF
-
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-build!$build$ac_delim
-build_cpu!$build_cpu$ac_delim
-build_vendor!$build_vendor$ac_delim
-build_os!$build_os$ac_delim
-host!$host$ac_delim
-host_cpu!$host_cpu$ac_delim
-host_vendor!$host_vendor$ac_delim
-host_os!$host_os$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-INSTALL_DATA!$INSTALL_DATA$ac_delim
-am__isrc!$am__isrc$ac_delim
-CYGPATH_W!$CYGPATH_W$ac_delim
-PACKAGE!$PACKAGE$ac_delim
-VERSION!$VERSION$ac_delim
-ACLOCAL!$ACLOCAL$ac_delim
-AUTOCONF!$AUTOCONF$ac_delim
-AUTOMAKE!$AUTOMAKE$ac_delim
-AUTOHEADER!$AUTOHEADER$ac_delim
-MAKEINFO!$MAKEINFO$ac_delim
-install_sh!$install_sh$ac_delim
-STRIP!$STRIP$ac_delim
-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-mkdir_p!$mkdir_p$ac_delim
-AWK!$AWK$ac_delim
-SET_MAKE!$SET_MAKE$ac_delim
-am__leading_dot!$am__leading_dot$ac_delim
-AMTAR!$AMTAR$ac_delim
-am__tar!$am__tar$ac_delim
-am__untar!$am__untar$ac_delim
-DEPDIR!$DEPDIR$ac_delim
-am__include!$am__include$ac_delim
-am__quote!$am__quote$ac_delim
-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
-CCDEPMODE!$CCDEPMODE$ac_delim
-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
-AS!$AS$ac_delim
-DLLTOOL!$DLLTOOL$ac_delim
-OBJDUMP!$OBJDUMP$ac_delim
-LIBTOOL!$LIBTOOL$ac_delim
-SED!$SED$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-FGREP!$FGREP$ac_delim
-LD!$LD$ac_delim
-DUMPBIN!$DUMPBIN$ac_delim
-ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim
-NM!$NM$ac_delim
-LN_S!$LN_S$ac_delim
-AR!$AR$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
+ac_cr='
'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/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
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-CEOF$ac_eof
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
 _ACEOF
 
 
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-RANLIB!$RANLIB$ac_delim
-lt_ECHO!$lt_ECHO$ac_delim
-DSYMUTIL!$DSYMUTIL$ac_delim
-NMEDIT!$NMEDIT$ac_delim
-LIPO!$LIPO$ac_delim
-OTOOL!$OTOOL$ac_delim
-OTOOL64!$OTOOL64$ac_delim
-CPP!$CPP$ac_delim
-version_info!$version_info$ac_delim
-release_info!$release_info$ac_delim
-MODULE_ARCH!$MODULE_ARCH$ac_delim
-CXX!$CXX$ac_delim
-CXXFLAGS!$CXXFLAGS$ac_delim
-ac_ct_CXX!$ac_ct_CXX$ac_delim
-CXXDEPMODE!$CXXDEPMODE$ac_delim
-am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
-am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
-CXXCPP!$CXXCPP$ac_delim
-PKG_CONFIG!$PKG_CONFIG$ac_delim
-efl_have_doxygen!$efl_have_doxygen$ac_delim
-efl_doxygen!$efl_doxygen$ac_delim
-EFL_BUILD_DOC_TRUE!$EFL_BUILD_DOC_TRUE$ac_delim
-EFL_BUILD_DOC_FALSE!$EFL_BUILD_DOC_FALSE$ac_delim
-EVIL_CFLAGS!$EVIL_CFLAGS$ac_delim
-EVIL_LIBS!$EVIL_LIBS$ac_delim
-EINA_CFLAGS!$EINA_CFLAGS$ac_delim
-EINA_LIBS!$EINA_LIBS$ac_delim
-FREETYPE_CFLAGS!$FREETYPE_CFLAGS$ac_delim
-FREETYPE_LIBS!$FREETYPE_LIBS$ac_delim
-FONTCONFIG_CFLAGS!$FONTCONFIG_CFLAGS$ac_delim
-FONTCONFIG_LIBS!$FONTCONFIG_LIBS$ac_delim
-FRIBIDI_CFLAGS!$FRIBIDI_CFLAGS$ac_delim
-FRIBIDI_LIBS!$FRIBIDI_LIBS$ac_delim
-WIN32_CPPFLAGS!$WIN32_CPPFLAGS$ac_delim
-WIN32_CFLAGS!$WIN32_CFLAGS$ac_delim
-lt_enable_auto_import!$lt_enable_auto_import$ac_delim
-ALLOCA!$ALLOCA$ac_delim
-dlopen_libs!$dlopen_libs$ac_delim
-EVAS_CSERVE_TRUE!$EVAS_CSERVE_TRUE$ac_delim
-EVAS_CSERVE_FALSE!$EVAS_CSERVE_FALSE$ac_delim
-evas_engine_buffer_cflags!$evas_engine_buffer_cflags$ac_delim
-evas_engine_buffer_libs!$evas_engine_buffer_libs$ac_delim
-BUILD_ENGINE_BUFFER_TRUE!$BUILD_ENGINE_BUFFER_TRUE$ac_delim
-BUILD_ENGINE_BUFFER_FALSE!$BUILD_ENGINE_BUFFER_FALSE$ac_delim
-EVAS_STATIC_BUILD_BUFFER_TRUE!$EVAS_STATIC_BUILD_BUFFER_TRUE$ac_delim
-EVAS_STATIC_BUILD_BUFFER_FALSE!$EVAS_STATIC_BUILD_BUFFER_FALSE$ac_delim
-XMKMF!$XMKMF$ac_delim
-X_CFLAGS!$X_CFLAGS$ac_delim
-X_PRE_LIBS!$X_PRE_LIBS$ac_delim
-X_LIBS!$X_LIBS$ac_delim
-X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim
-evas_engine_software_xlib_cflags!$evas_engine_software_xlib_cflags$ac_delim
-evas_engine_software_xlib_libs!$evas_engine_software_xlib_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_XLIB_TRUE!$BUILD_ENGINE_SOFTWARE_XLIB_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_XLIB_FALSE!$BUILD_ENGINE_SOFTWARE_XLIB_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_XLIB_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_XLIB_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_XLIB_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_XLIB_FALSE$ac_delim
-evas_engine_xrender_x11_cflags!$evas_engine_xrender_x11_cflags$ac_delim
-evas_engine_xrender_x11_libs!$evas_engine_xrender_x11_libs$ac_delim
-BUILD_ENGINE_XRENDER_X11_TRUE!$BUILD_ENGINE_XRENDER_X11_TRUE$ac_delim
-BUILD_ENGINE_XRENDER_X11_FALSE!$BUILD_ENGINE_XRENDER_X11_FALSE$ac_delim
-EVAS_STATIC_BUILD_XRENDER_X11_TRUE!$EVAS_STATIC_BUILD_XRENDER_X11_TRUE$ac_delim
-EVAS_STATIC_BUILD_XRENDER_X11_FALSE!$EVAS_STATIC_BUILD_XRENDER_X11_FALSE$ac_delim
-evas_engine_gl_x11_cflags!$evas_engine_gl_x11_cflags$ac_delim
-evas_engine_gl_x11_libs!$evas_engine_gl_x11_libs$ac_delim
-BUILD_ENGINE_GL_X11_TRUE!$BUILD_ENGINE_GL_X11_TRUE$ac_delim
-BUILD_ENGINE_GL_X11_FALSE!$BUILD_ENGINE_GL_X11_FALSE$ac_delim
-EVAS_STATIC_BUILD_GL_X11_TRUE!$EVAS_STATIC_BUILD_GL_X11_TRUE$ac_delim
-EVAS_STATIC_BUILD_GL_X11_FALSE!$EVAS_STATIC_BUILD_GL_X11_FALSE$ac_delim
-XCB_CFLAGS!$XCB_CFLAGS$ac_delim
-XCB_LIBS!$XCB_LIBS$ac_delim
-evas_engine_software_xcb_cflags!$evas_engine_software_xcb_cflags$ac_delim
-evas_engine_software_xcb_libs!$evas_engine_software_xcb_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_XCB_TRUE!$BUILD_ENGINE_SOFTWARE_XCB_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_XCB_FALSE!$BUILD_ENGINE_SOFTWARE_XCB_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_XCB_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_XCB_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_XCB_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_XCB_FALSE$ac_delim
-XCBRENDER_CFLAGS!$XCBRENDER_CFLAGS$ac_delim
-XCBRENDER_LIBS!$XCBRENDER_LIBS$ac_delim
-evas_engine_xrender_xcb_cflags!$evas_engine_xrender_xcb_cflags$ac_delim
-evas_engine_xrender_xcb_libs!$evas_engine_xrender_xcb_libs$ac_delim
-BUILD_ENGINE_XRENDER_XCB_TRUE!$BUILD_ENGINE_XRENDER_XCB_TRUE$ac_delim
-BUILD_ENGINE_XRENDER_XCB_FALSE!$BUILD_ENGINE_XRENDER_XCB_FALSE$ac_delim
-EVAS_STATIC_BUILD_XRENDER_XCB_TRUE!$EVAS_STATIC_BUILD_XRENDER_XCB_TRUE$ac_delim
-EVAS_STATIC_BUILD_XRENDER_XCB_FALSE!$EVAS_STATIC_BUILD_XRENDER_XCB_FALSE$ac_delim
-evas_engine_software_gdi_cflags!$evas_engine_software_gdi_cflags$ac_delim
-evas_engine_software_gdi_libs!$evas_engine_software_gdi_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_GDI_TRUE!$BUILD_ENGINE_SOFTWARE_GDI_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_GDI_FALSE!$BUILD_ENGINE_SOFTWARE_GDI_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE$ac_delim
-evas_engine_software_ddraw_cflags!$evas_engine_software_ddraw_cflags$ac_delim
-evas_engine_software_ddraw_libs!$evas_engine_software_ddraw_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_DDRAW_TRUE!$BUILD_ENGINE_SOFTWARE_DDRAW_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_DDRAW_FALSE!$BUILD_ENGINE_SOFTWARE_DDRAW_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
    { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
-
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-CEOF$ac_eof
-_ACEOF
-
-
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-evas_engine_direct3d_cflags!$evas_engine_direct3d_cflags$ac_delim
-evas_engine_direct3d_libs!$evas_engine_direct3d_libs$ac_delim
-BUILD_ENGINE_DIRECT3D_TRUE!$BUILD_ENGINE_DIRECT3D_TRUE$ac_delim
-BUILD_ENGINE_DIRECT3D_FALSE!$BUILD_ENGINE_DIRECT3D_FALSE$ac_delim
-EVAS_STATIC_BUILD_DIRECT3D_TRUE!$EVAS_STATIC_BUILD_DIRECT3D_TRUE$ac_delim
-EVAS_STATIC_BUILD_DIRECT3D_FALSE!$EVAS_STATIC_BUILD_DIRECT3D_FALSE$ac_delim
-evas_engine_quartz_cflags!$evas_engine_quartz_cflags$ac_delim
-evas_engine_quartz_libs!$evas_engine_quartz_libs$ac_delim
-BUILD_ENGINE_QUARTZ_TRUE!$BUILD_ENGINE_QUARTZ_TRUE$ac_delim
-BUILD_ENGINE_QUARTZ_FALSE!$BUILD_ENGINE_QUARTZ_FALSE$ac_delim
-EVAS_STATIC_BUILD_QUARTZ_TRUE!$EVAS_STATIC_BUILD_QUARTZ_TRUE$ac_delim
-EVAS_STATIC_BUILD_QUARTZ_FALSE!$EVAS_STATIC_BUILD_QUARTZ_FALSE$ac_delim
-evas_engine_gl_glew_cflags!$evas_engine_gl_glew_cflags$ac_delim
-evas_engine_gl_glew_libs!$evas_engine_gl_glew_libs$ac_delim
-BUILD_ENGINE_GL_GLEW_TRUE!$BUILD_ENGINE_GL_GLEW_TRUE$ac_delim
-BUILD_ENGINE_GL_GLEW_FALSE!$BUILD_ENGINE_GL_GLEW_FALSE$ac_delim
-EVAS_STATIC_BUILD_GL_GLEW_TRUE!$EVAS_STATIC_BUILD_GL_GLEW_TRUE$ac_delim
-EVAS_STATIC_BUILD_GL_GLEW_FALSE!$EVAS_STATIC_BUILD_GL_GLEW_FALSE$ac_delim
-SDL_CFLAGS!$SDL_CFLAGS$ac_delim
-SDL_LIBS!$SDL_LIBS$ac_delim
-evas_engine_software_sdl_cflags!$evas_engine_software_sdl_cflags$ac_delim
-evas_engine_software_sdl_libs!$evas_engine_software_sdl_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_SDL_TRUE!$BUILD_ENGINE_SOFTWARE_SDL_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_SDL_FALSE!$BUILD_ENGINE_SOFTWARE_SDL_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE$ac_delim
-evas_engine_fb_cflags!$evas_engine_fb_cflags$ac_delim
-evas_engine_fb_libs!$evas_engine_fb_libs$ac_delim
-BUILD_ENGINE_FB_TRUE!$BUILD_ENGINE_FB_TRUE$ac_delim
-BUILD_ENGINE_FB_FALSE!$BUILD_ENGINE_FB_FALSE$ac_delim
-EVAS_STATIC_BUILD_FB_TRUE!$EVAS_STATIC_BUILD_FB_TRUE$ac_delim
-EVAS_STATIC_BUILD_FB_FALSE!$EVAS_STATIC_BUILD_FB_FALSE$ac_delim
-DIRECTFB_CFLAGS!$DIRECTFB_CFLAGS$ac_delim
-DIRECTFB_LIBS!$DIRECTFB_LIBS$ac_delim
-evas_engine_directfb_cflags!$evas_engine_directfb_cflags$ac_delim
-evas_engine_directfb_libs!$evas_engine_directfb_libs$ac_delim
-BUILD_ENGINE_DIRECTFB_TRUE!$BUILD_ENGINE_DIRECTFB_TRUE$ac_delim
-BUILD_ENGINE_DIRECTFB_FALSE!$BUILD_ENGINE_DIRECTFB_FALSE$ac_delim
-EVAS_STATIC_BUILD_DIRECTFB_TRUE!$EVAS_STATIC_BUILD_DIRECTFB_TRUE$ac_delim
-EVAS_STATIC_BUILD_DIRECTFB_FALSE!$EVAS_STATIC_BUILD_DIRECTFB_FALSE$ac_delim
-evas_engine_software_16_x11_cflags!$evas_engine_software_16_x11_cflags$ac_delim
-evas_engine_software_16_x11_libs!$evas_engine_software_16_x11_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_16_X11_TRUE!$BUILD_ENGINE_SOFTWARE_16_X11_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_16_X11_FALSE!$BUILD_ENGINE_SOFTWARE_16_X11_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_X11_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_16_X11_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_X11_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_16_X11_FALSE$ac_delim
-evas_engine_software_16_ddraw_cflags!$evas_engine_software_16_ddraw_cflags$ac_delim
-evas_engine_software_16_ddraw_libs!$evas_engine_software_16_ddraw_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE!$BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_16_DDRAW_FALSE!$BUILD_ENGINE_SOFTWARE_16_DDRAW_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE$ac_delim
-evas_engine_software_16_wince_cflags!$evas_engine_software_16_wince_cflags$ac_delim
-evas_engine_software_16_wince_libs!$evas_engine_software_16_wince_libs$ac_delim
-BUILD_ENGINE_SOFTWARE_16_WINCE_TRUE!$BUILD_ENGINE_SOFTWARE_16_WINCE_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_16_WINCE_FALSE!$BUILD_ENGINE_SOFTWARE_16_WINCE_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_FALSE$ac_delim
-evas_engine_gl_common_libs!$evas_engine_gl_common_libs$ac_delim
-BUILD_ENGINE_GL_COMMON_TRUE!$BUILD_ENGINE_GL_COMMON_TRUE$ac_delim
-BUILD_ENGINE_GL_COMMON_FALSE!$BUILD_ENGINE_GL_COMMON_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_GENERIC_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_GENERIC_FALSE$ac_delim
-BUILD_ENGINE_SOFTWARE_X11_TRUE!$BUILD_ENGINE_SOFTWARE_X11_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_X11_FALSE!$BUILD_ENGINE_SOFTWARE_X11_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_X11_FALSE$ac_delim
-have_evas_engine_software_xlib!$have_evas_engine_software_xlib$ac_delim
-have_evas_engine_software_xcb!$have_evas_engine_software_xcb$ac_delim
-BUILD_ENGINE_SOFTWARE_16_TRUE!$BUILD_ENGINE_SOFTWARE_16_TRUE$ac_delim
-BUILD_ENGINE_SOFTWARE_16_FALSE!$BUILD_ENGINE_SOFTWARE_16_FALSE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_TRUE!$EVAS_STATIC_BUILD_SOFTWARE_16_TRUE$ac_delim
-EVAS_STATIC_BUILD_SOFTWARE_16_FALSE!$EVAS_STATIC_BUILD_SOFTWARE_16_FALSE$ac_delim
-EDB_CFLAGS!$EDB_CFLAGS$ac_delim
-EDB_LIBS!$EDB_LIBS$ac_delim
-evas_image_loader_edb_cflags!$evas_image_loader_edb_cflags$ac_delim
-evas_image_loader_edb_libs!$evas_image_loader_edb_libs$ac_delim
-BUILD_LOADER_EDB_TRUE!$BUILD_LOADER_EDB_TRUE$ac_delim
-BUILD_LOADER_EDB_FALSE!$BUILD_LOADER_EDB_FALSE$ac_delim
-EVAS_STATIC_BUILD_EDB_TRUE!$EVAS_STATIC_BUILD_EDB_TRUE$ac_delim
-EVAS_STATIC_BUILD_EDB_FALSE!$EVAS_STATIC_BUILD_EDB_FALSE$ac_delim
-EET_CFLAGS!$EET_CFLAGS$ac_delim
-EET_LIBS!$EET_LIBS$ac_delim
-evas_image_loader_eet_cflags!$evas_image_loader_eet_cflags$ac_delim
-evas_image_loader_eet_libs!$evas_image_loader_eet_libs$ac_delim
-BUILD_LOADER_EET_TRUE!$BUILD_LOADER_EET_TRUE$ac_delim
-BUILD_LOADER_EET_FALSE!$BUILD_LOADER_EET_FALSE$ac_delim
-EVAS_STATIC_BUILD_EET_TRUE!$EVAS_STATIC_BUILD_EET_TRUE$ac_delim
-EVAS_STATIC_BUILD_EET_FALSE!$EVAS_STATIC_BUILD_EET_FALSE$ac_delim
-evas_image_loader_gif_cflags!$evas_image_loader_gif_cflags$ac_delim
-evas_image_loader_gif_libs!$evas_image_loader_gif_libs$ac_delim
-BUILD_LOADER_GIF_TRUE!$BUILD_LOADER_GIF_TRUE$ac_delim
-BUILD_LOADER_GIF_FALSE!$BUILD_LOADER_GIF_FALSE$ac_delim
-EVAS_STATIC_BUILD_GIF_TRUE!$EVAS_STATIC_BUILD_GIF_TRUE$ac_delim
-EVAS_STATIC_BUILD_GIF_FALSE!$EVAS_STATIC_BUILD_GIF_FALSE$ac_delim
-evas_image_loader_jpeg_cflags!$evas_image_loader_jpeg_cflags$ac_delim
-evas_image_loader_jpeg_libs!$evas_image_loader_jpeg_libs$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+  . ./conf$$subs.sh ||
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
    { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
-
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-CEOF$ac_eof
-_ACEOF
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-BUILD_LOADER_JPEG_TRUE!$BUILD_LOADER_JPEG_TRUE$ac_delim
-BUILD_LOADER_JPEG_FALSE!$BUILD_LOADER_JPEG_FALSE$ac_delim
-EVAS_STATIC_BUILD_JPEG_TRUE!$EVAS_STATIC_BUILD_JPEG_TRUE$ac_delim
-EVAS_STATIC_BUILD_JPEG_FALSE!$EVAS_STATIC_BUILD_JPEG_FALSE$ac_delim
-BUILD_SAVER_JPEG_TRUE!$BUILD_SAVER_JPEG_TRUE$ac_delim
-BUILD_SAVER_JPEG_FALSE!$BUILD_SAVER_JPEG_FALSE$ac_delim
-evas_image_loader_pmaps_cflags!$evas_image_loader_pmaps_cflags$ac_delim
-evas_image_loader_pmaps_libs!$evas_image_loader_pmaps_libs$ac_delim
-BUILD_LOADER_PMAPS_TRUE!$BUILD_LOADER_PMAPS_TRUE$ac_delim
-BUILD_LOADER_PMAPS_FALSE!$BUILD_LOADER_PMAPS_FALSE$ac_delim
-EVAS_STATIC_BUILD_PMAPS_TRUE!$EVAS_STATIC_BUILD_PMAPS_TRUE$ac_delim
-EVAS_STATIC_BUILD_PMAPS_FALSE!$EVAS_STATIC_BUILD_PMAPS_FALSE$ac_delim
-PNG_CFLAGS!$PNG_CFLAGS$ac_delim
-PNG_LIBS!$PNG_LIBS$ac_delim
-evas_image_loader_png_cflags!$evas_image_loader_png_cflags$ac_delim
-evas_image_loader_png_libs!$evas_image_loader_png_libs$ac_delim
-BUILD_LOADER_PNG_TRUE!$BUILD_LOADER_PNG_TRUE$ac_delim
-BUILD_LOADER_PNG_FALSE!$BUILD_LOADER_PNG_FALSE$ac_delim
-EVAS_STATIC_BUILD_PNG_TRUE!$EVAS_STATIC_BUILD_PNG_TRUE$ac_delim
-EVAS_STATIC_BUILD_PNG_FALSE!$EVAS_STATIC_BUILD_PNG_FALSE$ac_delim
-SVG_CFLAGS!$SVG_CFLAGS$ac_delim
-SVG_LIBS!$SVG_LIBS$ac_delim
-evas_image_loader_svg_cflags!$evas_image_loader_svg_cflags$ac_delim
-evas_image_loader_svg_libs!$evas_image_loader_svg_libs$ac_delim
-BUILD_LOADER_SVG_TRUE!$BUILD_LOADER_SVG_TRUE$ac_delim
-BUILD_LOADER_SVG_FALSE!$BUILD_LOADER_SVG_FALSE$ac_delim
-EVAS_STATIC_BUILD_SVG_TRUE!$EVAS_STATIC_BUILD_SVG_TRUE$ac_delim
-EVAS_STATIC_BUILD_SVG_FALSE!$EVAS_STATIC_BUILD_SVG_FALSE$ac_delim
-evas_image_loader_tiff_cflags!$evas_image_loader_tiff_cflags$ac_delim
-evas_image_loader_tiff_libs!$evas_image_loader_tiff_libs$ac_delim
-BUILD_LOADER_TIFF_TRUE!$BUILD_LOADER_TIFF_TRUE$ac_delim
-BUILD_LOADER_TIFF_FALSE!$BUILD_LOADER_TIFF_FALSE$ac_delim
-EVAS_STATIC_BUILD_TIFF_TRUE!$EVAS_STATIC_BUILD_TIFF_TRUE$ac_delim
-EVAS_STATIC_BUILD_TIFF_FALSE!$EVAS_STATIC_BUILD_TIFF_FALSE$ac_delim
-evas_image_loader_xpm_cflags!$evas_image_loader_xpm_cflags$ac_delim
-evas_image_loader_xpm_libs!$evas_image_loader_xpm_libs$ac_delim
-BUILD_LOADER_XPM_TRUE!$BUILD_LOADER_XPM_TRUE$ac_delim
-BUILD_LOADER_XPM_FALSE!$BUILD_LOADER_XPM_FALSE$ac_delim
-EVAS_STATIC_BUILD_XPM_TRUE!$EVAS_STATIC_BUILD_XPM_TRUE$ac_delim
-EVAS_STATIC_BUILD_XPM_FALSE!$EVAS_STATIC_BUILD_XPM_FALSE$ac_delim
-EVAS_MAGIC_DEBUG_TRUE!$EVAS_MAGIC_DEBUG_TRUE$ac_delim
-EVAS_MAGIC_DEBUG_FALSE!$EVAS_MAGIC_DEBUG_FALSE$ac_delim
-VALGRIND_CFLAGS!$VALGRIND_CFLAGS$ac_delim
-VALGRIND_LIBS!$VALGRIND_LIBS$ac_delim
-altivec_cflags!$altivec_cflags$ac_delim
-pthread_cflags!$pthread_cflags$ac_delim
-pthread_libs!$pthread_libs$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 49; then
+  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
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
    { (exit 1); exit 1; }; }
   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 >>"\$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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
+}
+{
+  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
+}
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-4.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACAWK
 _ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
+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 < "$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; }; }
 _ACEOF
 
-
 # VPATH may cause trouble with some makes, so we remove $(srcdir),
 # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
@@ -36225,19 +37936,133 @@ s/^[^=]*=[	 ]*$//
 }'
 fi
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+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 >"$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_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+   { (exit 1); exit 1; }; }
+  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.
 
-for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
+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
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$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_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*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+  :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;;
@@ -36266,26 +38091,38 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+	   { { $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
-      ac_file_inputs="$ac_file_inputs $ac_f"
+      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 "`IFS=:
-	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    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"
-      { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
+      { $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";;
+    *:-:* | *:-) 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
@@ -36295,7 +38132,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
+$as_echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -36321,7 +38158,7 @@ echo X"$ac_file" |
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -36330,7 +38167,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -36351,17 +38188,17 @@ echo X"$as_dir" |
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
+  } || 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=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  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/ ;;
@@ -36406,12 +38243,13 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
   esac
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_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=
 
-case `sed -n '/datarootdir/ {
+ac_sed_dataroot='
+/datarootdir/ {
   p
   q
 }
@@ -36420,13 +38258,14 @@ case `sed -n '/datarootdir/ {
 /@infodir@/p
 /@localedir@/p
 /@mandir@/p
-' $ac_file_inputs` in
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { $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;}
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
   s&@datadir@&$datadir&g
   s&@docdir@&$docdir&g
@@ -36440,15 +38279,16 @@ _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
-  sed "$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
 $extrasub
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 :t
 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
+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
@@ -36459,121 +38299,60 @@ 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
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" | sed -f "$tmp/subs-4.sed" >$tmp/out
+"
+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"; } &&
-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { $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
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+$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
+  -) 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
   #
-_ACEOF
-
-# Transform confdefs.h into a sed script `conftest.defines', that
-# substitutes the proper values into config.h.in to produce config.h.
-rm -f conftest.defines conftest.tail
-# First, append a space to every undef/define line, to ease matching.
-echo 's/$/ /' >conftest.defines
-# Then, protect against being on the right side of a sed subst, or in
-# an unquoted here document, in config.status.  If some macros were
-# called several times there might be several #defines for the same
-# symbol, which is useless.  But do not sort them, since the last
-# AC_DEFINE must be honored.
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-# NAME is the cpp macro being defined, VALUE is the value it is being given.
-# PARAMS is the parameter list in the macro definition--in most cases, it's
-# just an empty string.
-ac_dA='s,^\\([	 #]*\\)[^	 ]*\\([	 ]*'
-ac_dB='\\)[	 (].*,\\1define\\2'
-ac_dC=' '
-ac_dD=' ,'
-
-uniq confdefs.h |
-  sed -n '
-	t rset
-	:rset
-	s/^[	 ]*#[	 ]*define[	 ][	 ]*//
-	t ok
-	d
-	:ok
-	s/[\\&,]/\\&/g
-	s/^\('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
-	s/^\('"$ac_word_re"'\)[	 ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
-  ' >>conftest.defines
-
-# Remove the space that was appended to ease matching.
-# Then 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.
-# (The regexp can be short, since the line contains either #define or #undef.)
-echo 's/ $//
-s,^[	 #]*u.*,/* & */,' >>conftest.defines
-
-# Break up conftest.defines:
-ac_max_sed_lines=50
-
-# First sed command is:	 sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-# Second one is:	 sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-# Third one will be:	 sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-# et cetera.
-ac_in='$ac_file_inputs'
-ac_out='"$tmp/out1"'
-ac_nxt='"$tmp/out2"'
-
-while :
-do
-  # Write a here document:
-    cat >>$CONFIG_STATUS <<_ACEOF
-    # First, check the format of the line:
-    cat >"\$tmp/defines.sed" <<\\CEOF
-/^[	 ]*#[	 ]*undef[	 ][	 ]*$ac_word_re[	 ]*\$/b def
-/^[	 ]*#[	 ]*define[	 ][	 ]*$ac_word_re[(	 ]/b def
-b
-:def
-_ACEOF
-  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
-  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
-  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
-  grep . conftest.tail >/dev/null || break
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines conftest.tail
-
-echo "ac_result=$ac_in" >>$CONFIG_STATUS
-cat >>$CONFIG_STATUS <<\_ACEOF
   if test x"$ac_file" != x-; then
-    echo "/* $configure_input  */" >"$tmp/config.h"
-    cat "$ac_result" >>"$tmp/config.h"
-    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
-      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
+    {
+      $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
+      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
-    echo "/* $configure_input  */"
-    cat "$ac_result"
+    $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
-  rm -f "$tmp/out12"
-# Compute $ac_file's index in $config_headers.
-_am_arg=$ac_file
+# 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
@@ -36588,7 +38367,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$_am_arg" : 'X\(//\)[^/]' \| \
 	 X"$_am_arg" : 'X\(//\)$' \| \
 	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$_am_arg" |
+$as_echo X"$_am_arg" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -36608,30 +38387,40 @@ echo X"$_am_arg" |
 	  s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
 
-  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
+  :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" ||
+    "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 ||
-echo X"$mf" |
+$as_echo X"$mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -36649,33 +38438,33 @@ echo X"$mf" |
 	    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" ||
+    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 ||
-echo X"$file" |
+$as_echo X"$file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -36693,7 +38482,7 @@ echo X"$file" |
 	    q
 	  }
 	  s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
+      { as_dir=$dirpart/$fdir
   case $as_dir in #(
   -*) as_dir=./$as_dir;;
   esac
@@ -36701,7 +38490,7 @@ echo X"$file" |
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -36710,7 +38499,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -36731,13 +38520,14 @@ echo X"$as_dir" |
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
+  } || 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"
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
   done
-done
+}
  ;;
     "libtool":C)
 
@@ -37557,6 +39347,11 @@ _ACEOF
 chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
 
 # configure is writing to config.log, and then calls config.status.
 # config.status does its own redirection, appending to config.log.
@@ -37578,6 +39373,10 @@ if test "$no_create" != yes; then
   # would make configure fail if this is the last instruction.
   $ac_cs_success || { (exit 1); exit 1; }
 fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
 
 
 #disabled for the release:
@@ -37604,7 +39403,7 @@ echo "Engines:"
 echo "  Software Memory Buffer.....: $have_evas_engine_buffer"
 echo "  Software X11...............: $have_evas_engine_software_x11 (Xlib: $have_evas_engine_software_xlib) (XCB: $have_evas_engine_software_xcb)"
 echo "  XRender X11................: $have_evas_engine_xrender_x11 (XCB: $have_evas_engine_xrender_xcb)"
-echo "  OpenGL X11.................: $have_evas_engine_gl_x11"
+echo "  OpenGL X11.................: $have_evas_engine_gl_x11 (GLES: $gl_flavor_gles) (SGX: $gles_variety_sgx) (s3c6410: $gles_variety_s3c6410)"
 #echo "  Cairo X11..................: $have_evas_engine_cairo_x11"
 echo "  Software GDI...............: $have_evas_engine_software_gdi"
 echo "  Software DirectDraw........: $have_evas_engine_software_ddraw"
@@ -37626,7 +39425,7 @@ echo "Image Loaders:"
 echo "  EDB.....................: $have_evas_image_loader_edb"
 echo "  EET.....................: $have_evas_image_loader_eet"
 echo "  GIF.....................: $have_evas_image_loader_gif"
-echo "  JPEG....................: $have_evas_image_loader_jpeg"
+echo "  JPEG....................: $have_evas_image_loader_jpeg (region: $have_jpeg_region)"
 echo "  PMAPS...................: $have_evas_image_loader_pmaps"
 echo "  PNG.....................: $have_evas_image_loader_png"
 echo "  SVG.....................: $have_evas_image_loader_svg"
@@ -37678,6 +39477,9 @@ echo "  8bpp RGB 222............: $conv_8_rgb_222"
 echo "  8bpp RGB 221............: $conv_8_rgb_221"
 echo "  8bpp RGB 121............: $conv_8_rgb_121"
 echo "  8bpp RGB 111............: $conv_8_rgb_111"
+echo "  8bpp Grayscale (256)....: $conv_8_gry_1"
+echo "  8bpp Grayscale (16).....: $conv_8_gry_16"
+echo "  8bpp Grayscale 64-pal...: $conv_8_grayscale_64"
 # FIXME: add grayscale and B&W support
 echo "  16bpp RGB 565...........: $conv_16_rgb_565"
 echo "  16bpp BGR 565...........: $conv_16_bgr_565"
diff --git a/configure.ac b/configure.ac
index 287ec98..6278653 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,8 @@
 # get rid of that stupid cache mechanism
 rm -f config.cache
 
-AC_INIT([evas], [0.9.9.062], [enlightenment-devel at lists.sourceforge.net])
+AC_INIT([evas], [0.9.9.063], [enlightenment-devel at lists.sourceforge.net])
+release="ver-svn-05"
 AC_PREREQ([2.52])
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_MACRO_DIR([m4])
@@ -9,8 +10,9 @@ AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
 AC_ISC_POSIX
 
-AM_INIT_AUTOMAKE(1.6 dist-bzip2)
-AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE([1.6 dist-bzip2])
+AM_CONFIG_HEADER([config.h])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
 AC_LIBTOOL_WIN32_DLL
 define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
@@ -26,7 +28,6 @@ AC_SUBST(version_info)
 
 ### Needed information
 
-release="ver-svn-03"
 case "$host_os" in
    mingw32ce* | cegcc*)
       MODULE_ARCH="$host_os-$host_cpu"
@@ -109,6 +110,8 @@ case "$host_os" in
       ;;
 esac
 
+requirement_evas=""
+
 
 ### Additional options to configure
 
@@ -140,6 +143,14 @@ AC_PROG_CC
 # pkg-config
 PKG_PROG_PKG_CONFIG
 
+# Check whether pkg-config supports Requires.private
+if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then
+   pkgconfig_requires_private="Requires.private"
+else
+   pkgconfig_requires_private="Requires"
+fi
+AC_SUBST(pkgconfig_requires_private)
+
 # doxygen program for documentation building
 EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
 
@@ -150,8 +161,9 @@ EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
 
 case "$host_os" in
    mingw* | cegcc*)
-   PKG_CHECK_MODULES([EVIL], [evil])
-   AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed])
+      PKG_CHECK_MODULES([EVIL], [evil])
+      AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed])
+      requirement_evas="evil ${requirement_evas}"
    ;;
 esac
 
@@ -163,6 +175,8 @@ PKG_CHECK_MODULES([EINA], [eina-0])
 # Freetype
 PKG_CHECK_MODULES([FREETYPE], [freetype2 >= 9.3.0])
 
+requirement_evas="freetype2 eina-0 ${requirement_evas}"
+
 ## optional dependencies
 
 # FontConfig
@@ -185,6 +199,7 @@ if test "x${want_fontconfig}" = "xyes" -o "x${want_fontconfig}" = "xauto" ; then
       [
        have_fontconfig="yes"
        AC_DEFINE(HAVE_FONTCONFIG, 1, [have fontconfig searching capabilities])
+       requirement_evas="fontconfig ${requirement_evas}"
       ],
       [
        if test "x${want_fontconfig}" = "xyes" -a "x${use_strict}" = "xyes" ; then
@@ -212,6 +227,7 @@ if test "x${want_fribidi}" = "xyes" -o "x${want_fribidi}" = "xauto" ; then
       [
        have_fribidi="yes"
        AC_DEFINE(HAVE_FRIBIDI, 1, [have fribidi support])
+       requirement_evas="fribidi ${requirement_evas}"
       ],
       [
        if test "x$want_fribidi" = "xyes" -a "x$use_strict" = "xyes" ; then
@@ -363,6 +379,68 @@ AM_CONDITIONAL([EVAS_CSERVE], [test "x${want_evas_cserve}" = "xyes"])
 
 
 
+#######################################
+## GL force flavor gles
+gl_flavor_gles="no"
+AC_MSG_CHECKING(whether to build GLES flavor of GL)
+AC_ARG_ENABLE(gl-flavor-gles,
+  AC_HELP_STRING([--enable-gl-flavor-gles], [enable gles falvor of gl instead of standard]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        gl_flavor_gles="yes"
+      else
+        AC_MSG_RESULT(no)
+        gl_flavor_gles="no"
+      fi
+  ], [
+      AC_MSG_RESULT(no)
+      gl_flavor_gles="no"
+  ]
+)
+
+#######################################
+## GLES variety sgx
+gles_variety_sgx="no"
+AC_MSG_CHECKING(whether to build GLES variety for SGX)
+AC_ARG_ENABLE(gles-variety-sgx,
+  AC_HELP_STRING([--enable-gles-variety-sgx], [GLES variety SGX 3D unit]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support])
+        gles_variety_sgx="yes"
+      else
+        AC_MSG_RESULT(no)
+        gles_variety_sgx="no"
+      fi
+  ], [
+      AC_MSG_RESULT(no)
+      gles_variety_sgx="no"
+  ]
+)
+
+#######################################
+## GLES variety s3c6410
+gles_variety_s3c6410="no"
+AC_MSG_CHECKING(whether to build GLES variety for s3c6410)
+AC_ARG_ENABLE(gles-variety-s3c6410,
+  AC_HELP_STRING([--enable-gles-variety-s3c6410], [GLES variety s3c6410 3D unit]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(GLES_VARIETY_S3C6410, 1, [Samsung S3c6410 GLES2 support])
+        gles_variety_s3c6410="yes"
+      else
+        AC_MSG_RESULT(no)
+        gles_variety_s3c6410="no"
+      fi
+  ], [
+      AC_MSG_RESULT(no)
+      gles_variety_s3c6410="no"
+  ]
+)
+
 #####################################################################
 ## Engines
 
@@ -419,15 +497,12 @@ have_evas_engine_gl_common="no"
 if test "x$have_evas_engine_gl_x11" = "xyes" -o "x$have_evas_engine_gl_glew" = "xyes"; then
    AC_DEFINE(BUILD_ENGINE_GL_COMMON, 1, [Generic OpenGL Rendering Support])
    have_evas_engine_gl_common="yes"
-   evas_engine_gl_common_libs="-lglu32"
-fi
-
-if test "x$have_evas_engine_gl_x11" = "xyes" ; then
-   evas_engine_gl_common_libs="-lGL -lGLU -lpthread"
+   evas_engine_gl_common_libs=""
 fi
 
 if test "x$have_evas_engine_gl_glew" = "xyes" ; then
-   evas_engine_gl_common_libs="-lglu32"
+   have_evas_engine_gl_common="yes"
+   evas_engine_gl_common_libs=""
 fi
 AC_SUBST([evas_engine_gl_common_libs])
 
@@ -1072,6 +1147,33 @@ EVAS_CONVERT_ROT(32, RGB, 270)
 ## Convert to 32bpp RGB with rotation of 90
 EVAS_CONVERT_ROT(32, RGB, 90)
 
+#######################################
+## Convert to 8bpp grayscale with 256 value, no palette
+EVAS_CONVERT_COLOR(8, GRY, 1)
+## Convert to 8bpp grayscale with 16 value, no palette
+EVAS_CONVERT_COLOR(8, GRY, 16)
+
+#######################################
+## Convert to 8bpp grayscale, 64-palette
+conv_8_grayscale_64="yes"
+AC_MSG_CHECKING(whether to build 8bpp grayscale 64-palette converter code)
+AC_ARG_ENABLE(convert-8-grayscale-64,
+  AC_HELP_STRING([--disable-convert-8-grayscale-64], [disable 8bpp grayscale 64-palette converter code]),
+  [
+     if test "$enableval" = "xyes"; then
+       AC_DEFINE(BUILD_CONVERT_8_GRAYSCALE_64, 1, [8bpp Grayscale 64-palette Converter Support])
+       conv_8_grayscale_64="yes"
+     else
+       conv_8_grayscale_64="no"
+     fi
+  ], [
+     if test "x$conv_8_grayscale_64" = "xyes"; then
+       AC_DEFINE(BUILD_CONVERT_8_GRAYSCALE_64, 1, [32bpp Grayscale 64-palette Converter Support])
+     fi
+  ]
+)
+AC_MSG_RESULT($conv_8_grayscale_64)
+
 ## valgrind
 want_valgrind="no"
 have_valgrind="no"
@@ -1088,6 +1190,7 @@ if test x$want_valgrind = "xyes"; then
     [
       AC_DEFINE(HAVE_VALGRIND, 1, [Valgrind support])
       have_valgrind=yes
+      requirement_evas="valgrind ${requirement_evas}"
     ],
     [
       if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then
@@ -1103,6 +1206,7 @@ fi
 AC_SUBST(altivec_cflags)
 AC_SUBST(pthread_cflags)
 AC_SUBST(pthread_libs)
+AC_SUBST(requirement_evas)
 
 
 #####################################################################
@@ -1212,7 +1316,7 @@ echo "Engines:"
 echo "  Software Memory Buffer.....: $have_evas_engine_buffer"
 echo "  Software X11...............: $have_evas_engine_software_x11 (Xlib: $have_evas_engine_software_xlib) (XCB: $have_evas_engine_software_xcb)"
 echo "  XRender X11................: $have_evas_engine_xrender_x11 (XCB: $have_evas_engine_xrender_xcb)"
-echo "  OpenGL X11.................: $have_evas_engine_gl_x11"
+echo "  OpenGL X11.................: $have_evas_engine_gl_x11 (GLES: $gl_flavor_gles) (SGX: $gles_variety_sgx) (s3c6410: $gles_variety_s3c6410)"
 #echo "  Cairo X11..................: $have_evas_engine_cairo_x11"
 echo "  Software GDI...............: $have_evas_engine_software_gdi"
 echo "  Software DirectDraw........: $have_evas_engine_software_ddraw"
@@ -1234,7 +1338,7 @@ echo "Image Loaders:"
 echo "  EDB.....................: $have_evas_image_loader_edb"
 echo "  EET.....................: $have_evas_image_loader_eet"
 echo "  GIF.....................: $have_evas_image_loader_gif"
-echo "  JPEG....................: $have_evas_image_loader_jpeg"
+echo "  JPEG....................: $have_evas_image_loader_jpeg (region: $have_jpeg_region)"
 echo "  PMAPS...................: $have_evas_image_loader_pmaps"
 echo "  PNG.....................: $have_evas_image_loader_png"
 echo "  SVG.....................: $have_evas_image_loader_svg"
@@ -1286,6 +1390,9 @@ echo "  8bpp RGB 222............: $conv_8_rgb_222"
 echo "  8bpp RGB 221............: $conv_8_rgb_221"
 echo "  8bpp RGB 121............: $conv_8_rgb_121"
 echo "  8bpp RGB 111............: $conv_8_rgb_111"
+echo "  8bpp Grayscale (256)....: $conv_8_gry_1"
+echo "  8bpp Grayscale (16).....: $conv_8_gry_16"
+echo "  8bpp Grayscale 64-pal...: $conv_8_grayscale_64"
 # FIXME: add grayscale and B&W support
 echo "  16bpp RGB 565...........: $conv_16_rgb_565"
 echo "  16bpp BGR 565...........: $conv_16_bgr_565"
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 2eede08..411090d 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -257,17 +257,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -281,8 +284,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/doc/e.css b/doc/e.css
index 604ee7f..07ebd1e 100644
--- a/doc/e.css
+++ b/doc/e.css
@@ -1,161 +1,436 @@
+/*
+    Author:
+        Andres Blanc <andresblanc at gmail.com>
+	DaveMDS Andreoli <dave at gurumeditation.it>
+
+    Supported Browsers:
+        ie7, opera9, konqueror4 and firefox3
+
+        Please use a different file for ie6, ie5, etc. hacks.
+*/
+
+
+/* Necessary to place the footer at the bottom of the page */
+html, body {
+	height: 100%;
+	margin: 0px;
+	padding: 0px;
+}
+
+#container {
+	min-height: 100%;
+	height: auto !important;
+	height: 100%;
+	margin: 0 auto -53px;
+}
+
+#footer, #push {
+	height: 53px;
+}
+
+
+* html #container {
+	height: 100%;
+}
+
+/* Prevent floating elements overflowing containers */
+.clear {
+	clear: both;
+	width: 0px;
+	height: 0px;
+}
+
+/* Flexible & centered layout from 750 to 960 pixels */
+.layout {
+	max-width: 960px;
+	min-width: 760px;
+	margin-left: auto;
+	margin-right: auto;
+}
+
 body {
-    background: url("b.png");
-    background-repeat: repeat-x;
-    background-position: top left;
-    background-color: #f4f4f4;
-    text-align: center;
-    font-family: sans-serif;
-    padding: 0;
-    margin: 0;
-}
-
-div.main {
-    margin: 1em auto;
-    vertical-align: top;
-    font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
-    color: #444444;
-    font-size: 0.8em;
-    text-align: justify;
-    width: 80%;
-}
-
-td.t { background-image:url("t.gif"); }
-td.t[class] { background-image:url("t.png"); }
-td.tl { background-image:url("tl.gif"); }
-td.tl[class] { background-image:url("tl.png"); }
-
-td.nav, td.lnav,  td.rnav {
-   align: middle;
-   text-align: center;
-   vertical-align: middle;
-   width: 100px;
-   height: 25px;
-   font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
-   color: #000000;
-   font-size: 9px;
-   font-weight: bold;
-   white-space: no-wrap;
-}  
-
-td.lnav[class] { background-image:url("n.png"); }
-td.lnav[class] { background-image:url("n.png"); }
-td.rnav { background-image:url("n.gif"); }
-td.rnav[class] { background-image:url("n.png"); }
-
-hr {
-    width: 200px;
-    height: 1px;
-    background: #dddddd;
-    border: 0;
-}
-
-p { color: #444444 ;}
-p.tiny, small {
-    color: #888888;
-    font-size: 0.5em;
-}
-
-h1 { 
-    text-align: center;
-    font-size: 1.3em; 
-}
-
-h2 { font-size: 1.1em; }
-h3 { font-size: 0.9em; }
-
-span.keyword { color: #008000; }
-span.keywordtype { color: #604020; }
-span.keywordflow { color: #e08000; }
-span.comment { color: #800000; }
-span.preprocessor { color: #806020; }
-span.stringliteral { color: #002080; }
-span.charliteral { color: #008080; }
-
-a:link {
-    color: #445566;
-    text-decoration: underline;
-}  
-   
-a:visited {
-    color: #667788;
-    text-decoration: underline;
-}  
-
-a:active {                
-    color: #88cccc;
-    text-decoration: none;
-}
-
-a:hover {
-    color: #112266;
-    text-decoration: underline;
-}  
-
-a.nav {
-    text-decoration: none;
-    display: block;
-}
- 
-a.nav:link, a.nav:visited { color: #888888; }
-a.nav:active { color: #000000; }
-a.nav:hover { color: #444444; }
-a.code:link, a.code:visited { text-decoration: none; }
-
-div.fragment {
-    font-size: 1em;
-    border: 1px dotted #cccccc;
-    background-color: #ffffff;
-    text-align: left;
-    vertical-align: middle;
-    padding: 2px;
-    margin-left: 25px;
-    margin-right: 25px;
-    overflow: auto;
-}
-
-td.indexkey {
-    font-weight: bold;
-    padding-left: 10px;
-    padding-right: 0;
-    padding-top: 2px;
-    padding-bottom: 0px;
-    margin: 0;
-    margin-top: 2px;
-    margin-bottom: 2px;
-    border: 1px dotted #cccccc;
-    border-right: 0px dotted #cccccc;
-}
-
-td.indexvalue {
-    font-style: italic;
-    padding-right: 10px;
-    padding-left: 0;
-    padding-top: 2px;
-    padding-bottom: 2px;
-    margin: 0;
-    margin-top: 2px;
-    margin-bottom: 2px;
-    border: 1px dotted #cccccc;
-    border-left: 0px dotted #cccccc;
-}
-
-.mdescRight { font-style: italic; }
-.memitem {
-    padding-left: 2px;
-    padding-right: 2px;
-    border: 1px dotted #cccccc;
-    background-color: #ffffff;
-}
-.memname {
-    white-space: nowrap;
-    font-weight: bold;
-}
-.paramname { font-weight: normal; }
-
-div.ah {
-    border: thin solid #888888;
-    font-weight: bold;
-    margin-bottom: 3px;
-    margin-top: 3px;
+	/*font-family: Lucida Grande, Helvetica, sans-serif;*/
+	font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif
+}
+
+/* Prevent design overflowing the viewport in small resolutions */
+#container {
+	padding-right: 17px;
+	padding-left: 17px;
+	background-image: url(head_bg.png);
+	background-repeat: repeat-x;
+}
+
+#header {
+	width: 100%;
+	height: 102px;
+}
+
+#header h1 {
+	width: 63px;
+	height: 63px;
+	background-image: url(e.png);
+	background-repeat: no-repeat;
+	position: absolute;
+	margin: 0px;
+}
+
+#header h1 span {
+	display: none;
+}
+
+#header h2 {
+	display: none;
+}
+
+/* .menu-container is used to set properties common to .menu and .submenu */
+#header .menu-container {
+}
+
+#header .menu-container ul {
+	list-style-type: none;
+	list-style-position: inside;
+	margin: 0;
+}
+
+#header .menu-container li {
+	display: block;
+	float: right;
+}
+
+#header .menu {
+	height: 63px;
+	display: block;
+	background-image: url(menu_bg.png);
+	background-repeat: repeat-x;
+}
+
+#header .menu ul {
+	height: 100%;
+	display: block;
+	background-image: url(menu_bg_last.png);
+	background-repeat: no-repeat;
+	background-position: top right;
+	padding-right: 17px;
+}
+
+#header .menu li {
+	height: 100%;
+	text-align: center;
+	background-image: url(menu_bg_unsel.png);
+	background-repeat: no-repeat;
+}
+
+#header .menu a {
+	height: 100%;
+	display: block;
+	color: #cdcdcd;
+	text-decoration: none;
+	font-size: 10pt;
+	line-height: 59px;
+	text-align: center;
+	padding: 0px 15px 0px 15px;
+}
+
+#header .menu li:hover {
+	background-image: url(menu_bg_hover.png);
+	background-repeat: no-repeat;
+}
+
+#header .menu li:hover a {
+	color: #FFFFFF;
+}
+
+#header .menu li.current {
+	background-image: url(menu_bg_current.png);
+	background-repeat: no-repeat;
+}
+
+#header .menu li.current a {
+	color: #646464;
+}
+
+
+/* Hide all the submenus but the current */
+#header .submenu ul {
+	display: none;
+}
+
+#header .submenu .current {
+	display: block;
+}
+
+#header .submenu {
+	font: bold 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
+	margin-top: 10px;
+}
+
+#header .submenu a {
+	color: #888888;
+	text-decoration: none;
+	font-size: 0.9em;
+	line-height: 15px;
+	padding:0px 5px 0px 5px;
+}
+
+#header .submenu a:hover {
+	color: #444444;
+}
+
+#header .submenu li {
+	border-left: 1px solid #DDDDDD;
+}
+
+#header .submenu li:last-child {
+	border-left: 0;
+}
+
+#header .doxytitle {
+	position: absolute;
+	font-size: 1.8em;
+	font-weight: bold;
+	color: #444444;
+	line-height: 35px;
+}
+
+#header small {
+	font-size: 0.4em;
+}
+
+#footer {
+	background-image: url(foot_bg.png);
+	width: 100%;
+}
+
+#footer table {
+	width: 100%;
+	text-align: center;
+	white-space: nowrap;
+	padding: 5px 30px 5px 30px;
+	font-size: 0.8em;
+	font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif;
+	color: #888888;
+}
+
+#footer td.copyright {
+	width: 100%;
+}
+
+/*
+    Author:
+        Andres Blanc <andresblanc at gmail.com>
+	DaveMDS Andreoli <dave at gurumeditation.it>
+
+    Supported Browsers:
+        ie7, opera9, konqueror4 and firefox3
+
+        Please use a different file for ie6, ie5, etc. hacks.
+*/
+
+
+/* Necessary to place the footer at the bottom of the page */
+html, body {
+	height: 100%;
+	margin: 0px;
+	padding: 0px;
+}
+
+#container {
+	min-height: 100%;
+	height: auto !important;
+	height: 100%;
+	margin: 0 auto -53px;
+}
+
+#footer, #push {
+	height: 53px;
+}
+
+
+* html #container {
+	height: 100%;
+}
+
+/* Prevent floating elements overflowing containers */
+.clear {
+	clear: both;
+	width: 0px;
+	height: 0px;
+}
+
+/* Flexible & centered layout from 750 to 960 pixels */
+.layout {
+	max-width: 960px;
+	min-width: 760px;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+body {
+	/*font-family: Lucida Grande, Helvetica, sans-serif;*/
+	font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif
+}
+
+/* Prevent design overflowing the viewport in small resolutions */
+#container {
+	padding-right: 17px;
+	padding-left: 17px;
+	background-image: url(head_bg.png);
+	background-repeat: repeat-x;
+}
+
+#header {
+	width: 100%;
+	height: 102px;
+}
+
+#header h1 {
+	width: 63px;
+	height: 63px;
+	background-image: url(e.png);
+	background-repeat: no-repeat;
+	position: absolute;
+	margin: 0px;
+}
+
+#header h1 span {
+	display: none;
+}
+
+#header h2 {
+	display: none;
+}
+
+/* .menu-container is used to set properties common to .menu and .submenu */
+#header .menu-container {
+}
+
+#header .menu-container ul {
+	list-style-type: none;
+	list-style-position: inside;
+	margin: 0;
+}
+
+#header .menu-container li {
+	display: block;
+	float: right;
+}
+
+#header .menu {
+	height: 63px;
+	display: block;
+	background-image: url(menu_bg.png);
+	background-repeat: repeat-x;
+}
+
+#header .menu ul {
+	height: 100%;
+	display: block;
+	background-image: url(menu_bg_last.png);
+	background-repeat: no-repeat;
+	background-position: top right;
+	padding-right: 17px;
+}
+
+#header .menu li {
+	height: 100%;
+	text-align: center;
+	background-image: url(menu_bg_unsel.png);
+	background-repeat: no-repeat;
+}
+
+#header .menu a {
+	height: 100%;
+	display: block;
+	color: #cdcdcd;
+	text-decoration: none;
+	font-size: 10pt;
+	line-height: 59px;
+	text-align: center;
+	padding: 0px 15px 0px 15px;
+}
+
+#header .menu li:hover {
+	background-image: url(menu_bg_hover.png);
+	background-repeat: no-repeat;
+}
+
+#header .menu li:hover a {
+	color: #FFFFFF;
+}
+
+#header .menu li.current {
+	background-image: url(menu_bg_current.png);
+	background-repeat: no-repeat;
+}
+
+#header .menu li.current a {
+	color: #646464;
+}
+
+
+/* Hide all the submenus but the current */
+#header .submenu ul {
+	display: none;
+}
+
+#header .submenu .current {
+	display: block;
+}
+
+#header .submenu {
+	font: bold 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
+	margin-top: 10px;
+}
+
+#header .submenu a {
+	color: #888888;
+	text-decoration: none;
+	font-size: 0.9em;
+	line-height: 15px;
+	padding:0px 5px 0px 5px;
+}
+
+#header .submenu a:hover {
+	color: #444444;
+}
+
+#header .submenu li {
+	border-left: 1px solid #DDDDDD;
+}
+
+#header .submenu li:last-child {
+	border-left: 0;
+}
+
+#header .doxytitle {
+	position: absolute;
+	font-size: 1.8em;
+	font-weight: bold;
+	color: #444444;
+	line-height: 35px;
+}
+
+#header small {
+	font-size: 0.4em;
+}
+
+#footer {
+	background-image: url(foot_bg.png);
+	width: 100%;
+}
+
+#footer table {
+	width: 100%;
+	text-align: center;
+	white-space: nowrap;
+	padding: 5px 30px 5px 30px;
+	font-size: 0.8em;
+	font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif;
+	color: #888888;
+}
+
+#footer td.copyright {
+	width: 100%;
 }
 
diff --git a/doc/evas.dox.in b/doc/evas.dox.in
index 313ae4e..e3f4fd3 100644
--- a/doc/evas.dox.in
+++ b/doc/evas.dox.in
@@ -1,8 +1,9 @@
 /**
 
 @mainpage Evas
- at image latex evas_big.eps width=5cm
- at image html  evas.png
+
+ at image html  e_big.png
+
 @version @PACKAGE_VERSION@
 @author Carsten Haitzler <raster\@rasterman.com>
 @author Till Adam <till\@adam-lilienthal.de>
diff --git a/doc/foot.html b/doc/foot.html
index 0d3303d..78ef911 100644
--- a/doc/foot.html
+++ b/doc/foot.html
@@ -1,6 +1,19 @@
+ 
+ <div id="push"></div>
+ </div> <!-- #content -->
+  </div> <!-- .layout -->
+ 
+ </div> <!-- #container -->
+ 
+ 
+  <div id="footer">
+    <table><tr>
+      <td class="poweredby"><img src="doxygen.png"></td>
+      <td class="copyright">Copyright &copy;$year Enlightenment</td>
+      <td class="generated">Docs generated $datetime</td>
+    </tr></table>
   </div>
-  <hr />
-  <p class="tiny">Copyright &copy; Enlightenment.org</p>
-  <p class="tiny">$projectname Documentation Generated: $datetime</p>
- </body>
+
+
+</body>
 </html>
diff --git a/doc/head.html b/doc/head.html
index ee04610..48032d9 100644
--- a/doc/head.html
+++ b/doc/head.html
@@ -1,46 +1,66 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
 <html>
- <head>
-  <title>$title</title>
-  <link href="e.css" rel="stylesheet" type="text/css" />
- </head>
+<head>
+    <title>$title</title>
+    <meta http-equiv="content-type" content="text/html;charset=UTF-8">
+    <meta name="author" content="Andres Blanc" >
+    
+    <link rel="icon" href="img/favicon.png" type="image/x-icon">
+    <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon">
+    <link rel="icon" href="img/favicon.png" type="image/ico">
+    <link rel="shortcut icon" href="img/favicon.png" type="image/ico">
+
+    <link rel="stylesheet" type="text/css" media="screen" href="e.css">
+    <link rel="stylesheet" type="text/css" media="screen" href="edoxy.css">
+</head>
 
 <body>
- <table width="100%" border="0" cellpadding="0" cellspacing="0">
-  <tr>
-   <td class="t" width="50%" valign="top" align="left">
-     <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
-     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=index">Home</a></td></tr>
-     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=news">News</a></td></tr>
-     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=about">About</a></td></tr>
-     <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=download">Download</a></td></tr>
-    </table>
-   </td>
-   <td class="tl" width="612" height="250" valign="bottom" align="center">
-    <img src="_.gif" width="612" height="1" />
-    <table border="0" cellpadding="0" cellspacing="4px">
-     <tr>
-      <td class='nav'><a class='nav' href="index.html">Main&nbsp;Page</a></td>
-      <td class='nav'><a class='nav' href="modules.html">Modules</a></td>
-      <td class='nav'><a class='nav' href="annotated.html">Data Structures</a></td>
-      <td class="nav"><a class="nav" href="Evas_8h.html">API Reference</a></td>
-      <td class="nav"><a class="nav" href="globals.html">Globals</a></td>
-      <td class="nav"><a class="nav" href="pages.html">Related Pages</a></td>
-     </tr>
-    </table>
-    <hr />
-   </td>
-   <td class="t" width="50%" valign="top" align="right">
-    <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
-     <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=support">Support</a></td></tr>
-     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contribute">Contribute</a></td></tr>
-     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contact">Contact</a></td></tr>
-     <tr><td class="lnav"><a class="nav" href="http://trac.enlightenment.org/e">Tracker</a></td></tr>
-    </table>
-   </td>
-  </tr>
- </table>
-
- <div class="main">
+
+<div id="container">
+
+<div id="header">
+<div class="layout">
+    
+    <h1><span>Enlightenment</span></h1>
+    <h2><span>Beauty at your fingertips</span></h2>
+
+    <div class="menu-container">
+        <div class="menu">
+            <ul>
+	        <li class="current"><a href="http://web.enlightenment.org/p.php?p=docs">Docs</a></li>
+                <li><a href="http://trac.enlightenment.org/e">Tracker</a></li>
+                <li><a href="http://www.enlightenment.org/p.php?p=contact">Contact</a></li>
+                <li><a href="http://www.enlightenment.org/p.php?p=contribute">Contribute</a></li>
+                <li><a href="http://www.enlightenment.org/p.php?p=support">Support</a></li>
+                <li><a href="http://www.enlightenment.org/p.php?p=download">Download</a></li>
+                <li><a href="http://www.enlightenment.org/p.php?p=about">About</a></li>
+                <li><a href="http://www.enlightenment.org/p.php?p=news">News</a></li>
+                <li><a href="http://www.enlightenment.org/">Home</a></li>
+            </ul>
+        </div>
+    </div>
+
+    <div class="doxytitle">
+        $projectname Documentation <small>at $date</small>
+    </div>
+
+    <div class="menu-container">
+        <div class="submenu">
+            <ul class="current">
+                <li><a href="todo.html">Todo</a></li>
+                <li><a href="files.html">Files</a></li>
+                <li><a href="annotated.html">Data Structures</a></li>
+                <li><a href="globals.html">Globals</a></li>
+                <li><a href="modules.html">Modules</a></li>
+                <li><a href="pages.html">Related Pages</a></li>
+	        <li class="current"><a href="index.html">Main Page</a></li>
+            </ul>
+        </div>
+    </div>
+
+
+    <div class="clear"></div>
+</div>
+</div>
+
+<div id="content">
+<div class="layout">
diff --git a/doc/img/e.png b/doc/img/e.png
new file mode 100755
index 0000000..b3884a5
Binary files /dev/null and b/doc/img/e.png differ
diff --git a/doc/img/e_big.png b/doc/img/e_big.png
new file mode 100755
index 0000000..d42aeb4
Binary files /dev/null and b/doc/img/e_big.png differ
diff --git a/doc/img/foot_bg.png b/doc/img/foot_bg.png
new file mode 100755
index 0000000..b24f3a4
Binary files /dev/null and b/doc/img/foot_bg.png differ
diff --git a/doc/img/head_bg.png b/doc/img/head_bg.png
new file mode 100755
index 0000000..081dc13
Binary files /dev/null and b/doc/img/head_bg.png differ
diff --git a/doc/img/menu_bg.png b/doc/img/menu_bg.png
new file mode 100755
index 0000000..e978743
Binary files /dev/null and b/doc/img/menu_bg.png differ
diff --git a/doc/img/menu_bg_current.png b/doc/img/menu_bg_current.png
new file mode 100755
index 0000000..de97c92
Binary files /dev/null and b/doc/img/menu_bg_current.png differ
diff --git a/doc/img/menu_bg_hover.png b/doc/img/menu_bg_hover.png
new file mode 100755
index 0000000..3fd851d
Binary files /dev/null and b/doc/img/menu_bg_hover.png differ
diff --git a/doc/img/menu_bg_last.png b/doc/img/menu_bg_last.png
new file mode 100755
index 0000000..88c116c
Binary files /dev/null and b/doc/img/menu_bg_last.png differ
diff --git a/doc/img/menu_bg_unsel.png b/doc/img/menu_bg_unsel.png
new file mode 100755
index 0000000..50e5fd8
Binary files /dev/null and b/doc/img/menu_bg_unsel.png differ
diff --git a/evas.pc.in b/evas.pc.in
index 040ee48..223df00 100644
--- a/evas.pc.in
+++ b/evas.pc.in
@@ -5,8 +5,8 @@ includedir=@includedir@
 
 Name: evas
 Description: Evas canvas display library
-Requires: eina-0
+ at pkgconfig_requires_private@: @requirement_evas@
 Version: @VERSION@
 Libs: -L${libdir} -levas
-Libs.private: @pthread_libs@ @dlopen_libs@ @EDB_LIBS@ @EET_LIBS@ @FREETYPE_LIBS@ @FONTCONFIG_LIBS@
+Libs.private: @pthread_libs@ @dlopen_libs@
 Cflags: -I${includedir}
diff --git a/evas.spec b/evas.spec
index 63465ee..4aab3d6 100644
--- a/evas.spec
+++ b/evas.spec
@@ -77,7 +77,7 @@
 
 Summary: Multi-platform Canvas Library
 Name: evas
-Version: 0.9.9.062
+Version: 0.9.9.063
 Release: 0.%(date '+%Y%m%d')
 License: BSD
 Group: System Environment/Libraries
diff --git a/ltmain.sh b/ltmain.sh
index 6d056ec..b612e9a 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,6 +1,6 @@
 # Generated from ltmain.m4sh.
 
-# ltmain.sh (GNU libtool) 2.2.4
+# ltmain.sh (GNU libtool) 2.2.6
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
@@ -65,7 +65,7 @@
 #       compiler:		$LTCC
 #       compiler flags:		$LTCFLAGS
 #       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.4 Debian-2.2.4-0ubuntu4
+#       $progname:		(GNU libtool) 2.2.6 Debian-2.2.6a-1ubuntu1
 #       automake:		$automake_version
 #       autoconf:		$autoconf_version
 #
@@ -73,9 +73,9 @@
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION="2.2.4 Debian-2.2.4-0ubuntu4"
+VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"
 TIMESTAMP=""
-package_revision=1.2976
+package_revision=1.3012
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -805,7 +805,7 @@ func_enable_tag ()
 
 
   case $host in
-    *cygwin* | *mingw* | *pw32*)
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
       # don't eliminate duplications in $postdeps and $predeps
       opt_duplicate_compiler_generated_deps=:
       ;;
@@ -893,8 +893,9 @@ $opt_help || {
 # determined imposters.
 func_lalib_p ()
 {
-    $SED -e 4q "$1" 2>/dev/null \
-      | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
 }
 
 # func_lalib_unsafe_p file
@@ -907,7 +908,7 @@ func_lalib_p ()
 func_lalib_unsafe_p ()
 {
     lalib_p=no
-    if test -r "$1" && exec 5<&0 <"$1"; then
+    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
@@ -1275,7 +1276,7 @@ func_mode_compile ()
 
     # On Cygwin there's no "real" PIC flag so we must build both object types
     case $host_os in
-    cygwin* | mingw* | pw32* | os2*)
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
       pic_mode=default
       ;;
     esac
@@ -2046,7 +2047,7 @@ func_mode_install ()
 	      'exit $?'
 	  tstripme="$stripme"
 	  case $host_os in
-	  cygwin* | mingw* | pw32*)
+	  cygwin* | mingw* | pw32* | cegcc*)
 	    case $realname in
 	    *.dll.a)
 	      tstripme=""
@@ -2152,7 +2153,7 @@ func_mode_install ()
 
 	# Do a test to see if this is really a libtool program.
 	case $host in
-	*cygwin*|*mingw*)
+	*cygwin* | *mingw*)
 	    if func_ltwrapper_executable_p "$file"; then
 	      func_ltwrapper_scriptname "$file"
 	      wrapper=$func_ltwrapper_scriptname_result
@@ -2358,7 +2359,7 @@ extern \"C\" {
 	      $RM $export_symbols
 	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
 	      case $host in
-	      *cygwin* | *mingw* )
+	      *cygwin* | *mingw* | *cegcc* )
                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
                 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
 	        ;;
@@ -2370,7 +2371,7 @@ extern \"C\" {
 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
 	      eval '$MV "$nlist"T "$nlist"'
 	      case $host in
-	        *cygwin | *mingw* )
+	        *cygwin | *mingw* | *cegcc* )
 	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
 	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
 	          ;;
@@ -2426,7 +2427,7 @@ typedef struct {
 } lt_dlsymlist;
 "
 	  case $host in
-	  *cygwin* | *mingw* )
+	  *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
@@ -2512,7 +2513,7 @@ static const void *lt_preloaded_setup() {
 	# Transform the symbol file into the correct name.
 	symfileobj="$output_objdir/${my_outputname}S.$objext"
 	case $host in
-	*cygwin* | *mingw* )
+	*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%"`
@@ -2691,25 +2692,16 @@ func_extract_archives ()
 
 
 
-# func_emit_wrapper arg
+# func_emit_wrapper_part1 [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 variable
-# 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 '.lib' directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
+# 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_arg1=no
+	func_emit_wrapper_part1_arg1=no
 	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
+	  func_emit_wrapper_part1_arg1=$1
 	fi
 
 	$ECHO "\
@@ -2794,10 +2786,27 @@ else
     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_arg1
+  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
@@ -2888,7 +2897,7 @@ else
 "
 	case $host in
 	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2*)
+	*-*-mingw | *-*-os2* | *-cegcc*)
 	  $ECHO "\
       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
 "
@@ -2914,7 +2923,207 @@ else
 fi\
 "
 }
-# end: func_emit_wrapper
+# 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
@@ -2951,6 +3160,12 @@ EOF
 # include <stdint.h>
 # ifdef __CYGWIN__
 #  include <io.h>
+#  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 <malloc.h>
@@ -3057,29 +3272,105 @@ 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, ...);
-
-static const char *script_text =
+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 yes |
+	    func_emit_wrapper_part1 yes |
+	        $SED -e 's/\([\\"]\)/\\\1/g' \
+	             -e 's/^/  "/' -e 's/$/\\n"/'
+	    echo ";"
+	    cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+	    func_emit_wrapper_part2 yes |
 	        $SED -e 's/\([\\"]\)/\\\1/g' \
 	             -e 's/^/  "/' -e 's/$/\\n"/'
 	    echo ";"
 
 	    cat <<EOF
 const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_pathlist "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_pathlist "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test "$fast_install" = yes; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
+
+static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
+  /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
+  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
+  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
 
 int
 main (int argc, char *argv[])
 {
   char **newargz;
+  int  newargc;
   char *tmp_pathspec;
   char *actual_cwrapper_path;
-  char *shwrapper_name;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
   intptr_t rval = 127;
-  FILE *shwrapper;
 
-  const char *dumpscript_opt = "--lt-dump-script";
   int i;
 
   program_name = (char *) xstrdup (base_name (argv[0]));
@@ -3099,38 +3390,14 @@ EOF
 		;;
 	      esac
 
-	    cat <<EOF
-	  printf ("%s", script_text);
+	    cat <<"EOF"
+	  printf ("%s", script_text_part1);
+	  printf ("%s", script_text_part2);
 	  return 0;
 	}
     }
 
-  newargz = XMALLOC (char *, argc + 2);
-EOF
-
-	    if test -n "$TARGETSHELL" ; then
-	      # no path translation at all
-	      lt_newargv0=$TARGETSHELL
-	    else
-	      case "$host" in
-		*mingw* )
-		  # awkward: cmd appends spaces to result
-		  lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-		  lt_newargv0=`( cmd //c echo $SHELL | $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo $SHELL`
-		  case $lt_newargv0 in
-		    *.exe | *.EXE) ;;
-		    *) lt_newargv0=$lt_newargv0.exe ;;
-		  esac
-		  ;;
-		* ) lt_newargv0=$SHELL ;;
-	      esac
-	    fi
-
-		cat <<EOF
-  newargz[0] = (char *) xstrdup ("$lt_newargv0");
-EOF
-
-	    cat <<"EOF"
+  newargz = XMALLOC (char *, argc + 1);
   tmp_pathspec = find_executable (argv[0]);
   if (tmp_pathspec == NULL)
     lt_fatal ("Couldn't find %s", argv[0]);
@@ -3142,39 +3409,60 @@ EOF
 			  actual_cwrapper_path));
   XFREE (tmp_pathspec);
 
-  shwrapper_name = (char *) xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, shwrapper_name);
-
-  /* shwrapper_name transforms */
-  strendzap (shwrapper_name, ".exe");
-  tmp_pathspec = XMALLOC (char, (strlen (shwrapper_name) +
-				 strlen ("_ltshwrapperTMP") + 1));
-  strcpy (tmp_pathspec, shwrapper_name);
-  strcat (tmp_pathspec, "_ltshwrapperTMP");
-  XFREE (shwrapper_name);
-  shwrapper_name = tmp_pathspec;
+  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
   tmp_pathspec = 0;
-  LTWRAPPER_DEBUGPRINTF (("(main) libtool shell wrapper name: %s\n",
-			  shwrapper_name));
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+			  target_name));
 EOF
 
 	    cat <<EOF
-  newargz[1] =
+  newargz[0] =
     XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (shwrapper_name) + 1));
-  strcpy (newargz[1], actual_cwrapper_path);
-  strcat (newargz[1], "$objdir");
-  strcat (newargz[1], "/");
-  strcat (newargz[1], shwrapper_name);
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
 EOF
 
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
 
 	    case $host_os in
 	      mingw*)
 	    cat <<"EOF"
   {
     char* p;
-    while ((p = strchr (newargz[1], '\\')) != NULL)
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
       {
 	*p = '/';
       }
@@ -3184,55 +3472,114 @@ EOF
 	    esac
 
 	    cat <<"EOF"
-  XFREE (shwrapper_name);
+  XFREE (target_name);
   XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
 
-  /* always write in binary mode */
-  if ((shwrapper = fopen (newargz[1], FOPEN_WB)) == 0)
-    {
-      lt_fatal ("Could not open %s for writing", newargz[1]);
-    }
-  fprintf (shwrapper, "%s", script_text);
-  fclose (shwrapper);
-
-  make_executable (newargz[1]);
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
 
+  newargc=0;
   for (i = 1; i < argc; i++)
-    newargz[i + 1] = xstrdup (argv[i]);
-  newargz[argc + 1] = NULL;
+    {
+      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+        {
+          if (argv[i][env_set_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_set_opt_len + 1;
+              lt_opt_process_env_set (p);
+            }
+          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_set (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_set_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+        {
+          if (argv[i][env_prepend_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_prepend_opt_len + 1;
+              lt_opt_process_env_prepend (p);
+            }
+          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_prepend_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+        {
+          if (argv[i][env_append_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_append_opt_len + 1;
+              lt_opt_process_env_append (p);
+            }
+          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_append (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_append_opt);
+          continue;
+        }
+      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal ("Unrecognized option in %s namespace: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
 
-  for (i = 0; i < argc + 1; i++)
+  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+  for (i = 0; i < newargc; i++)
     {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, newargz[i]));
+      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
     }
 
 EOF
 
 	    case $host_os in
 	      mingw*)
-		cat <<EOF
+		cat <<"EOF"
   /* execv doesn't actually work on mingw as expected on unix */
-  rval = _spawnv (_P_WAIT, "$lt_newargv0", (const char * const *) newargz);
+  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 \"$lt_newargv0\": errno = %d\n", errno));
+      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
       return 127;
     }
   return rval;
-}
 EOF
 		;;
 	      *)
-		cat <<EOF
-  execv ("$lt_newargv0", newargz);
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
   return rval; /* =127, but avoids unused variable warning */
-}
 EOF
 		;;
 	    esac
 
 	    cat <<"EOF"
+}
 
 void *
 xmalloc (size_t num)
@@ -3506,6 +3853,177 @@ lt_fatal (const char *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 : "<NULL>"),
+                          (value ? value : "<NULL>")));
+  {
+#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 : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  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 : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  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
@@ -3515,7 +4033,7 @@ func_mode_link ()
 {
     $opt_debug
     case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+    *-*-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
@@ -3959,6 +4477,13 @@ func_mode_link ()
       -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]:[\\/]*) ;;
@@ -3977,14 +4502,16 @@ func_mode_link ()
 	  ;;
 	esac
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	*-*-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
 	  ;;
@@ -3995,7 +4522,7 @@ func_mode_link ()
       -l*)
 	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
 	    # These systems don't actually have a C or math library (as such)
 	    continue
 	    ;;
@@ -4072,7 +4599,7 @@ func_mode_link ()
 
       -no-install)
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
+	*-*-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"
@@ -5032,7 +5559,7 @@ func_mode_link ()
 	if test -n "$library_names" &&
 	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
 	  case $host in
-	  *cygwin* | *mingw*)
+	  *cygwin* | *mingw* | *cegcc*)
 	      # No point in relinking DLLs because paths are not encoded
 	      notinst_deplibs="$notinst_deplibs $lib"
 	      need_relink=no
@@ -5102,7 +5629,7 @@ func_mode_link ()
 	    elif test -n "$soname_spec"; then
 	      # bleh windows
 	      case $host in
-	      *cygwin* | mingw*)
+	      *cygwin* | mingw* | *cegcc*)
 	        func_arith $current - $age
 		major=$func_arith_result
 		versuffix="-$major"
@@ -5884,7 +6411,7 @@ func_mode_link ()
 	tempremovelist=`$ECHO "$output_objdir/*"`
 	for p in $tempremovelist; do
 	  case $p in
-	    *.$objext)
+	    *.$objext | *.gcno)
 	       ;;
 	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
 	       if test "X$precious_files_regex" != "X"; then
@@ -5955,7 +6482,7 @@ func_mode_link ()
       if test "$build_libtool_libs" = yes; then
 	if test -n "$rpath"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
 	    # these systems don't actually have a c library (as such)!
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
@@ -6454,7 +6981,7 @@ EOF
 
 	orig_export_symbols=
 	case $host_os in
-	cygwin* | mingw*)
+	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
@@ -7079,14 +7606,16 @@ EOF
 	  esac
 	fi
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	*-*-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
 	  ;;
@@ -7156,6 +7685,10 @@ EOF
           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
@@ -7308,11 +7841,10 @@ EOF
 
 	    func_emit_cwrapperexe_src > $cwrappersource
 
-	    # 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.
+	    # 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
@@ -7597,7 +8129,7 @@ EOF
 	  # 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 ;;
+	    *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
diff --git a/m4/evas_check_engine.m4 b/m4/evas_check_engine.m4
index a0609f8..8f26824 100644
--- a/m4/evas_check_engine.m4
+++ b/m4/evas_check_engine.m4
@@ -1,5 +1,5 @@
 
-dnl use: EVAS_CHECK_ENGINE_DEP_BUFFER(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_BUFFER(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_BUFFER],
 [
@@ -12,14 +12,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XLIB(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XLIB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_XLIB],
 [
@@ -34,6 +34,14 @@ AC_PATH_XTRA
 AC_CHECK_HEADER([X11/X.h], [have_dep="yes"])
 
 if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([X11], [XCreateImage], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([Xext], [XShmCreateImage], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "x$2" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
@@ -49,14 +57,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_XRENDER_X11(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_XRENDER_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_XRENDER_X11],
 [
@@ -72,6 +80,18 @@ AC_CHECK_HEADERS([X11/X.h X11/extensions/Xrender.h],
    [have_dep="no"])
 
 if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([X11], [XCreateImage], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([Xext], [XShmCreateImage], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([Xrender], [XRenderCreatePicture], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "x$2" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
@@ -87,14 +107,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_GL_X11(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_GL_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_GL_X11],
 [
@@ -105,38 +125,90 @@ evas_engine_[]$1[]_libs=""
 AC_PATH_X
 AC_PATH_XTRA
 
-AC_CHECK_HEADERS([GL/gl.h GL/glu.h X11/X.h],
+AC_CHECK_HEADERS([GL/gl.h GL/glx.h X11/X.h],
    [have_dep="yes"],
    [have_dep="no"])
 
 if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([X11], [XCreateColormap], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x$gl_flavor_gles" = "xyes" ; then
+  have_dep=no
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "x$2" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
       x_dir=${x_dir:-/usr/X11R6}
       x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
-      x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+      x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11"
    fi
    evas_engine_[]$1[]_cflags="-I/usr/include ${x_cflags}"
-   evas_engine_[]$1[]_libs="${x_libs} -lGL -lGLU -lpthread"
+   evas_engine_[]$1[]_libs="${x_libs} -lGL -lpthread"
+   evas_engine_gl_common_libs="-lGL -lpthread"
+else
+   if test "x$2" = "xyes" ; then
+      x_libs="${x_libs} -lX11 -lXext -lXrender"
+   else
+      x_dir=${x_dir:-/usr/X11R6}
+      x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+      x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender"
+   fi
+   AC_CHECK_HEADERS([EGL/egl.h X11/X.h X11/Xlib.h X11/extensions/Xrender.h], [have_egl="yes"])
+   if test "x${have_egl}" = "xyes" ; then
+      AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL ${x_libs} -lpthread -lm)
+      if test "x${have_glesv2}" = "xyes" ; then
+         evas_engine_[]$1[]_cflags="${x_cflags}"
+         evas_engine_[]$1[]_libs="${x_libs} -lGLESv2 -lpthread -lm -lEGL"
+         evas_engine_gl_common_libs="-lGLESv2 -lpthread -lm"
+         have_dep="yes"
+      fi
+dnl samsung s3c6410 libs changed to be like the sgx ones. need a variety option
+dnl      have_gles20="no"
+dnl      AC_CHECK_LIB(gles20, glTexImage2D, [have_gles20="yes"], , -lEGL)
+dnl      if test "x${have_gles20}" = "xyes" ; then
+dnl         evas_engine_[]$1[]_cflags="${x_cflags}"
+dnl         evas_engine_[]$1[]_libs="${x_libs} -lgles20 -lEGL"
+dnl         AC_DEFINE(GLES_VARIETY_S3C6410, 1, [Samsung S3c6410 GLES2 support])
+dnl         evas_engine_gl_common_libs="-lgles20"
+dnl         have_dep="yes"
+dnl      fi
+dnl      have_glesv2="no"
+dnl      AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL ${x_libs} -lpthread -lm)
+dnl      if test "x${have_glesv2}" = "xyes" ; then
+dnl         evas_engine_[]$1[]_cflags="${x_cflags}"
+dnl         evas_engine_[]$1[]_libs="${x_libs} -lGLESv2 -lpthread -lm -lEGL"
+dnl         AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support])
+dnl         evas_engine_gl_common_libs="-lGLESv2 -lpthread -lm"
+dnl         have_dep="yes"
+dnl      fi
+   fi
 fi
 
 AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_CAIRO_X11(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_CAIRO_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_CAIRO_X11],
 [
 
+requirement=""
 have_dep="no"
 evas_engine_[]$1[]_cflags=""
 evas_engine_[]$1[]_libs=""
@@ -147,7 +219,7 @@ AC_PATH_XTRA
 AC_CHECK_HEADER([X11/X.h],
    [PKG_CHECK_MODULES([CAIRO],
        [cairo >= 1.0.0],
-       [have_dep="yes"]
+       [have_dep="yes" requirement="cairo"]
     )]
 )
 
@@ -166,19 +238,24 @@ fi
 AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
+if test "x$3" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB],
 [
 
+requirement=""
 have_dep="no"
 evas_engine_[]$1[]_cflags=""
 evas_engine_[]$1[]_libs=""
@@ -187,6 +264,7 @@ PKG_CHECK_MODULES([XCB],
    [xcb xcb-shm xcb-image >= 0.2.1 pixman-1],
    [
     have_dep="yes"
+    requirement="xcb xcb-shm xcb-image pixman-1"
     evas_engine_[]$1[]_cflags="${XCB_CFLAGS}"
     evas_engine_[]$1[]_libs="${XCB_LIBS}"
    ]
@@ -195,19 +273,24 @@ PKG_CHECK_MODULES([XCB],
 AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
+if test "x$3" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_XRENDER_XCB(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_XRENDER_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_XRENDER_XCB],
 [
 
+requirement=""
 have_dep="no"
 evas_engine_[]$1[]_cflags=""
 evas_engine_[]$1[]_libs=""
@@ -216,6 +299,7 @@ PKG_CHECK_MODULES([XCBRENDER],
    [xcb xcb-shm xcb-render xcb-image >= 0.2.1 pixman-1],
    [
     have_dep="yes"
+    requirement="xcb xcb-shm xcb-render xcb-image pixman-1"
     evas_engine_[]$1[]_cflags="${XCBRENDER_CFLAGS}"
     evas_engine_[]$1[]_libs="${XCBRENDER_LIBS}"
    ]
@@ -224,15 +308,19 @@ PKG_CHECK_MODULES([XCBRENDER],
 AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
+if test "x$3" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI],
 [
@@ -252,14 +340,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_DDRAW(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_DDRAW(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_DDRAW],
 [
@@ -279,14 +367,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_DIRECT3D(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_DIRECT3D(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_DIRECT3D],
 [
@@ -306,14 +394,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_QUARTZ(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_QUARTZ(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_QUARTZ],
 [
@@ -330,14 +418,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_GL_GLEW(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_GL_GLEW(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_GL_GLEW],
 [
@@ -345,10 +433,10 @@ AC_DEFUN([EVAS_CHECK_ENGINE_DEP_GL_GLEW],
 evas_engine_[]$1[]_cflags=""
 evas_engine_[]$1[]_libs=""
 
-AC_CHECK_HEADERS([GL/gl.h GL/glu.h GL/glew.h],
+AC_CHECK_HEADERS([GL/gl.h GL/glew.h],
    [
     have_dep="yes"
-    evas_engine_[]$1[]_libs="-lglu32 -lglew32 -lopengl32 -lgdi32"
+    evas_engine_[]$1[]_libs="-lglew32 -lopengl32 -lgdi32"
    ],
    [have_dep="no"]
 )
@@ -357,18 +445,19 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_SDL(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_SDL(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_SDL],
 [
 
+requirement=""
 have_dep="no"
 evas_engine_[]$1[]_cflags=""
 evas_engine_[]$1[]_libs=""
@@ -377,6 +466,7 @@ PKG_CHECK_MODULES([SDL],
    [sdl >= 1.2.0],
    [
     have_dep="yes"
+    requirement="sdl"
     evas_engine_[]$1[]_cflags="${SDL_CFLAGS}"
     evas_engine_[]$1[]_libs="${SDL_LIBS}"
    ]
@@ -385,15 +475,19 @@ PKG_CHECK_MODULES([SDL],
 AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
+if test "x$3" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_FB(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_FB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_FB],
 [
@@ -408,18 +502,19 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_DIRECTFB(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_DIRECTFB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_DIRECTFB],
 [
 
+requirement=""
 have_dep="no"
 evas_engine_[]$1[]_cflags=""
 evas_engine_[]$1[]_libs=""
@@ -428,6 +523,7 @@ PKG_CHECK_MODULES([DIRECTFB],
    [directfb >= 0.9.16],
    [
     have_dep="yes"
+    requirement="directfb"
     evas_engine_[]$1[]_cflags="${DIRECTFB_CFLAGS}"
     evas_engine_[]$1[]_libs="${DIRECTFB_LIBS}"
    ]
@@ -436,15 +532,19 @@ PKG_CHECK_MODULES([DIRECTFB],
 AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
+if test "x$3" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_QTOPIA(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_QTOPIA(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_QTOPIA],
 [
@@ -489,15 +589,14 @@ AC_SUBST([evas_engine_$1_libs])
 AC_SUBST([evas_engine_$1_moc])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11],
 [
 
@@ -511,6 +610,14 @@ AC_PATH_XTRA
 AC_CHECK_HEADER([X11/X.h], [have_dep="yes"])
 
 if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([X11], [XCreateImage], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+   AC_CHECK_LIB([Xext], [XShmCreateImage], [have_dep="yes"], [have_dep="no"])
+fi
+
+if test "x${have_dep}" = "xyes" ; then
    if test "x$2" = "xyes" ; then
       x_libs="${x_libs} -lX11 -lXext"
    else
@@ -526,14 +633,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_DDRAW(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_DDRAW(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_DDRAW],
 [
@@ -553,14 +660,14 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_WINCE(engine, simple[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_WINCE(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_WINCE],
 [
@@ -573,9 +680,9 @@ AC_SUBST([evas_engine_$1_cflags])
 AC_SUBST([evas_engine_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$3], [:])
-else
   m4_default([$4], [:])
+else
+  m4_default([$5], [:])
 fi
 
 ])
@@ -612,7 +719,7 @@ AC_MSG_CHECKING([whether to enable $4 rendering backend])
 AC_MSG_RESULT([${want_engine}])
 
 if test "x${want_engine}" = "xyes" -o "x${want_engine}" = "xstatic" -o "x${want_engine}" = "xauto" ; then
-   m4_default([EVAS_CHECK_ENGINE_DEP_]m4_defn([UP]))(DOWN, $3, [have_engine="yes"], [have_engine="no"])
+   m4_default([EVAS_CHECK_ENGINE_DEP_]m4_defn([UP]))(DOWN, $3, ${want_engine}, [have_engine="yes"], [have_engine="no"])
 fi
 
 if test "x${have_engine}" = "xno" -a "x${want_engine}" = "xyes" -a "x${use_strict}" = "xyes" ; then
diff --git a/m4/evas_check_loader.m4 b/m4/evas_check_loader.m4
index 2c2154e..7a4af8e 100644
--- a/m4/evas_check_loader.m4
+++ b/m4/evas_check_loader.m4
@@ -1,52 +1,62 @@
-dnl use: EVAS_CHECK_LOADER_DEP_EDB(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_EDB(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_EDB],
 [
 
+requirement=""
 have_dep="no"
 evas_image_loader_[]$1[]_cflags=""
 evas_image_loader_[]$1[]_libs=""
 
-PKG_CHECK_MODULES([EDB], [edb], [have_dep="yes"], [have_dep="no"])
+PKG_CHECK_MODULES([EDB], [edb], [have_dep="yes" requirement="edb"], [have_dep="no"])
 evas_image_loader_[]$1[]_cflags="${EDB_CFLAGS}"
 evas_image_loader_[]$1[]_libs="${EDB_LIBS}"
 
 AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
+if test "x$2" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_EET(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_EET(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_EET],
 [
 
+requirement=""
 have_dep="no"
 evas_image_loader_[]$1[]_cflags=""
 evas_image_loader_[]$1[]_libs=""
 
-PKG_CHECK_MODULES([EET], [eet >= 1.0.1], [have_dep="yes"], [have_dep="no"])
+PKG_CHECK_MODULES([EET], [eet >= 1.0.1], [have_dep="yes" requirement="eet"], [have_dep="no"])
 evas_image_loader_[]$1[]_cflags="${EET_CFLAGS}"
 evas_image_loader_[]$1[]_libs="${EET_LIBS}"
 
 AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
+if test "x$2" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_GIF(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_GIF(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_GIF],
 [
@@ -81,14 +91,14 @@ AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_JPEG(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_JPEG(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_JPEG],
 [
@@ -102,23 +112,39 @@ AC_CHECK_HEADER([jpeglib.h], [have_dep="yes"])
 if test "x${have_dep}"  = "xyes" ; then
    AC_CHECK_LIB([jpeg],
       [jpeg_CreateDecompress],
-      [evas_image_loader_[]$1[]_libs="-ljpeg"],
+      [
+        evas_image_loader_[]$1[]_libs="-ljpeg"
+        AC_COMPILE_IFELSE([[
+                          #include <stdio.h>
+                          #include <jpeglib.h>
+                          #include <setjmp.h>
+                          int main(int argc, char **argv) {
+                          struct jpeg_decompress_struct decomp;
+                          decomp.region_x = 0;
+                          }
+                        ]],
+                        [have_jpeg_region="yes"],
+                        [have_jpeg_region="no"])
+      ],
       [have_dep="no"]
    )
+   if test "x${have_jpeg_region}" = "xyes" ; then
+     AC_DEFINE(BUILD_LOADER_JPEG_REGION, [1], [JPEG Region Decode Support])
+   fi
 fi
 
 AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_PMAPS(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_PMAPS(loader, want_static[[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_PMAPS],
 [
@@ -131,27 +157,28 @@ AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_PNG(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_PNG(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_PNG],
 [
 
+requirement=""
 have_dep="no"
 evas_image_loader_[]$1[]_cflags=""
 evas_image_loader_[]$1[]_libs=""
 
 PKG_CHECK_EXISTS([libpng12],
-   [PKG_CHECK_MODULES([PNG], [libpng12], [have_dep="yes"], [have_dep="no"])],
+   [PKG_CHECK_MODULES([PNG], [libpng12], [have_dep="yes" requirement="libpng12"], [have_dep="no"])],
    [PKG_CHECK_EXISTS([libpng10],
-       [PKG_CHECK_MODULES([PNG], [libpng10], [have_dep="yes"], [have_dep="no"])],
-       [PKG_CHECK_MODULES([PNG], [libpng], [have_dep="yes"], [have_dep="no"])])]
+       [PKG_CHECK_MODULES([PNG], [libpng10], [have_dep="yes" requirement="libpng10"], [have_dep="no"])],
+       [PKG_CHECK_MODULES([PNG], [libpng], [have_dep="yes" requirement="libpng"], [have_dep="no"])])]
 )
 
 evas_image_loader_[]$1[]_cflags="${PNG_CFLAGS}"
@@ -160,25 +187,30 @@ evas_image_loader_[]$1[]_libs="${PNG_LIBS}"
 AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
+if test "x$2" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_SVG(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_SVG(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_SVG],
 [
 
+requirement=""
 have_dep="no"
 evas_image_loader_[]$1[]_cflags=""
 evas_image_loader_[]$1[]_libs=""
 
 PKG_CHECK_MODULES([SVG], [librsvg-2.0 >= 2.14.0],
-   [have_dep="yes"],
+   [have_dep="yes" requirement="librsvg-2.0"],
    [have_svg="no"]
 )
 
@@ -190,15 +222,19 @@ fi
 AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
+if test "x$2" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_TIFF(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_TIFF(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_TIFF],
 [
@@ -243,14 +279,14 @@ AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
 
-dnl use: EVAS_CHECK_LOADER_DEP_XPM(loader[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EVAS_CHECK_LOADER_DEP_XPM(loader, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
 AC_DEFUN([EVAS_CHECK_LOADER_DEP_XPM],
 [
@@ -263,9 +299,9 @@ AC_SUBST([evas_image_loader_$1_cflags])
 AC_SUBST([evas_image_loader_$1_libs])
 
 if test "x${have_dep}" = "xyes" ; then
-  m4_default([$2], [:])
-else
   m4_default([$3], [:])
+else
+  m4_default([$4], [:])
 fi
 
 ])
@@ -303,7 +339,7 @@ AC_MSG_CHECKING([whether to enable $1 image loader])
 AC_MSG_RESULT([${want_loader}])
 
 if test "x${want_loader}" = "xyes" -o "x${want_loader}" = "xstatic" -o "x${want_loader}" = "xauto"; then
-   m4_default([EVAS_CHECK_LOADER_DEP_]m4_defn([UP]))(DOWN, [have_loader="yes"], [have_loader="no"])
+   m4_default([EVAS_CHECK_LOADER_DEP_]m4_defn([UP]))(DOWN, ${want_loader}, [have_loader="yes"], [have_loader="no"])
 fi
 
 if test "x${have_loader}" = "xno" -a "x${want_loader}" = "xyes" -a "x${use_strict}" = "xyes" ; then
@@ -371,6 +407,7 @@ fi
 
 if test "x$have_evas_font_loader_eet" = "xyes" ; then
    AC_DEFINE([BUILD_FONT_LOADER_EET], [1], [EET Font Loader Support])
+   requirement_evas="eet ${requirement_evas}"
 fi
 
 popdef([UP])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
index 0d258e0..9000a05 100644
--- a/m4/ltsugar.m4
+++ b/m4/ltsugar.m4
@@ -1,13 +1,13 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-#   Written by Gary V. Vaughan, 2004
+# 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 5 ltsugar.m4
+# 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])])
@@ -63,14 +63,14 @@ m4_define([lt_append],
 # 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([$2], [], [],
-  [m4_if([$4], [], [],
-    [lt_join(m4_quote(m4_default([$1], [[, ]])),
-      lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2],
-		   [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]),
-			       [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl
-])
+[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])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 45cb155..b8e154f 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -9,15 +9,15 @@
 
 # Generated from ltversion.in.
 
-# serial 2976 ltversion.m4
+# serial 3012 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.2.4])
-m4_define([LT_PACKAGE_REVISION], [1.2976])
+m4_define([LT_PACKAGE_VERSION], [2.2.6])
+m4_define([LT_PACKAGE_REVISION], [1.3012])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.4'
-macro_revision='1.2976'
+[macro_version='2.2.6'
+macro_revision='1.3012'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/src/Makefile.in b/src/Makefile.in
index fb154ef..2802b0c 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -268,17 +268,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -291,8 +294,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -398,7 +401,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/bin/Makefile.in b/src/bin/Makefile.in
index b43a0eb..a0a66e0 100644
--- a/src/bin/Makefile.in
+++ b/src/bin/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -291,17 +291,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -343,8 +346,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -444,7 +447,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/bin/evas_cserve_main.c b/src/bin/evas_cserve_main.c
index 770485f..eaef3f5 100644
--- a/src/bin/evas_cserve_main.c
+++ b/src/bin/evas_cserve_main.c
@@ -16,8 +16,24 @@
 #include "Evas.h"
 #include "evas_cs.h"
 
-#define D(fmt, args...) EINA_ERROR_PDBG(fmt, ##args)
-
+#define D(...) EINA_LOG_DOM_DBG(_evas_cserve_bin_log_dom, __VA_ARGS__)
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_cserve_bin_log_dom, __VA_ARGS__)
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_cserve_bin_log_dom, __VA_ARGS__)
+#ifdef WRN
+#undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_cserve_bin_log_dom, __VA_ARGS__)
+  
+#ifdef CSERVE_BIN_DEFAULT_COLOR
+#undef CSERVE_BIN_DEFAULT_COLOR
+#endif
+#define CSERVE_BIN_DEFAULT_COLOR EINA_COLOR_BLUE
 // fixme:'s
 // 
 // preload - make it work (both)
@@ -34,6 +50,9 @@ struct _Lopt
    int    scale_down_by; // if > 1 then use this
    double dpi; // if > 0.0 use this
    int    w, h; // if > 0 use this
+   struct {
+      int x, y, w, h;
+   } region;
 };
 
 struct _Img
@@ -66,6 +85,7 @@ struct _Img
    Eina_Bool dead : 1;
    Eina_Bool active : 1;
    Eina_Bool useless : 1;
+   Eina_Bool killme : 1;
 };
 
 struct _Load_Inf
@@ -81,6 +101,12 @@ static time_t t_now = 0;
 
 static int server_id = 0;
 
+LK(strshr_freeme_lock);
+static int strshr_freeme_count = 0;
+static int strshr_freeme_alloc = 0;
+static const char **strshr_freeme = NULL;
+
+static int cache_cleanme = 0;
 static Evas_Cache_Image *cache = NULL;
 
 static Eina_Hash *active_images = NULL;
@@ -92,8 +118,7 @@ static int cache_max_adjust = 0;
 static int cache_item_timeout = -1;
 static int cache_item_timeout_check = -1;
 static Mem *stat_mem = NULL;
-
-static int stat_mem_num = 0;
+static int _evas_cserve_bin_log_dom = -1;
 static Eina_List *stat_mems = NULL;
 
 static void cache_clean(void);
@@ -293,6 +318,7 @@ _img_alloc(void)
    Img *img;
    
    img = calloc(1, sizeof(Img));
+   LKI(img->lock);
    return (Image_Entry *)img;
 }
 
@@ -300,6 +326,7 @@ static void
 _img_dealloc(Image_Entry *ie)
 {
    Img *img = (Img *)ie;
+   LKD(img->lock);
    free(img);
 }
 
@@ -433,6 +460,7 @@ img_init(void)
    active_images = eina_hash_string_superfast_new(NULL);
    cache = evas_cache_image_init(&cache_funcs);
    LKI(cache_lock);
+   LKI(strshr_freeme_lock);
 }
 
 static void
@@ -441,6 +469,8 @@ img_shutdown(void)
    evas_cache_image_shutdown(cache);
    cache = NULL;
    // FIXME: shutdown properly
+   LKD(strshr_freeme_lock);
+   LKI(cache_lock);
 }
 
 static Img *
@@ -453,16 +483,16 @@ img_new(const char *file, const char *key, RGBA_Image_Loadopts *load_opts, const
    int err = 0;
    double t;
    
-   D("... stat %s\n", file);
+   DBG("... stat %s", file);
    ret = stat(file, &st);
    if (ret < 0) return NULL;
-   D("... load header\n");
+   DBG("... load header");
    t = get_time();
    ie = evas_cache_image_request(cache, file, key, load_opts, &err);
    t = get_time() - t;
-   D("... header done\n");
+   DBG("... header done");
    if (!ie) return NULL;
-   D("... ie->cache = %p\n", ie->cache);
+   DBG("... ie->cache = %p", ie->cache);
    img = (Img *)ie;
    img->stats.load1 = t;
    img->key = eina_stringshare_add(bufkey);
@@ -513,43 +543,61 @@ img_free(Img *img)
 {
    if (img->incache > 0)
      {
-        printf("EEEEEEEEEEEEEEEEK!\n");
-        printf("EEEEEEEEEEEEEEEEK! %p '%s' still in cache\n", 
+        ERR("EEEEEEEEEEEEEEEEK!");
+        ERR("EEEEEEEEEEEEEEEEK! %p '%s' still in cache",
                img, img->file.file);
-        printf("EEEEEEEEEEEEEEEEK!\n");
+        ERR("EEEEEEEEEEEEEEEEK!");
         return;
      }
    stats_lifetime_update(img);
    stats_update();
-   eina_stringshare_del(img->key);
-   eina_stringshare_del(img->file.file);
-   eina_stringshare_del(img->file.key);
+   
+   LKL(strshr_freeme_lock);
+   strshr_freeme_count +=  3;
+   if (strshr_freeme_count > strshr_freeme_alloc)
+     {
+        strshr_freeme_alloc += 32;
+        strshr_freeme = realloc(strshr_freeme, strshr_freeme_alloc * sizeof(const char **));
+     }
+   strshr_freeme[strshr_freeme_count - 3] = img->key;
+   strshr_freeme[strshr_freeme_count - 2] = img->file.file;
+   strshr_freeme[strshr_freeme_count - 1] = img->file.key;
+   LKU(strshr_freeme_lock);
+   
    evas_cache_image_drop((Image_Entry *)img);
 }
 
 static void
 cache_clean(void)
 {
-   D("... cache clean!!! do\n");
+   DBG("... cache clean!!! do");
    LKL(cache_lock);
    while ((cache_usage > ((cache_max_usage + cache_max_adjust) * 1024)) && 
           (cache_images))
      {
         Img *img;
         Eina_List *l;
-        
-        LKL(img->lock);
-        D("... clean loop %i > %i\n", cache_usage, (cache_max_usage + cache_max_adjust) * 1024);
-        l = eina_list_last(cache_images);
+
+        DBG("... clean loop %i > %i", cache_usage, (cache_max_usage + cache_max_adjust) * 1024);
+        l = eina_list_last(cache_images); // THREAD: called from thread. happens to be safe as it uses no unlocked shared resources
         if (!l) break;
         img = l->data;
         if (!img) break;
-        D("...   REMOVE %p '%s'\n", img, img->file.file);
-        cache_images = eina_list_remove_list(cache_images, l);
+        LKL(img->lock);
+        DBG("...   REMOVE %p '%s'", img, img->file.file);
+#ifdef BUILD_PTHREAD
+        img->killme = 1;
+        img->useless = 1;
+        img->dead = 1;
+        cache_cleanme++;
+        LKU(img->lock);
+#else        
+        cache_images = eina_list_remove_list(cache_images, l); // FIXME: called from thread
         img->incache--;
         cache_usage -= img->usage;
-        D("...   IMG FREE %p\n", img);
+        DBG("...   IMG FREE %p", img);
         img_free(img);
+#endif        
      }
    LKU(cache_lock);
 }
@@ -603,10 +651,10 @@ mem_cache_adjust(void)
    
    if (cache_max_adjust < -cache_max_usage) 
      cache_max_adjust = -cache_max_usage;
-   D("... cache_max_adjust = %i\n", cache_max_adjust);
+   DBG("... cache_max_adjust = %i", cache_max_adjust);
    if (pval != cache_max_adjust)
      {
-        D("... cache clean\n");
+        DBG("... cache clean");
         // FIXME lock problem
         cache_clean();
      }
@@ -618,23 +666,23 @@ img_cache(Img *img)
    eina_hash_del(active_images, img->key, img);
    if (img->dead)
      {
-        D("... img %p '%s' dead\n", img , img->file.file);
+        DBG("... img %p '%s' dead", img , img->file.file);
         img_free(img);
-       return;
+        return;
      }
    if ((cache_usage + img->usage) > ((cache_max_usage + cache_max_adjust) * 1024))
      {
-        D("... img %p '%s' too big for cache\n", img , img->file.file);
+        DBG("... img %p '%s' too big for cache", img , img->file.file);
         img_free(img);
         return;
      }
-   D("... img %p '%s' cached += %i\n", img , img->file.file, img->usage);
+   DBG("... img %p '%s' cached += %i", img , img->file.file, img->usage);
    if (img->incache > 0)
      {
-        printf("EEEEEEEEEEEEEEEEK!\n");
-        printf("EEEEEEEEEEEEEEEEK! %p '%s' already in cache\n", 
+        ERR("EEEEEEEEEEEEEEEEK!");
+        ERR("EEEEEEEEEEEEEEEEK! %p '%s' already in cache",
                img, img->file.file);
-        printf("EEEEEEEEEEEEEEEEK!\n");
+        ERR("EEEEEEEEEEEEEEEEK!");
         return;
      }
    LKL(cache_lock);
@@ -696,8 +744,8 @@ img_load(const char *file, const char *key, RGBA_Image_Loadopts *load_opts)
    Eina_List *l, *l_next;
    
    if (!file) return NULL;
-   D("... img_load '%s'\n", file);
-   if (key) D("... ... key '%s'\n", key);
+   DBG("... img_load '%s'", file);
+   if (key) DBG("... ... key '%s'", key);
    if (key)
      snprintf(buf, sizeof(buf), "%s///::/%s/\001/%i/%1.8f/%ix%i",
               file, key, 
@@ -710,16 +758,16 @@ img_load(const char *file, const char *key, RGBA_Image_Loadopts *load_opts)
               load_opts->scale_down_by, 
               load_opts->dpi,
               load_opts->w, load_opts->h);
-   D("... find '%s'\n", buf);
+   DBG("... find '%s'", buf);
    img = eina_hash_find(active_images, buf);
    if ((img) && (img_ok(img)))
      {
-        D("... found!\n");
+        DBG("... found!");
         img->stats.load1saved++;
         img->ref++;
-        D("... sats update\n");
+        DBG("... stats update");
         stats_update();
-        D("... return %p\n", img);
+        DBG("... return %p", img);
         return img;
      }
    
@@ -732,7 +780,7 @@ img_load(const char *file, const char *key, RGBA_Image_Loadopts *load_opts)
              LKL(img->lock);
              if (img_ok(img))
                {
-                  D("... found cached\n");
+                  DBG("... found cached");
                   cache_images = eina_list_remove_list(cache_images, l);
                   img->incache--;
                   cache_usage -= img->usage;
@@ -740,9 +788,9 @@ img_load(const char *file, const char *key, RGBA_Image_Loadopts *load_opts)
                   img->stats.load1saved++;
                   img->ref++;
                   eina_hash_direct_add(active_images, img->key, img);
-                  D("... sats update\n");
+                  DBG("... sats update");
                   stats_update();
-                  D("... return %p\n", img);
+                  DBG("... return %p", img);
                   LKU(img->lock);
                   LKU(cache_lock);
                   return img;
@@ -751,7 +799,7 @@ img_load(const char *file, const char *key, RGBA_Image_Loadopts *load_opts)
           }
      }
    LKU(cache_lock);
-   D("... ned new img\n");
+   DBG("... ned new img");
    return img_new(file, key, load_opts, buf);
 }
 
@@ -760,17 +808,17 @@ img_unload(Img *img)
 {
    if (img->ref == 0)
      {
-        printf("EEEEEEEEEEEEEEEEK!\n");
-        printf("EEEEEEEEEEEEEEEEK! %p '%s' already @ ref 0\n", 
+        ERR("EEEEEEEEEEEEEEEEK!");
+        ERR("EEEEEEEEEEEEEEEEK! %p '%s' already @ ref 0",
                img, img->file.file);
-        printf("EEEEEEEEEEEEEEEEK!\n");
+        ERR("EEEEEEEEEEEEEEEEK!");
         return;
      }
    img->ref--;
-   D("... img ref-- = %i\n", img->ref);
+   DBG("... img ref-- = %i", img->ref);
    if (img->ref == 0)
      {
-        D("... img cache %p '%s'\n", img, img->file.file);
+        DBG("... img cache %p '%s'", img, img->file.file);
         img_cache(img);
      }
 }
@@ -778,12 +826,12 @@ img_unload(Img *img)
 static void
 img_unloaddata(Img *img)
 {
-   D("img_unloaddata() %p '%s'\n", img, img->file.file);
+   DBG("img_unloaddata() %p '%s'", img, img->file.file);
    if ((img->dref <= 0) && (img->useless) && (img->mem))
      {
         Image_Entry *ie = (Image_Entry *)img;
         
-        D("... really do forced unload\n");
+        DBG("... really do forced unload");
         if (!img->active) cache_usage -= img->usage;
         img->usage -= 
           (4096 * (((img->image.w * img->image.h * sizeof(DATA32)) + 4095) / 4096)) +
@@ -794,7 +842,7 @@ img_unloaddata(Img *img)
         img->mem = NULL;
         img->image.data = NULL;
         img->dref = 0;
-        D("... done\n");
+        DBG("... done");
         
         ie->flags.loaded = 0;
         ie->allocated.w = 0;
@@ -805,7 +853,7 @@ img_unloaddata(Img *img)
 static void
 img_useless(Img *img)
 {
-   D("img_useless() %p\n", img);
+   DBG("img_useless() %p", img);
    img->useless = 1;
    if (img->dref <= 0) img_unloaddata(img);
 }
@@ -813,7 +861,7 @@ img_useless(Img *img)
 static void
 img_forcedunload(Img *img)
 {
-   D("img_forcedunload() %p\n", img);
+   DBG("img_forcedunload() %p", img);
    img->dead = 1;
    img_unload(img);
 }
@@ -821,8 +869,7 @@ img_forcedunload(Img *img)
 static void
 img_preload(Img *img)
 {
-   D("img_preload() %p\n", img);
-   printf("preload '%s'\n", img->file.file);
+   DBG("img_preload() %p", img);
 }
 
 static void
@@ -832,12 +879,12 @@ client_del(void *data, Client *c)
    Img *img;
    
    images = data;
-   D("... CLIENT DEL %i\n", c->pid);
+   DBG("... CLIENT DEL %i", c->pid);
    EINA_LIST_FREE(images, img)
      {
-        D("... unloaddata img %p\n", img);
+        DBG("... unloaddata img %p", img);
         img_unloaddata(img);
-        D("... unload img %p\n", img);
+        DBG("... unload img %p", img);
         img_unload(img);
      }
 }
@@ -871,7 +918,7 @@ load_data_thread(void *data)
         msg.mem.id = img->mem->id;
         msg.mem.offset = img->mem->offset;
         msg.mem.size = img->mem->size;
-        D("... reply\n");
+        DBG("... reply");
         evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg), (unsigned char *)(&msg));
         LKU(c->lock);
         return NULL;
@@ -887,7 +934,7 @@ load_data_thread(void *data)
    else
      msg.mem.id = msg.mem.offset = msg.mem.size = 0;
    LKU(img->lock);
-   D("... reply\n");
+   DBG("... reply");
    evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg), (unsigned char *)(&msg));
    LKU(c->lock);
    return NULL;
@@ -898,7 +945,7 @@ static int
 message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *data)
 {
    t_now = time(NULL);
-   D("message @ %i...\n", (int)t_now);
+   DBG("message @ %i...", (int)t_now);
    switch (opcode)
      {
      case OP_INIT:
@@ -909,12 +956,17 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              memset(&msg, 0, sizeof(msg));
              msg.pid = getpid();
              msg.server_id = server_id;
+             msg.handle = c;
              rep = (Op_Init *)data;
              c->pid = rep->pid;
+             if (rep->server_id == 1) // 2nd channel conn
+               {
+                  c->client_main = rep->handle;
+               }
              c->func = client_del;
              c->data = NULL;
-             D("OP_INIT %i\n", c->pid);
-             D("... reply\n");
+             DBG("OP_INIT %i", c->pid);
+             DBG("... reply");
              evas_cserve_client_send(c, OP_INIT, sizeof(msg), (unsigned char *)(&msg));
           }
         break;
@@ -923,10 +975,10 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Load *rep;
              Op_Load_Reply msg;
              Img *img;
-             RGBA_Image_Loadopts lopt = {0, 0.0, 0, 0};
+             RGBA_Image_Loadopts lopt = {0, 0.0, 0, 0, {0, 0, 0, 0}};
              char *file = NULL, *key = NULL;
              
-             D("OP_LOAD %i\n", c->pid);
+             DBG("OP_LOAD %i", c->pid);
              rep = (Op_Load *)data;
              file = data + sizeof(Op_Load);
              key = file + strlen(file) + 1;
@@ -935,17 +987,25 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              lopt.dpi = rep->lopt.dpi;
              lopt.w = rep->lopt.w;
              lopt.h = rep->lopt.h;
-             D("... img_load '%s'\n", file);
-             if (key) D("'%s'\n", key);
-             else D("   '%s'\n", NULL);
-             D("   lopt { %i %1.1f %i %i}\n", 
-               lopt.scale_down_by, lopt.dpi, lopt.w, lopt.h);
+             lopt.region.x = rep->lopt.region.x;
+             lopt.region.y = rep->lopt.region.y;
+             lopt.region.w = rep->lopt.region.w;
+             lopt.region.h = rep->lopt.region.h;
+             DBG("... img_load '%s'", file);
+             if (key) DBG("'%s'", (char *)key);
+             else DBG("   '%s'", "");
+             DBG("   lopt { %i %1.1f %i %i { %i %i %i %i}}",
+               lopt.scale_down_by, lopt.dpi, lopt.w, lopt.h, 
+               lopt.region.x, lopt.region.y, lopt.region.w, lopt.region.h);
              img = img_load(file, key, &lopt);
-             D("... img_load = %p\n", img);
+             DBG("... img_load = %p", img);
              if (img)
                {
-                  D("... add image to client list\n");
-                  c->data = eina_list_append(c->data, img);
+                  DBG("... add image to client list");
+                  if (c->client_main)
+                    c->client_main->data = eina_list_append(c->client_main->data, img);
+                  else
+                    c->data = eina_list_append(c->data, img);
                }
              memset(&msg, 0, sizeof(msg));
              msg.handle = img;
@@ -965,7 +1025,7 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                   msg.image.h = img->image.h;
                   msg.image.alpha = img->image.alpha;
                }
-             D("... reply\n");
+             DBG("... reply");
              evas_cserve_client_send(c, OP_LOAD, sizeof(msg), (unsigned char *)(&msg)); 
          } 
         break;
@@ -974,17 +1034,28 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Unload *rep;
              Img *img;
              
-             D("OP_UNLOAD %i\n", c->pid);
+             DBG("OP_UNLOAD %i", c->pid);
              rep = (Op_Unload *)data;
              img = rep->handle;
              if ((img) && (rep->server_id == server_id))
                {
-                  D("... remove %p from list\n", img);
-                  c->data = eina_list_remove(c->data, img);
-                  D("... unload %p\n", img);
+                  Eina_Bool doflush = 0;
+                  
+                  DBG("... remove %p from list", img);
+                  if (c->client_main)
+                    c->client_main->data = eina_list_remove(c->client_main->data, img);
+                  else
+                    c->data = eina_list_remove(c->data, img);
+                  DBG("... unload %p", img);
                   LKL(img->lock);
+                  img->ref++;
                   img_unload(img);
+                  img->ref--;
+                  if (img->ref == 0) doflush = 1;
                   LKU(img->lock);
+                  if (doflush)
+                    img_cache(img);
+                  cache_clean();
                }
           } 
         break;
@@ -994,14 +1065,14 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Loaddata_Reply msg;
              Img *img;
              
-             D("OP_LOADDATA %i\n", c->pid);
+             DBG("OP_LOADDATA %i", c->pid);
              rep = (Op_Loaddata *)data;
              img = rep->handle;
              if ((img) && (rep->server_id == server_id))
                {
                   if (img->mem)
                     {
-                       D("... load saved - cached %p\n", img);
+                       DBG("... load saved - cached %p", img);
                        img->stats.load2saved++;
                        stats_update();
                        memset(&msg, 0, sizeof(msg));
@@ -1013,7 +1084,7 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                          }
                        else
                          msg.mem.id = msg.mem.offset = msg.mem.size = 0;
-                       D("... reply\n");
+                       DBG("... reply");
                        evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg), (unsigned char *)(&msg));
                     }
                   else
@@ -1023,7 +1094,7 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                        pthread_attr_t attr;
                        Load_Inf *li;
                        
-                       D("... load data %p\n", img);
+                       DBG("... load data %p", img);
                        pthread_attr_init(&attr);
                        li = calloc(1, sizeof(Load_Inf));
                        if (li)
@@ -1050,7 +1121,7 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                          }
                        else
                          msg.mem.id = msg.mem.offset = msg.mem.size = 0;
-                       D("... reply\n");
+                       DBG("... reply");
                        evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg), (unsigned char *)(&msg));
 #endif
                     }
@@ -1067,16 +1138,16 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Unloaddata *rep;
              Img *img;
              
-             D("OP_UNLOADDATA %i\n", c->pid);
+             DBG("OP_UNLOADDATA %i", c->pid);
              rep = (Op_Unloaddata *)data;
              img = rep->handle;
              if ((img) && (rep->server_id == server_id))
                {
-                  D("... dref--\n");
+                  DBG("... dref--");
                   LKL(img->lock);
                   img->dref--;
                   if (img->dref < 0) img->dref = 0;
-                  D("... unload data %p '%s'\n", img, img->file.file);
+                  DBG("... unload data %p '%s'", img, img->file.file);
                   img_unloaddata(img);
                   LKU(img->lock);
                }
@@ -1087,16 +1158,16 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Unloaddata *rep;
              Img *img;
              
-             D("OP_USELESSDATA %i\n", c->pid);
+             DBG("OP_USELESSDATA %i", c->pid);
              rep = (Op_Unloaddata *)data;
              img = rep->handle;
              if ((img) && (rep->server_id == server_id))
                {
-                  D("... dref--\n");
+                  DBG("... dref--");
                   LKL(img->lock);
                   img->dref--;
                   if (img->dref < 0) img->dref = 0;
-                  D("... useless %p\n", img);
+                  DBG("... useless %p", img);
                   img_useless(img);
                   LKU(img->lock);
                }
@@ -1107,13 +1178,16 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Preload *rep;
              Img *img;
              
-             D("OP_PRELOAD %i\n", c->pid);
+             DBG("OP_PRELOAD %i", c->pid);
              rep = (Op_Preload *)data;
              img = rep->handle;
              if ((img) && (rep->server_id == server_id))
                {
                   LKL(img->lock);
-                  c->data = eina_list_remove(c->data, img);
+                  if (c->client_main)
+                    c->client_main->data = eina_list_remove(c->client_main->data, img);
+                  else
+                    c->data = eina_list_remove(c->data, img);
                   // FIXME: preload doesnt work async
                   img_preload(img);
                   LKU(img->lock);
@@ -1124,17 +1198,28 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Op_Forcedunload *rep;
              Img *img;
              
-             D("OP_FORCEDUNLOAD %i\n", c->pid);
+             DBG("OP_FORCEDUNLOAD %i", c->pid);
              rep = (Op_Forcedunload *)data;
              img = rep->handle;
              if ((img) && (rep->server_id == server_id))
                {
+                  Eina_Bool doflush = 0;
+                  
                   LKL(img->lock);
-                  D("remove %p from list\n", img);
-                  c->data = eina_list_remove(c->data, img);
-                  D("... forced unload now\n");
+                  DBG("remove %p from list", img);
+                  if (c->client_main)
+                    c->client_main->data = eina_list_remove(c->client_main->data, img);
+                  else
+                    c->data = eina_list_remove(c->data, img);
+                  DBG("... forced unload now");
+                  img->ref++;
                   img_forcedunload(img);
+                  img->ref--;
+                  if (img->ref == 0) doflush = 1;
                   LKU(img->lock);
+                  if (doflush)
+                    img_cache(img);
+                  cache_clean();
                }
           } 
         break;
@@ -1142,11 +1227,11 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
           {
              Op_Getconfig_Reply msg;
              
-             D("OP_GETCONFIG %i\n", c->pid);
+             DBG("OP_GETCONFIG %i", c->pid);
              msg.cache_max_usage = cache_max_usage;
              msg.cache_item_timeout = cache_item_timeout;
              msg.cache_item_timeout_check = cache_item_timeout_check;
-             D("... reply\n");
+             DBG("... reply");
              evas_cserve_client_send(c, OP_GETCONFIG, sizeof(msg), (unsigned char *)(&msg));
           } 
         break;
@@ -1154,14 +1239,14 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
           {
              Op_Setconfig *rep;
              
-             D("OP_SETCONFIG %i\n", c->pid);
+             DBG("OP_SETCONFIG %i", c->pid);
              rep = (Op_Setconfig *)data;
              cache_max_usage = rep->cache_max_usage;
              cache_item_timeout = rep->cache_item_timeout;
              cache_item_timeout_check = rep->cache_item_timeout_check;
-             D("... cache timeout\n");
+             DBG("... cache timeout");
              cache_timeout(t_now);
-             D("... cache clean\n");
+             DBG("... cache clean");
              cache_clean();
           } 
         break;
@@ -1169,7 +1254,7 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
           {
              Op_Getstats_Reply msg;
 
-             D("OP_GETSTATS %i\n", c->pid);
+             DBG("OP_GETSTATS %i", c->pid);
              stats_calc();
              msg.saved_memory = saved_memory;
              msg.wasted_memory = (real_memory - alloced_memory);
@@ -1177,7 +1262,7 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              msg.wasted_memory_peak = (real_memory_peak - alloced_memory_peak);
              msg.saved_time_image_header_load = saved_load_lifetime + saved_load_time;
              msg.saved_time_image_data_load = saved_loaddata_lifetime + saved_loaddata_time;
-             D("... reply\n");
+             DBG("... reply");
              evas_cserve_client_send(c, OP_GETSTATS, sizeof(msg), (unsigned char *)(&msg));
           } 
         break;
@@ -1188,19 +1273,19 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
              Eina_List *imgs = NULL, *l;
              Img *img;
              
-             D("OP_GETINFO %i\n", c->pid);
+             DBG("OP_GETINFO %i", c->pid);
              len = sizeof(Op_Getinfo_Reply);
-             D("... foreach\n");
+             DBG("... foreach");
              if (active_images)
                eina_hash_foreach(active_images, getinfo_hash_image_cb, &imgs);
-             D("... walk foreach list output\n");
+             DBG("... walk foreach list output");
              LKL(cache_lock);
              EINA_LIST_FOREACH(cache_images, l, img)
                {
                   imgs = eina_list_append(imgs, img);
                }
              LKU(cache_lock);
-             D("... walk image cache\n");
+             DBG("... walk image cache");
              EINA_LIST_FOREACH(imgs, l, img)
                {
                   len += sizeof(Op_Getinfo_Item);
@@ -1209,13 +1294,13 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                   if (img->file.key) len += strlen(img->file.key);
                   len++;
                }
-             D("... malloc msg\n");
+             DBG("... malloc msg");
              msg = malloc(len);
              if (msg)
                {
                   unsigned char *p;
                   
-                  D("...   init msg\n");
+                  DBG("...   init msg");
                   memset(msg, 0, len);
                   p = (unsigned char *)msg;
                   msg->active.mem_total = 0;
@@ -1223,13 +1308,13 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                   msg->cached.mem_total = 0;
                   msg->cached.count = 0;
                   p += sizeof(Op_Getinfo_Reply);
-                  D("...   walk all imgs\n");
+                  DBG("...   walk all imgs");
                   EINA_LIST_FOREACH(imgs, l, img)
                     {
                        Op_Getinfo_Item *itt, it;
 
                        LKL(img->lock); 
-                       D("...   img %p\n", img);
+                       DBG("...   img %p", img);
                        memset(&it, 0, sizeof(Op_Getinfo_Item));
                        itt = (Op_Getinfo_Item *)p;
                        it.file_key_size = 0;
@@ -1279,33 +1364,33 @@ message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *
                          }
                        it.dead = img->dead;
                        it.useless = img->useless;
-                       D("...   memcpy %p %p %i \n", 
+                       DBG("...   memcpy %p %p %i ", 
                          itt, &it, sizeof(Op_Getinfo_Item));
                        memcpy(itt, &it, sizeof(Op_Getinfo_Item));
-                       D("...   memcpy done n\n", img);
+                       DBG("...   memcpy done %p", img);
                        p += sizeof(Op_Getinfo_Item) + it.file_key_size;
                        LKU(img->lock); 
                     }
-                  D("...   walk all imgs done\n");
+                  DBG("...   walk all imgs done");
                   msg->active.mem_total = 
                     (msg->active.mem_total + 1023) / 1024;
                   msg->cached.mem_total = 
                     (msg->cached.mem_total + 1023) / 1024;
-                  D("... reply\n");
-                  evas_cserve_client_send(c, OP_GETINFO, len, msg);
+                  DBG("... reply");
+                  evas_cserve_client_send(c, OP_GETINFO, len, (unsigned char *)msg);
                   free(msg);
                }
              else
                {
-                  D("... reply empty\n");
+                  DBG("... reply empty");
                   evas_cserve_client_send(c, OP_GETINFO, 0, NULL);
                }
-               D("... free imgs list\n");
+               DBG("... free imgs list");
            if (imgs) eina_list_free(imgs);
           } 
         break;
      default:
-        D("OP_... UNKNOWN??? %i opcode: %i\n", c->pid, opcode);
+        DBG("OP_... UNKNOWN??? %i opcode: %i", c->pid, opcode);
         break;
      }
    return 0;
@@ -1348,12 +1433,12 @@ parse_args(int argc, char **argv)
           }
         else if (!strcmp(argv[i], "-debug"))
           {
-             eina_error_log_level_set(EINA_ERROR_LEVEL_DBG);
+	     eina_log_level_set(EINA_LOG_LEVEL_DBG);
           }
      }
 }
 
-static exit_flag = 0;
+static int exit_flag = 0;
 
 static void
 exit_handler(int x, siginfo_t *info, void *data)
@@ -1430,59 +1515,65 @@ main(int argc, char **argv)
    
    unsetenv("EVAS_CSERVE");
 
-   D("eina init...\n");
+   DBG("eina init...");
    eina_init();
-   D("evas init...\n");
+   _evas_cserve_bin_log_dom = eina_log_domain_register("Evas_cserve_bin", CSERVE_BIN_DEFAULT_COLOR);
+   if(_evas_cserve_bin_log_dom < 0) {
+     DBG("Problem with eina_log : impossible to create a log domain");
+     eina_shutdown();
+     exit(1);
+   }
+
+   DBG("evas init...");
    evas_init();
-
-   D("img init...");
+   DBG("img init...");
    img_init();
-   D("signal init...\n");
+   DBG("signal init...");
    signal_init();
-   D("cserve add...\n");
+   DBG("cserve add...");
    s = evas_cserve_server_add();
    if (!s)
      {
-        printf("ERROR: server socket init fail. abort.\n");
+        ERR("ERROR: server socket init fail. abort.");
         goto error;
      }
-   D("mem open (status)...\n");
+   DBG("mem open (status)...");
    stat_mem = evas_cserve_mem_open(0, 0, "status", sizeof(int), 0);
    if (stat_mem)
      {
-        printf("WARNING: previous evas_cserve left garbage. cleaning up.\n");
+        WRN("WARNING: previous evas_cserve left garbage. cleaning up.");
         stat_clean(stat_mem);
         evas_cserve_mem_close(stat_mem);
         stat_mem = NULL;
      }
-   D("mem new (status)...\n");
+   DBG("mem new (status)...");
    stat_mem = evas_cserve_mem_new(sizeof(int), "status");
    if (!stat_mem)
      {
-        printf("ERROR: cannot create status shmseg. abort.\n");
+        ERR("ERROR: cannot create status shmseg. abort.");
         goto error;
      }
-   D("init status...\n");
+   DBG("init status...");
    if (!stat_init(stat_mem))
      {
-        printf("ERROR: cannot init status shmseg. abort.\n");
+        ERR("cannot init status shmseg. abort.");
         evas_cserve_mem_free(stat_mem);
         stat_mem = NULL;
         goto error;
      }
    
-   D("cset server message handler...\n");
+   DBG("cset server message handler...");
    evas_cserve_server_message_handler_set(s, message, NULL);
    last_check = time(NULL);
    t_next = 0; 
    if (cache_item_timeout_check > 0) t_next = cache_item_timeout_check;
-   D("LOOP!!! ...\n");
+   DBG("LOOP!!! ...");
    for (;;)
      {
         /* fixme: timeout 0 only her - future use timeouts for timed
          * housekeping */
         if (exit_flag) break;
-        D("wait for messages...\n");
+        DBG("wait for messages...");
         evas_cserve_server_wait(s, t_next * 1000000);
         if (exit_flag) break;
         t = time(NULL);
@@ -1490,48 +1581,89 @@ main(int argc, char **argv)
         if ((cache_item_timeout_check > 0) &&
             ((t_next) >= cache_item_timeout_check))
           {
-             D("check timeout of items...\n");
+             DBG("check timeout of items...");
              t_next = cache_item_timeout_check;
              
              last_check = t;
-             D("cache timeout...\n");
+             DBG("cache timeout...");
              cache_timeout(t);
-             D("meminfo check...\n");
+             DBG("meminfo check...");
              meminfo_check();
-             D("mem cache adjust...\n");
+             DBG("mem cache adjust...");
              mem_cache_adjust();
           }
         if ((t_next <= 0) && (cache_item_timeout_check > 0))
           t_next = 1;
-        D("sleep for %isec...\n", t_next);
+        DBG("sleep for %isec...", (int)t_next);
+        
+        LKL(strshr_freeme_lock);
+        if (strshr_freeme_count > 0)
+          {
+             int i;
+             
+             for (i = 0; i < strshr_freeme_count; i++)
+               eina_stringshare_del(strshr_freeme[i]);
+             strshr_freeme_count = 0;
+          }
+        LKU(strshr_freeme_lock);
+        
+        LKL(cache_lock);
+        if (cache_cleanme)
+          {
+             Eina_List *l;
+             Img *img;
+             Eina_List *kills = NULL;
+            
+             EINA_LIST_FOREACH(cache_images, l, img)
+               {
+                  LKL(img->lock);
+                  if (img->killme)
+                    kills = eina_list_append(kills, img);
+                  LKU(img->lock);
+               }
+             while (kills)
+               {
+                  img = kills->data;
+                  kills = eina_list_remove_list(kills, kills);
+                  LKL(img->lock);
+                  cache_images = eina_list_remove(cache_images, img);
+                  img->incache--;
+                  cache_usage -= img->usage;
+                  DBG("...   IMG FREE %p", img);
+                  img_free(img);
+               }
+             cache_cleanme = 0;
+          }
+        LKU(cache_lock);
      }
-   D("end loop...\n");
+   DBG("end loop...");
    error:
-   D("cleanup...\n");
+   DBG("cleanup...");
    if (stat_mem)
      {
-        D("clean mem stat...\n");
+        DBG("clean mem stat...");
         stat_clean(stat_mem);
      }
-   D("signal shutdown...\n");
+   DBG("signal shutdown...");
    signal_shutdown();
-   D("img shutdown...\n");
+   DBG("img shutdown...");
    img_shutdown();
    if (stat_mem)
      {
-        D("free stat mem...\n");
+        DBG("free stat mem...");
         evas_cserve_mem_free(stat_mem);
         stat_mem = NULL;
      }
    if (s)
      {
-        D("del server...\n");
+        DBG("del server...");
         evas_cserve_server_del(s);
      }
-   D("evas shutdown...\n");
+   DBG("evas shutdown...");
    evas_shutdown();
-   D("eina shutdown...\n");
+   eina_log_domain_unregister(_evas_cserve_bin_log_dom);
+   DBG("eina shutdown...");
    eina_shutdown();
-   D("exit..\n");
+   DBG("exit..");
    return 0;
 }
diff --git a/src/bin/evas_cserve_tool.c b/src/bin/evas_cserve_tool.c
index fd5f71c..4a4af96 100644
--- a/src/bin/evas_cserve_tool.c
+++ b/src/bin/evas_cserve_tool.c
@@ -4,6 +4,8 @@
 
 #include "evas_cs.h"
 
+int _cserve_tool_log_dom = -1;
+
 int
 main(int argc, char **argv)
 {
diff --git a/src/lib/Evas.h b/src/lib/Evas.h
index d8775d7..91edd52 100644
--- a/src/lib/Evas.h
+++ b/src/lib/Evas.h
@@ -104,6 +104,7 @@ typedef enum _Evas_Object_Table_Homogeneous_Mode
 typedef struct _Evas_Transform Evas_Transform; /**< An Evas projective or affine transform */
 typedef struct _Evas_Coord_Rectangle  Evas_Coord_Rectangle; /**< A generic rectangle handle */
 typedef struct _Evas_Smart_Class      Evas_Smart_Class; /**< A smart object base class */
+typedef struct _Evas_Map              Evas_Map; /**< An array of map points */
 
 typedef struct _Evas Evas; /**< An Evas canvas handle */
 typedef struct _Evas_Object Evas_Object; /**< An Evas Object handle */
@@ -147,7 +148,7 @@ typedef enum _Evas_Aspect_Control
 struct _Evas_Smart_Class /** a smart object class */
 {
    const char *name; /** the string name of the class */
-   
+
    int version;
 
    void  (*add)         (Evas_Object *o);
@@ -264,6 +265,11 @@ struct _Evas_Native_Surface
 #define EVAS_TEXTURE_RESTRICT_REPEAT    4 /**< tiling clamps and any range offset repeats */
 #define EVAS_TEXTURE_PAD                5 /**< tiling extends with end values */
 
+#define EVAS_HINT_EXPAND  1.0 /**< Use with evas_object_size_hint_weight_set(), evas_object_size_hint_eight_get() */
+#define EVAS_HINT_FILL   -1.0 /**< Use with evas_object_size_hint_align_set(), evas_object_size_hint_align_get(), evas_object_size_hint_fill_set(), evas_object_size_hint_fill_get() */
+#define evas_object_size_hint_fill_set evas_object_size_hint_align_set /**< Convenience macro to make it easier to understand that align is also used for fill properties (as fill is mutually exclusive to align) */
+#define evas_object_size_hint_fill_get evas_object_size_hint_align_get /**< Convenience macro to make it easier to understand that align is also used for fill properties (as fill is mutually exclusive to align) */
+
 typedef enum _Evas_Render_Op
 {
    EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */
@@ -398,9 +404,9 @@ struct _Evas_Event_Mouse_Wheel /** Wheel event */
       Evas_Coord x, y;
    } canvas;
 
-   void		 *data;
+   void          *data;
    Evas_Modifier *modifiers;
-   Evas_Lock	 *locks;
+   Evas_Lock     *locks;
    unsigned int   timestamp;
    Evas_Event_Flags  event_flags;
 };
@@ -437,7 +443,7 @@ struct _Evas_Event_Hold /** Hold change event */
 {
    int            hold; /**< The hold flag */
    void          *data;
-   
+
    unsigned int   timestamp;
    Evas_Event_Flags  event_flags;
 };
@@ -488,7 +494,7 @@ extern "C" {
    EAPI Eina_Bool         evas_pointer_inside_get           (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
    EAPI void              evas_data_attach_set              (Evas *e, void *data) EINA_ARG_NONNULL(1);
    EAPI void             *evas_data_attach_get              (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
-       
+
 /* DOC UP TO HERE */
    EAPI void              evas_damage_rectangle_add         (Evas *e, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
    EAPI void              evas_obscured_rectangle_add       (Evas *e, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
@@ -498,7 +504,7 @@ extern "C" {
    EAPI void              evas_render                       (Evas *e) EINA_ARG_NONNULL(1);
    EAPI void              evas_norender                     (Evas *e) EINA_ARG_NONNULL(1);
    EAPI void              evas_render_idle_flush            (Evas *e) EINA_ARG_NONNULL(1);
-       
+
 /* rectangle objects */
    EAPI Evas_Object      *evas_object_rectangle_add         (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
 
@@ -595,6 +601,9 @@ extern "C" {
    EAPI void              evas_object_image_load_size_get          (const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
    EAPI void              evas_object_image_load_scale_down_set    (Evas_Object *obj, int scale_down) EINA_ARG_NONNULL(1);
    EAPI int               evas_object_image_load_scale_down_get    (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+   EAPI void              evas_object_image_load_region_set        (Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
+   EAPI void              evas_object_image_load_region_get        (const Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
+                                       
    EAPI void              evas_object_image_colorspace_set         (Evas_Object *obj, Evas_Colorspace cspace) EINA_ARG_NONNULL(1);
    EAPI Evas_Colorspace   evas_object_image_colorspace_get         (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI void                 evas_object_image_native_surface_set  (Evas_Object *obj, Evas_Native_Surface *surf) EINA_ARG_NONNULL(1, 2);
@@ -639,6 +648,7 @@ extern "C" {
    EAPI Evas_Coord        evas_object_text_inset_get        (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI Eina_Bool         evas_object_text_char_pos_get     (const Evas_Object *obj, int pos, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
    EAPI int               evas_object_text_char_coords_get  (const Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
+   EAPI int               evas_object_text_last_up_to_pos(const Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
    EAPI Evas_Text_Style_Type evas_object_text_style_get     (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI void              evas_object_text_style_set        (Evas_Object *obj, Evas_Text_Style_Type type) EINA_ARG_NONNULL(1);
    EAPI void              evas_object_text_shadow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
@@ -660,7 +670,7 @@ extern "C" {
    EAPI void              evas_font_path_append             (Evas *e, const char *path) EINA_ARG_NONNULL(1, 2);
    EAPI void              evas_font_path_prepend            (Evas *e, const char *path) EINA_ARG_NONNULL(1, 2);
    EAPI const Eina_List  *evas_font_path_list               (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   
+
    EAPI void              evas_font_hinting_set             (Evas *e, Evas_Font_Hinting_Flags hinting) EINA_ARG_NONNULL(1);
    EAPI Evas_Font_Hinting_Flags evas_font_hinting_get       (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI Eina_Bool         evas_font_hinting_can_hint        (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@@ -669,26 +679,26 @@ extern "C" {
    EAPI void              evas_font_cache_set               (Evas *e, int size) EINA_ARG_NONNULL(1);
    EAPI int               evas_font_cache_get               (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
 
-   EAPI Eina_List	 *evas_font_available_list	    (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   EAPI void		  evas_font_available_list_free	    (Evas *e, Eina_List *available) EINA_ARG_NONNULL(1);
-   
+   EAPI Eina_List        *evas_font_available_list          (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
+   EAPI void              evas_font_available_list_free     (Evas *e, Eina_List *available) EINA_ARG_NONNULL(1);
+
 /* textblock objects */
    typedef struct _Evas_Textblock_Style     Evas_Textblock_Style;
    typedef struct _Evas_Textblock_Cursor    Evas_Textblock_Cursor;
    typedef struct _Evas_Textblock_Rectangle Evas_Textblock_Rectangle;
-   
+
    struct _Evas_Textblock_Rectangle
      {
 	Evas_Coord x, y, w, h;
      };
-   
+
    typedef enum _Evas_Textblock_Text_Type
      {
 	EVAS_TEXTBLOCK_TEXT_RAW,
 	EVAS_TEXTBLOCK_TEXT_PLAIN,
 	EVAS_TEXTBLOCK_TEXT_MARKUP
      } Evas_Textblock_Text_Type;
-   
+
    EAPI Evas_Object                 *evas_object_textblock_add(Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
 
    EAPI const char                  *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@@ -699,21 +709,21 @@ extern "C" {
    EAPI void                         evas_textblock_style_free(Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
    EAPI void                         evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) EINA_ARG_NONNULL(1, 2);
    EAPI const char                  *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   
+
    EAPI void                         evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
    EAPI const Evas_Textblock_Style  *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI void                         evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch) EINA_ARG_NONNULL(1);
    EAPI const char                  *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   
+
    EAPI void                         evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
    EAPI void                         evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
    EAPI const char                  *evas_object_textblock_text_markup_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   
+
    EAPI const Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI Evas_Textblock_Cursor       *evas_object_textblock_cursor_new(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
-   
+
    EAPI void                         evas_textblock_cursor_free(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
-   
+
    EAPI void                         evas_textblock_cursor_node_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
    EAPI void                         evas_textblock_cursor_node_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool                    evas_textblock_cursor_node_next(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
@@ -729,7 +739,7 @@ extern "C" {
    EAPI Eina_Bool                    evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line) EINA_ARG_NONNULL(1);
    EAPI int                          evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
    EAPI void                         evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) EINA_ARG_NONNULL(1, 2);
-   
+
    EAPI void                         evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
    EAPI void                         evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
 
@@ -738,29 +748,29 @@ extern "C" {
    EAPI void                         evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
    EAPI void                         evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
    EAPI void                         evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) EINA_ARG_NONNULL(1, 2);
-   
+
    EAPI const char                  *evas_textblock_cursor_node_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI int                          evas_textblock_cursor_node_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI const char                  *evas_textblock_cursor_node_format_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI Eina_Bool                    evas_textblock_cursor_node_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI char                        *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
-       
+
    EAPI int                          evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
    EAPI int                          evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool                    evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
    EAPI int                          evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1);
    EAPI Eina_List                   *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
-   
+
    EAPI Eina_Bool                    evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI void                         evas_textblock_cursor_eol_set(Evas_Textblock_Cursor *cur, Eina_Bool eol) EINA_ARG_NONNULL(1);
-   
+
    EAPI Eina_Bool                    evas_object_textblock_line_number_geometry_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
    EAPI void                         evas_object_textblock_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void                         evas_object_textblock_size_formatted_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
    EAPI void                         evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
    EAPI void                         evas_object_textblock_style_insets_get(const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b) EINA_ARG_NONNULL(1);
-   
-   
+
+
 /* general objects */
    EAPI void              evas_object_del                   (Evas_Object *obj) EINA_ARG_NONNULL(1);
 
@@ -796,7 +806,7 @@ extern "C" {
    EAPI void              evas_object_size_hint_weight_set  (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
    EAPI void              evas_object_size_hint_padding_get (const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b) EINA_ARG_NONNULL(1);
    EAPI void              evas_object_size_hint_padding_set (Evas_Object *obj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b) EINA_ARG_NONNULL(1);
-       
+
    EAPI void              evas_object_show                  (Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void              evas_object_hide                  (Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool         evas_object_visible_get           (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@@ -838,8 +848,40 @@ extern "C" {
    EAPI Eina_List        *evas_objects_at_xy_get            (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI Eina_List        *evas_objects_in_rectangle_get     (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
 
+   EAPI void              evas_object_map_enable_set        (Evas_Object *obj, Eina_Bool enabled);
+   EAPI Eina_Bool         evas_object_map_enable_get        (const Evas_Object *obj);
+   EAPI void              evas_object_map_set               (Evas_Object *obj, const Evas_Map *map);
+   EAPI const Evas_Map   *evas_object_map_get               (const Evas_Object *obj);
+
+   EAPI void              evas_map_util_points_populate_from_object_full   (Evas_Map *m, const Evas_Object *obj, Evas_Coord z);
+   EAPI void              evas_map_util_points_populate_from_object        (Evas_Map *m, const Evas_Object *obj);
+   EAPI void              evas_map_util_points_populate_from_geometry      (Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Coord z);
+
+   EAPI void              evas_map_util_points_color_set                   (Evas_Map *m, int r, int g, int b, int a);
+
+   EAPI void              evas_map_util_rotate              (Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy);
+   EAPI void              evas_map_util_zoom                (Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy);
+   EAPI void              evas_map_util_3d_rotate           (Evas_Map *m, double dx, double dy, double dz, Evas_Coord cx, Evas_Coord cy, Evas_Coord cz);
+   EAPI void              evas_map_util_3d_lighting         (Evas_Map *m, Evas_Coord lx, Evas_Coord ly, Evas_Coord lz, int lr, int lg, int lb, int ar, int ab, int ag);
+   EAPI void              evas_map_util_3d_perspective      (Evas_Map *m, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
+   EAPI Eina_Bool         evas_map_util_clockwise_get       (Evas_Map *m);
+
+   EAPI Evas_Map         *evas_map_new                      (int count);
+   EAPI void              evas_map_smooth_set               (Evas_Map *m, Eina_Bool enabled);
+   EAPI Eina_Bool         evas_map_smooth_get               (const Evas_Map *m);
+   EAPI void              evas_map_alpha_set                (Evas_Map *m, Eina_Bool enabled);
+   EAPI Eina_Bool         evas_map_alpha_get                (const Evas_Map *m);
+   EAPI Evas_Map         *evas_map_dup                      (const Evas_Map *m);
+   EAPI void              evas_map_free                     (Evas_Map *m);
+   EAPI void              evas_map_point_coord_set          (Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_Coord z);
+   EAPI void              evas_map_point_coord_get          (const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z);
+   EAPI void              evas_map_point_image_uv_set       (Evas_Map *m, int idx, double u, double v);
+   EAPI void              evas_map_point_image_uv_get       (const Evas_Map *m, int idx, double *u, double *v);
+   EAPI void              evas_map_point_color_set          (Evas_Map *m, int idx, int r, int g, int b, int a);
+   EAPI void              evas_map_point_color_get          (const Evas_Map *m, int idx, int *r, int *g, int *b, int *a);
+       
 /* smart objects */
-   EAPI Evas_Smart       *evas_smart_new                    (const char *name, void (*func_add) (Evas_Object *obj), void (*func_del) (Evas_Object *obj), void (*func_layer_set) (Evas_Object *obj, int l), void (*func_raise) (Evas_Object *obj), void (*func_lower) (Evas_Object *obj), void (*func_stack_above) (Evas_Object *obj, Evas_Object *above), void (*func_stack_below) (Evas_Object *obj, Evas_Object *below), void (*func_move) (Evas_Object *obj, Evas_Coord x, Evas_Coord y), void (*func_resize) (Evas_Object *obj, Evas_Coord w, Evas_Coord h), void (*func_show) (Evas_Object *obj), void (*func_hide) (Evas_Object *obj), void (*func_color_set) (Evas_Object *obj, int r, int g, int b, int a), void (*func_clip_set) (Evas_Object *obj, Evas_Object *clip), void (*func_clip_unset) (Evas_Object *obj), const void *data) EINA_DEPRECATED  EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
+   EINA_DEPRECATED EAPI Evas_Smart *evas_smart_new          (const char *name, void (*func_add) (Evas_Object *obj), void (*func_del) (Evas_Object *obj), void (*func_layer_set) (Evas_Object *obj, int l), void (*func_raise) (Evas_Object *obj), void (*func_lower) (Evas_Object *obj), void (*func_stack_above) (Evas_Object *obj, Evas_Object *above), void (*func_stack_below) (Evas_Object *obj, Evas_Object *below), void (*func_move) (Evas_Object *obj, Evas_Coord x, Evas_Coord y), void (*func_resize) (Evas_Object *obj, Evas_Coord w, Evas_Coord h), void (*func_show) (Evas_Object *obj), void (*func_hide) (Evas_Object *obj), void (*func_color_set) (Evas_Object *obj, int r, int g, int b, int a), void (*func_clip_set) (Evas_Object *obj, Evas_Object *clip), void (*func_clip_unset) (Evas_Object *obj), const void *data) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
    EAPI void              evas_smart_free                   (Evas_Smart *s) EINA_ARG_NONNULL(1);
    EAPI Evas_Smart       *evas_smart_class_new              (const Evas_Smart_Class *sc) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
    EAPI const Evas_Smart_Class *evas_smart_class_get        (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@@ -861,7 +903,8 @@ extern "C" {
    EAPI void              evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool         evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
    EAPI void              evas_object_smart_calculate       (Evas_Object *obj) EINA_ARG_NONNULL(1);
-
+   
+   EAPI void              evas_smart_objects_calculate      (Evas *e);
 
 /* events */
    EAPI void              evas_event_freeze                 (Evas *e) EINA_ARG_NONNULL(1);
@@ -914,7 +957,7 @@ extern "C" {
    EAPI void              evas_object_pointer_mode_set      (Evas_Object *obj, Evas_Object_Pointer_Mode setting) EINA_ARG_NONNULL(1);
    EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
 
-       
+
    EAPI void              evas_object_precise_is_inside_set (Evas_Object *obj, Eina_Bool precise) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool         evas_object_precise_is_inside_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
 
@@ -922,9 +965,9 @@ extern "C" {
    EAPI void             *evas_object_event_callback_del    (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info)) EINA_ARG_NONNULL(1, 3);
    EAPI void             *evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data) EINA_ARG_NONNULL(1, 3);
 
-   EAPI int		  evas_async_events_fd_get          (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
-   EAPI int		  evas_async_events_process	    (void);
-   EAPI Eina_Bool	  evas_async_events_put             (const void *target, Evas_Callback_Type type, void *event_info, void (*func)(void *target, Evas_Callback_Type type, void *event_info)) EINA_ARG_NONNULL(1, 4);
+   EAPI int               evas_async_events_fd_get          (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
+   EAPI int               evas_async_events_process         (void);
+   EAPI Eina_Bool         evas_async_events_put             (const void *target, Evas_Callback_Type type, void *event_info, void (*func)(void *target, Evas_Callback_Type type, void *event_info)) EINA_ARG_NONNULL(1, 4);
 
    EAPI void              evas_object_intercept_show_callback_add        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void             *evas_object_intercept_show_callback_del        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
@@ -955,7 +998,7 @@ extern "C" {
    typedef struct _Evas_Cserve_Image_Cache Evas_Cserve_Image_Cache;
    typedef struct _Evas_Cserve_Image Evas_Cserve_Image;
    typedef struct _Evas_Cserve_Config Evas_Cserve_Config;
-   
+
    struct _Evas_Cserve_Stats
      {
         int saved_memory;
@@ -965,7 +1008,7 @@ extern "C" {
         double saved_time_image_header_load;
         double saved_time_image_data_load;
      };
-   
+
    struct _Evas_Cserve_Image_Cache
      {
         struct {
@@ -974,7 +1017,7 @@ extern "C" {
         } active, cached;
         Eina_List *images;
      };
-   
+
    struct _Evas_Cserve_Image
      {
         const char *file, *key;
@@ -993,14 +1036,14 @@ extern "C" {
         Eina_Bool dead : 1;
         Eina_Bool useless : 1;
      };
-   
+
     struct _Evas_Cserve_Config
      {
         int cache_max_usage;
         int cache_item_timeout;
         int cache_item_timeout_check;
      };
-   
+
    EAPI Eina_Bool         evas_cserve_want_get                   (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
    EAPI Eina_Bool         evas_cserve_connected_get              (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
    EAPI Eina_Bool         evas_cserve_stats_get                  (Evas_Cserve_Stats *stats) EINA_WARN_UNUSED_RESULT EINA_PURE;
@@ -1008,7 +1051,7 @@ extern "C" {
    EAPI Eina_Bool         evas_cserve_config_get                 (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE;
    EAPI Eina_Bool         evas_cserve_config_set                 (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE;
    EAPI void              evas_cserve_disconnect                 (void) EINA_PURE;
-       
+
 /* Evas utility routines for color space conversions */
 /* hsv color space has h in the range 0.0 to 360.0, and s,v in the range 0.0 to 1.0 */
 /* rgb color space has r,g,b in the range 0 to 255 */
@@ -1053,7 +1096,7 @@ extern "C" {
    EAPI void                    evas_imaging_font_hinting_set      (Evas_Font_Hinting_Flags hinting);
    EAPI Evas_Font_Hinting_Flags evas_imaging_font_hinting_get      (void) EINA_WARN_UNUSED_RESULT;
    EAPI Eina_Bool               evas_imaging_font_hinting_can_hint (Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT;
-   
+
    EAPI Evas_Imaging_Font  *evas_imaging_font_load                      (const char *file, const char *key, int size) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
    EAPI void                evas_imaging_font_free                      (Evas_Imaging_Font *fn) EINA_ARG_NONNULL(1);
    EAPI int                 evas_imaging_font_ascent_get                (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@@ -1098,12 +1141,15 @@ extern "C" {
    typedef struct _Evas_Object_Box_Option     Evas_Object_Box_Option;
    typedef void (*Evas_Object_Box_Layout)(Evas_Object *o, Evas_Object_Box_Data *priv, void *user_data);
 
+#define EVAS_OBJECT_BOX_API_VERSION 1
    struct _Evas_Object_Box_Api
    {
       Evas_Smart_Class base;
+      int version;
       Evas_Object_Box_Option *(*append)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
       Evas_Object_Box_Option *(*prepend)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
       Evas_Object_Box_Option *(*insert_before)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference);
+      Evas_Object_Box_Option *(*insert_after)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference);
       Evas_Object_Box_Option *(*insert_at)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos);
       Evas_Object            *(*remove)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
       Evas_Object            *(*remove_at)(Evas_Object *o, Evas_Object_Box_Data *priv, unsigned int pos);
@@ -1128,7 +1174,7 @@ extern "C" {
  * @see EVAS_OBJECT_BOX_API_INIT_VERSION
  * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
  */
-#define EVAS_OBJECT_BOX_API_INIT(smart_class_init) {smart_class_init, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
+#define EVAS_OBJECT_BOX_API_INIT(smart_class_init) {smart_class_init, EVAS_OBJECT_BOX_API_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
 
 /**
  * Initializer to zero a whole Evas_Object_Box_Api structure.
@@ -1185,6 +1231,7 @@ extern "C" {
 	 void *data;
 	 void (*free_data)(void *data);
       } layout;
+      Eina_Bool layouting : 1;
    };
 
    struct _Evas_Object_Box_Option
@@ -1198,7 +1245,7 @@ extern "C" {
    EAPI Evas_Object *evas_object_box_add(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
    EAPI Evas_Object *evas_object_box_add_to(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
 
-  EAPI void evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
+   EAPI void evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
@@ -1216,6 +1263,7 @@ extern "C" {
    EAPI Evas_Object_Box_Option *evas_object_box_append(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
    EAPI Evas_Object_Box_Option *evas_object_box_prepend(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
    EAPI Evas_Object_Box_Option *evas_object_box_insert_before(Evas_Object *o, Evas_Object *child, const Evas_Object *reference) EINA_ARG_NONNULL(1, 2, 3);
+   EAPI Evas_Object_Box_Option *evas_object_box_insert_after(Evas_Object *o, Evas_Object *child, const Evas_Object *referente) EINA_ARG_NONNULL(1, 2, 3);
    EAPI Evas_Object_Box_Option *evas_object_box_insert_at(Evas_Object *o, Evas_Object *child, unsigned int pos) EINA_ARG_NONNULL(1, 2);
    EAPI Eina_Bool               evas_object_box_remove(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
    EAPI Eina_Bool               evas_object_box_remove_at(Evas_Object *o, unsigned int pos) EINA_ARG_NONNULL(1);
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index f92fa8f..befcdd9 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -404,17 +404,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -502,8 +505,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -684,7 +687,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/cache/Makefile.in b/src/lib/cache/Makefile.in
index 7385d1b..e5cd568 100644
--- a/src/lib/cache/Makefile.in
+++ b/src/lib/cache/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -276,17 +276,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -318,8 +321,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -396,7 +399,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/cache/evas_cache.h b/src/lib/cache/evas_cache.h
index 605d9cf..989d3e1 100644
--- a/src/lib/cache/evas_cache.h
+++ b/src/lib/cache/evas_cache.h
@@ -111,6 +111,7 @@ extern "C" {
 EAPI Evas_Cache_Image*        evas_cache_image_init(const Evas_Cache_Image_Func *cb);
 EAPI void                     evas_cache_image_shutdown(Evas_Cache_Image *cache);
 EAPI Image_Entry*             evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *key, RGBA_Image_Loadopts *lo, int *error);
+EAPI void                     evas_cache_pending_process(void);
 EAPI void                     evas_cache_image_drop(Image_Entry *im);
 EAPI void                     evas_cache_image_data_not_needed(Image_Entry *im);
 EAPI int                      evas_cache_image_flush(Evas_Cache_Image *cache);
diff --git a/src/lib/cache/evas_cache_engine_image.c b/src/lib/cache/evas_cache_engine_image.c
index d01dcc1..71ef944 100644
--- a/src/lib/cache/evas_cache_engine_image.c
+++ b/src/lib/cache/evas_cache_engine_image.c
@@ -620,7 +620,7 @@ evas_cache_engine_image_load_data(Engine_Image_Entry *eim)
    assert(eim->src);
    assert(eim->cache);
 
-   if (eim->flags.loaded) return ;
+   if (eim->flags.loaded) return;
 
    if (eim->src)
      evas_cache_image_load_data(eim->src);
diff --git a/src/lib/cache/evas_cache_image.c b/src/lib/cache/evas_cache_image.c
index 988cdaa..c114c62 100644
--- a/src/lib/cache/evas_cache_image.c
+++ b/src/lib/cache/evas_cache_image.c
@@ -20,7 +20,7 @@
 
 #ifdef EVAS_CSERVE
 // FIXME: cache server and threaded preload clash badly atm - disable
-#undef BUILD_ASYNC_PRELOAD
+//#undef BUILD_ASYNC_PRELOAD
 #endif
 
 #ifdef BUILD_ASYNC_PRELOAD
@@ -36,17 +36,21 @@ struct _Evas_Cache_Preload
 
 static Eina_Inlist *preload = NULL;
 static Image_Entry *current = NULL;
+static Eina_List   *pending = NULL;
 
 static pthread_cond_t cond_done = PTHREAD_COND_INITIALIZER;
 static pthread_cond_t cond_new = PTHREAD_COND_INITIALIZER;
 static pthread_mutex_t mutex_new = PTHREAD_MUTEX_INITIALIZER;
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t mutex_pending = PTHREAD_MUTEX_INITIALIZER;
 static pthread_mutex_t mutex_surface_alloc = PTHREAD_MUTEX_INITIALIZER;
 static pthread_t tid = 0;
 
 static Eina_Bool running = EINA_FALSE;
 
-static void* _evas_cache_background_load(void *);
+static void *_evas_cache_background_load(void *);
+static void _evas_cache_image_entry_clear_preloaders(Image_Entry *ie);
+static int _evas_cache_image_entry_preload_remove(Image_Entry *ie, const void *target);
 #endif
 
 #define FREESTRC(Var)              \
@@ -80,6 +84,16 @@ _evas_cache_image_make_activ(Evas_Cache_Image *cache,
                              Image_Entry *im,
                              const char *key)
 {
+#ifdef BUILD_ASYNC_PRELOAD
+   pthread_mutex_lock(&mutex);
+   if (im->flags.pending)
+     {
+        im->flags.pending = 0;
+        pending = eina_list_remove(pending, im);
+     }
+   pthread_mutex_unlock(&mutex);
+#endif
+
    im->cache_key = key;
    if (key != NULL)
      {
@@ -175,6 +189,10 @@ _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie)
    if (cache->func.debug)
      cache->func.debug("deleting", ie);
 
+#ifdef BUILD_ASYNC_PRELOAD
+   _evas_cache_image_entry_preload_remove(ie, NULL);
+#endif
+
    cache->func.destructor(ie);
 
    _evas_cache_image_remove_activ(cache, ie);
@@ -188,6 +206,8 @@ _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie)
    FREESTRC(ie->file);
    FREESTRC(ie->key);
 
+   ie->cache = NULL;
+
    cache->func.surface_delete(ie);
 
 #ifdef BUILD_ASYNC_PRELOAD
@@ -239,6 +259,10 @@ _evas_cache_image_entry_new(Evas_Cache_Image *cache,
    ie->load_opts.dpi = 0;
    ie->load_opts.w = 0;
    ie->load_opts.h = 0;
+   ie->load_opts.region.x = 0;
+   ie->load_opts.region.y = 0;
+   ie->load_opts.region.w = 0;
+   ie->load_opts.region.h = 0;
    ie->scale = 1;
 
 #ifdef BUILD_ASYNC_PRELOAD
@@ -308,20 +332,37 @@ _evas_cache_image_entry_surface_alloc(Evas_Cache_Image *cache,
 
 #ifdef BUILD_ASYNC_PRELOAD
 static void
-_evas_cache_image_async_call__locked(Image_Entry *im)
+_evas_cache_image_async_call_process(void *obj, Evas_Callback_Type type, void *data)
 {
-   while (im->targets)
+   Image_Entry *ie = (Image_Entry *) obj;
+
+   ie->flags.in_pipe = 0;
+   while (ie->targets)
      {
-	Evas_Cache_Target *tmp = im->targets;
+	Evas_Cache_Target *tmp = ie->targets;
 
-	evas_async_events_put(tmp->target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL,
-			      (void (*)(void*, Evas_Callback_Type, void*))evas_object_event_callback_call);
-	im->targets = (Evas_Cache_Target*) eina_inlist_remove(EINA_INLIST_GET(im->targets), EINA_INLIST_GET(im->targets));
+	evas_object_event_callback_call((Evas_Object*) tmp->target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL);
+	ie->targets = (Evas_Cache_Target*) eina_inlist_remove(EINA_INLIST_GET(ie->targets), EINA_INLIST_GET(ie->targets));
 	free(tmp);
      }
 }
 
 static void
+_evas_cache_image_entry_clear_preloaders(Image_Entry *ie)
+{
+   ie->flags.preload = 0;
+   ie->flags.in_pipe = 0;
+   evas_async_target_del(ie);
+}
+
+static void
+_evas_cache_image_async_call__locked(Image_Entry *im)
+{
+   evas_async_events_put(im, EVAS_CALLBACK_IMAGE_PRELOADED, NULL,
+			 _evas_cache_image_async_call_process);
+}
+
+static void
 _evas_cache_image_async_call(Image_Entry *im)
 {
    pthread_mutex_lock(&mutex);
@@ -357,6 +398,11 @@ _evas_cache_image_entry_preload_add(Image_Entry *ie,
 	     preload = eina_inlist_append(preload, EINA_INLIST_GET(tmp));
 
 	     ie->flags.preload = 1;
+             if (ie->flags.pending)
+               {
+                  ie->flags.pending = 0;
+                  pending = eina_list_remove(pending, ie);
+               }
 
 	     if (!running)
 	       {
@@ -388,65 +434,156 @@ _evas_cache_image_entry_preload_remove(Image_Entry *ie, const void *target)
 {
    int ret = 0;
 
-   if (running)
+   pthread_mutex_lock(&mutex);
+   if (target)
      {
-	pthread_mutex_lock(&mutex);
+	Evas_Cache_Target *tg;
 
-	if (ie->flags.preload)
+	EINA_INLIST_FOREACH(ie->targets, tg)
 	  {
-	     if (current == ie)
+	     if (tg->target == target)
 	       {
-		  /* Wait until ie is processed. */
-		  pthread_cond_wait(&cond_done, &mutex);
+ 		  // FIXME: No callback when we cancel only for one target ?
+		  ie->targets = (Evas_Cache_Target*) eina_inlist_remove(EINA_INLIST_GET(ie->targets), EINA_INLIST_GET(tg));
+		  free(tg);
+		  break;
 	       }
-	     else
+	  }
+     }
+
+   if (ie->flags.in_pipe)
+     {
+	if (!ie->targets)
+	  _evas_cache_image_entry_clear_preloaders(ie);
+     }
+   else if (ie->flags.preload)
+     {
+	if (current == ie)
+	  {
+// dont wait. simply handle "ie->flags.preload" nicely
+//		  /* Wait until ie is processed. */
+//		  pthread_cond_wait(&cond_done, &mutex);
+	  }
+	else
+	  {
+	     Evas_Cache_Preload *l;
+
+	     EINA_INLIST_FOREACH(preload, l)
 	       {
-		  Evas_Cache_Preload *l;
-		  EINA_INLIST_FOREACH(preload, l)
+		  if (l->ie == ie)
 		    {
-		       if (l->ie == ie)
+		       if (target)
 			 {
-			    Evas_Cache_Target *tg;
-
-			    if (target) {
-			       EINA_INLIST_FOREACH(ie->targets, tg)
-				 {
-				    if (tg->target == target) {
-				       ie->targets = (Evas_Cache_Target*) eina_inlist_remove(EINA_INLIST_GET(ie->targets), EINA_INLIST_GET(tg));
-				       free(tg);
-				       break;
-				    }
-				 }
-			    } else {
-			       _evas_cache_image_async_call__locked(ie);
-
-			       while (ie->targets)
-				 {
-				    tg = ie->targets;
-				    ie->targets = (Evas_Cache_Target*) eina_inlist_remove(EINA_INLIST_GET(ie->targets), EINA_INLIST_GET(tg));
-				    free(tg);
-				 }
-			    }
-
+			    // FIXME: No callback when we cancel only for one target ?
 			    if (!ie->targets)
-			      {
-				 preload = eina_inlist_remove(preload,
-							      EINA_INLIST_GET(l));
-				 free(l);
-			      }
+			      _evas_cache_image_entry_clear_preloaders(ie);
+			 }
+		       else
+			 {
+			    _evas_cache_image_async_call__locked(ie);
+			 }
 
-			    break;
+		       if (!ie->targets)
+			 {
+			    ie->flags.preload = 0;
+			    preload = eina_inlist_remove(preload,
+							 EINA_INLIST_GET(l));
+			    free(l);
 			 }
+
+		       break;
 		    }
-		  ie->flags.preload = 0;
-		  ret = 1;
 	       }
+	     ret = 1;
+	  }
+     }
+   pthread_mutex_unlock(&mutex);
+
+   return ret;
+}
+
+static void*
+_evas_cache_background_load(void *data)
+{
+   (void) data;
+   
+   restart:
+   while (preload)
+     {
+	pthread_mutex_lock(&mutex);
+	if (preload)
+	  {
+	     Evas_Cache_Preload *tmp = (Evas_Cache_Preload*) preload;
+             
+	     current = tmp->ie;
+	     preload = eina_inlist_remove(preload, preload);
+
+	     free(tmp);
 	  }
 
 	pthread_mutex_unlock(&mutex);
+
+	if (current)
+	  {
+	     Evas_Cache_Image *cache;
+	     int error;
+             int pchannel;
+
+	     LKL(current->lock);
+             pchannel = current->channel;
+             current->channel++;
+	     cache = current->cache;
+
+             if (!current->flags.loaded)
+               {
+                  error = cache->func.load(current);
+                  if (cache->func.debug)
+                    cache->func.debug("load", current);
+                  if (error)
+                    {
+                       _evas_cache_image_entry_surface_alloc
+                         (cache, current, current->w, current->h);
+                       current->flags.loaded = 0;
+                    }
+                  else
+                    current->flags.loaded = 1;
+               }
+             
+             pthread_mutex_lock(&mutex);
+             pthread_mutex_lock(&mutex_pending);
+	     current->flags.preload = 0;
+	     current->flags.in_pipe = 1;
+             current->channel = pchannel;
+	     LKU(current->lock);
+             pthread_mutex_unlock(&mutex_pending);
+             pthread_mutex_unlock(&mutex);
+             
+	     _evas_cache_image_async_call(current);
+             
+             pthread_mutex_lock(&mutex);
+	     current = NULL;
+             pthread_mutex_unlock(&mutex);
+	  }
+
+	pthread_cond_signal(&cond_done);
      }
 
-   return ret;
+   pthread_mutex_lock(&mutex);
+   if (preload)
+     {
+	pthread_mutex_unlock(&mutex);
+	goto restart;
+     }
+
+   running = EINA_FALSE;
+   pthread_mutex_unlock(&mutex);
+
+   pthread_mutex_lock(&mutex_new);
+   pthread_cond_wait(&cond_new, &mutex_new);
+   pthread_mutex_unlock(&mutex_new);
+   goto restart;
+
+   return NULL;
 }
 #endif
 
@@ -510,21 +647,6 @@ _evas_cache_image_free_cb(__UNUSED__ const Eina_Hash *hash, __UNUSED__ const voi
    return EINA_TRUE;
 }
 
-#ifdef BUILD_ASYNC_PRELOAD
-static void
-_evas_cache_image_entry_clear_preloaders(Image_Entry *ie)
-{
-   while (ie->targets)
-     {
-	Evas_Cache_Target *t = ie->targets;
-	ie->targets = (Evas_Cache_Target *)
-	  eina_inlist_remove(EINA_INLIST_GET(ie->targets),
-			     EINA_INLIST_GET(ie->targets));
-	free(t);
-     }
-}
-#endif
-
 EAPI void
 evas_cache_image_shutdown(Evas_Cache_Image *cache)
 {
@@ -539,24 +661,25 @@ evas_cache_image_shutdown(Evas_Cache_Image *cache)
 
 #ifdef BUILD_ASYNC_PRELOAD
    pthread_mutex_lock(&mutex);
-   if (running)
+
+   Eina_Inlist *l, *l_next;
+   for (l = preload; l != NULL; l = l_next)
      {
-	Eina_Inlist *l, *l_next;
-	for (l = preload; l != NULL; l = l_next)
-	  {
-	     Evas_Cache_Preload *tmp = (Evas_Cache_Preload *)l;
-	     Image_Entry *ie = tmp->ie;
+	Evas_Cache_Preload *tmp = (Evas_Cache_Preload *)l;
+	Image_Entry *ie = tmp->ie;
 
-	     l_next = l->next;
+	l_next = l->next;
 
-	     if (ie->cache != cache)
-	       continue;
+	if (ie->cache != cache)
+	  continue;
 
-	     preload = eina_inlist_remove(preload, l);
-	     _evas_cache_image_entry_clear_preloaders(ie);
-	     free(l);
-	  }
+	preload = eina_inlist_remove(preload, l);
+	_evas_cache_image_entry_clear_preloaders(ie);
+	free(l);
      }
+
+   if (current && current->cache == cache)
+     _evas_cache_image_entry_clear_preloaders(current);
    pthread_mutex_unlock(&mutex);
 #endif
 
@@ -600,14 +723,13 @@ EAPI Image_Entry *
 evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *key, RGBA_Image_Loadopts *lo, int *error)
 {
    const char           *ckey = "(null)";
-   const char           *format;
    char                 *hkey;
    Image_Entry          *im;
-   Evas_Image_Load_Opts  prevent = { 0, 0, 0, 0 };
-   int                   size;
+   Evas_Image_Load_Opts  prevent = { 0, 0, 0, 0, { 0, 0, 0, 0 } };
+   size_t                size;
    int                   stat_done = 0;
-   int                   file_length;
-   int                   key_length;
+   size_t                file_length;
+   size_t                key_length;
    struct stat           st;
 
    assert(cache != NULL);
@@ -618,7 +740,7 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *
    file_length = strlen(file);
    key_length = key ? strlen(key) : 6;
 
-   size = file_length + key_length + 64;
+   size = file_length + key_length + 128;
    hkey = alloca(sizeof (char) * size);
 
    memcpy(hkey, file, file_length);
@@ -635,13 +757,15 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *
        (lo &&
         (lo->scale_down_by == 0) &&
         (lo->dpi == 0.0) &&
-        ((lo->w == 0) || (lo->h == 0))))
+        ((lo->w == 0) || (lo->h == 0)) &&
+        ((lo->region.w == 0) || (lo->region.w == 0))
+        ))
      {
         lo = &prevent;
-        if (key)
-          format = "%s//://%s";
-        else
-          format = "%s//://%p";
+//        if (key)
+//          format = "%s//://%s";
+//        else
+//          format = "%s//://%p";
      }
    else
      {
@@ -664,6 +788,26 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *
 	size += 1;
 
 	size += eina_convert_xtoa(lo->h, hkey + size);
+        
+	hkey[size] = '/';
+	size += 1;
+
+	size += eina_convert_xtoa(lo->region.x, hkey + size);
+        
+	hkey[size] = '+';
+	size += 1;
+        
+	size += eina_convert_xtoa(lo->region.y, hkey + size);
+        
+	hkey[size] = '.';
+	size += 1;
+        
+	size += eina_convert_xtoa(lo->region.w, hkey + size);
+        
+	hkey[size] = 'x';
+	size += 1;
+        
+	size += eina_convert_xtoa(lo->region.h, hkey + size);
      }
 
    hkey[size] = '\0';
@@ -748,6 +892,43 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *
 }
 
 EAPI void
+evas_cache_pending_process(void)
+{
+   Image_Entry *im;
+   
+#ifdef BUILD_ASYNC_PRELOAD
+   pthread_mutex_lock(&mutex_pending);
+   EINA_LIST_FREE(pending, im)
+     {
+        Evas_Cache_Image *cache = im->cache;
+
+        if (!im->flags.pending) continue;
+        im->flags.pending = 0;
+        if (im->flags.preload) continue;
+        
+        if (im->flags.activ)
+          {
+             if (im->flags.dirty)
+               {
+                  _evas_cache_image_entry_delete(cache, im);
+               }
+             else
+               {
+                  _evas_cache_image_remove_activ(cache, im);
+                  _evas_cache_image_make_inactiv(cache, im, im->cache_key);
+                  evas_cache_image_flush(cache);
+               }
+          }
+        else if (im->flags.cached)
+          {
+             evas_cache_image_flush(cache);
+          }
+     }
+   pthread_mutex_unlock(&mutex_pending);
+#endif   
+}
+
+EAPI void
 evas_cache_image_drop(Image_Entry *im)
 {
    Evas_Cache_Image    *cache;
@@ -761,15 +942,32 @@ evas_cache_image_drop(Image_Entry *im)
    if (im->references == 0)
      {
 #ifdef BUILD_ASYNC_PRELOAD
-	_evas_cache_image_entry_preload_remove(im, NULL);
+	if (!im->flags.pending)
+	  {
+	     pthread_mutex_lock(&mutex);
+	     if (im->flags.preload || im->flags.in_pipe)
+	       {
+		  pthread_mutex_unlock(&mutex);
+		  _evas_cache_image_entry_preload_remove(im, NULL);
+		  pthread_mutex_lock(&mutex_pending);
+		  if (!im->flags.pending)
+		    {
+		       im->flags.pending = 1;
+		       pending = eina_list_append(pending, im);
+		    }
+		  pthread_mutex_unlock(&mutex_pending);
+		  return;
+	       }
+	     pthread_mutex_unlock(&mutex);
+	  }
 #endif
 
 	if (im->flags.dirty)
 	  {
 	     _evas_cache_image_entry_delete(cache, im);
-	     return ;
+	     return;
 	  }
-
+        
         _evas_cache_image_remove_activ(cache, im);
 	_evas_cache_image_make_inactiv(cache, im, im->cache_key);
 	evas_cache_image_flush(cache);
@@ -1045,31 +1243,41 @@ EAPI void
 evas_cache_image_load_data(Image_Entry *im)
 {
    Evas_Cache_Image    *cache;
-   int                  error;
+   int                  error, preload;
 
    assert(im);
    assert(im->cache);
    cache = im->cache;
 
-   if (im->flags.loaded) return ;
-
+   if (im->flags.loaded)
+     {
+	return;
+     }
 #ifdef BUILD_ASYNC_PRELOAD
-   int preload = im->flags.preload;
+   pthread_mutex_lock(&mutex);
+   preload = im->flags.preload;
    /* We check a first time, to prevent useless lock. */
-   _evas_cache_image_entry_preload_remove(im, NULL);
+   if (preload)
+     {
+        if (current == im)
+          {
+             /* Wait until ie is processed. */
+             pthread_cond_wait(&cond_done, &mutex);
+          }
+     }
+   pthread_mutex_unlock(&mutex);
+//   _evas_cache_image_entry_preload_remove(im, NULL);
    if (im->flags.loaded) return ;
    LKL(im->lock);
 #endif
 
    error = cache->func.load(im);
-
 #ifdef BUILD_ASYNC_PRELOAD
    LKU(im->lock);
 #endif
 
    if (cache->func.debug)
      cache->func.debug("load", im);
-
 #ifdef BUILD_ASYNC_PRELOAD
    if (preload)
      _evas_cache_image_async_call(im);
@@ -1079,7 +1287,6 @@ evas_cache_image_load_data(Image_Entry *im)
      {
         _evas_cache_image_entry_surface_alloc(cache, im, im->w, im->h);
         im->flags.loaded = 0;
-
         return ;
      }
 
@@ -1097,21 +1304,18 @@ evas_cache_image_preload_data(Image_Entry *im, const void *target)
 
    if (im->flags.loaded)
      {
-	evas_async_events_put(target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL,
-			      (void (*)(void*, Evas_Callback_Type, void*))evas_object_event_callback_call);
+	evas_object_event_callback_call((Evas_Object*) target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL);
 	return ;
      }
 
    cache = im->cache;
 
    if (!_evas_cache_image_entry_preload_add(im, target))
-     evas_async_events_put(target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL,
-			   (void (*)(void*, Evas_Callback_Type, void*))evas_object_event_callback_call);
+     evas_object_event_callback_call((Evas_Object*) target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL);
 #else
    evas_cache_image_load_data(im);
 
-   evas_async_events_put(target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL,
-			 (void (*)(void*, Evas_Callback_Type, void*))evas_object_event_callback_call);
+   evas_object_event_callback_call((Evas_Object*) target, EVAS_CALLBACK_IMAGE_PRELOADED, NULL);
 #endif
 }
 
@@ -1125,7 +1329,18 @@ evas_cache_image_preload_cancel(Image_Entry *im, const void *target)
    assert(im->cache);
    cache = im->cache;
 
+   if (target == NULL) return ;
+
    _evas_cache_image_entry_preload_remove(im, target);
+
+   pthread_mutex_lock(&mutex_pending);
+   if (!im->flags.pending && im->flags.in_pipe)
+     {
+	im->flags.pending = 1;
+	pending = eina_list_append(pending, im);
+     }
+   pthread_mutex_unlock(&mutex_pending);
+
 #else
    (void) im;
 #endif
@@ -1232,79 +1447,3 @@ evas_cache_image_pixels(Image_Entry *im)
 
    return cache->func.surface_pixels(im);
 }
-
-#ifdef BUILD_ASYNC_PRELOAD
-static void*
-_evas_cache_background_load(void *data)
-{
-   (void) data;
-
- restart:
-   while (preload)
-     {
-	pthread_mutex_lock(&mutex);
-
-	if (preload)
-	  {
-	     Evas_Cache_Preload *tmp = (Evas_Cache_Preload*) preload;
-
-	     current = tmp->ie;
-	     preload = eina_inlist_remove(preload, preload);
-
-	     free(tmp);
-	  }
-
-	pthread_mutex_unlock(&mutex);
-
-	if (current)
-	  {
-	     Evas_Cache_Image *cache;
-	     int error;
-
-	     LKL(current->lock);
-	     cache = current->cache;
-
-	     error = cache->func.load(current);
-	     if (cache->func.debug)
-	       cache->func.debug("load", current);
-
-	     if (error)
-	       {
-		  _evas_cache_image_entry_surface_alloc(cache, current,
-							current->w, current->h);
-		  current->flags.loaded = 0;
-	       }
-	     else
-	       {
-		  current->flags.loaded = 1;
-	       }
-
-	     current->flags.preload = 0;
-
-	     LKU(current->lock);
-
-	     _evas_cache_image_async_call(current);
-	     current = NULL;
-	  }
-
-	pthread_cond_signal(&cond_done);
-     }
-
-   pthread_mutex_lock(&mutex);
-   if (preload)
-     {
-	pthread_mutex_unlock(&mutex);
-	goto restart;
-     }
-
-   running = EINA_FALSE;
-   pthread_mutex_unlock(&mutex);
-
-   pthread_mutex_lock(&mutex_new);
-   pthread_cond_wait(&cond_new, &mutex_new);
-   pthread_mutex_unlock(&mutex_new);
-   goto restart;
-
-   return NULL;
-}
-#endif
diff --git a/src/lib/canvas/Makefile.am b/src/lib/canvas/Makefile.am
index 63f8174..1bb051d 100644
--- a/src/lib/canvas/Makefile.am
+++ b/src/lib/canvas/Makefile.am
@@ -49,7 +49,8 @@ evas_smart.c \
 evas_stack.c \
 evas_async_events.c \
 evas_transform.c \
-evas_stats.c
+evas_stats.c \
+evas_map.c
 
 libevas_canvas_la_LIBADD = @EVIL_LIBS@
 
diff --git a/src/lib/canvas/Makefile.in b/src/lib/canvas/Makefile.in
index 4c5c43b..4f7deb9 100644
--- a/src/lib/canvas/Makefile.in
+++ b/src/lib/canvas/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -63,7 +63,8 @@ am_libevas_canvas_la_OBJECTS = evas_callbacks.lo evas_clip.lo \
 	evas_object_box.lo evas_object_table.lo evas_object_text.lo \
 	evas_object_textblock.lo evas_font_dir.lo evas_rectangle.lo \
 	evas_render.lo evas_smart.lo evas_stack.lo \
-	evas_async_events.lo evas_transform.lo evas_stats.lo
+	evas_async_events.lo evas_transform.lo evas_stats.lo \
+	evas_map.lo
 libevas_canvas_la_OBJECTS = $(am_libevas_canvas_la_OBJECTS)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -286,17 +287,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -350,7 +354,8 @@ evas_smart.c \
 evas_stack.c \
 evas_async_events.c \
 evas_transform.c \
-evas_stats.c
+evas_stats.c \
+evas_map.c
 
 libevas_canvas_la_LIBADD = @EVIL_LIBS@
 EXTRA_DIST = \
@@ -365,8 +370,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -419,6 +424,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_key_grab.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_layer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_main.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_map.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_name.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_object_box.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_object_gradient.Plo at am__quote@
@@ -474,7 +480,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/canvas/evas_async_events.c b/src/lib/canvas/evas_async_events.c
index b574e6d..5ad94ac 100644
--- a/src/lib/canvas/evas_async_events.c
+++ b/src/lib/canvas/evas_async_events.c
@@ -15,6 +15,7 @@ static int _init_evas_event = 0;
 static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
 
 typedef struct _Evas_Event_Async	Evas_Event_Async;
+
 struct _Evas_Event_Async
 {
    const void		 *target;
@@ -23,52 +24,100 @@ struct _Evas_Event_Async
    Evas_Callback_Type	  type;
 };
 
-#endif
+static int               queue_num = 0;
+static int               queue_alloc = 0;
+static Evas_Event_Async *queue = NULL;
 
 int
 evas_async_events_init(void)
 {
-#ifdef BUILD_ASYNC_EVENTS
    int filedes[2];
-
+   
    _init_evas_event++;
    if (_init_evas_event > 1) return _init_evas_event;
-
+   
    if (pipe(filedes) == -1)
      {
 	_init_evas_event = 0;
 	return 0;
      }
-
+   
    _fd_read = filedes[0];
    _fd_write = filedes[1];
-
+   
    fcntl(_fd_read, F_SETFL, O_NONBLOCK);
-
+   
    return _init_evas_event;
-#else
-   return 0;
-#endif
 }
 
 int
 evas_async_events_shutdown(void)
 {
-#ifdef BUILD_ASYNC_EVENTS
    _init_evas_event--;
    if (_init_evas_event > 0) return _init_evas_event;
-
+   
    close(_fd_read);
    close(_fd_write);
    _fd_read = -1;
    _fd_write = -1;
 
    return _init_evas_event;
-#else
-   return 0;
-#endif
 }
 
+int
+evas_async_target_del(const void *target)
+{
+   int i, j, d = 0;
+   
+   pthread_mutex_lock(&_mutex);
+   if (queue)
+     {
+        for (i = 0; i < queue_num; i++)
+          {
+             if (queue[i].target == target)
+               {
+                  for (j = i + 1; j < queue_num; j++)
+                    memcpy(&(queue[j - 1]), &(queue[j]), sizeof(Evas_Event_Async));
+                  i--;
+                  queue_num--;
+                  d++;
+               }
+          }
+        if (queue_num == 0)
+          {
+             free(queue);
+             queue = NULL;
+             queue_alloc = 0;
+          }
+     }
+   pthread_mutex_unlock(&_mutex);
+   return d;
+}
+
+#endif
+
+/**
+ * @brief Get evas' internal asynchronous events read file descriptor.
+ *
+ * @return The canvas' asynchronous events read file descriptor.
+ *
+ * Evas' asynchronous events are meant to be dealt with internally,
+ * i. e., when building stuff to be glued together into the EFL
+ * infrastructure -- a module, for example. The context which demands
+ * its use is when calculations need to be done out of the main
+ * thread, asynchronously, and some action must be performed after
+ * that.
+ *
+ * An example of actual use of this API is for image asynchronous
+ * preload inside evas. If the canvas was instantiated throught
+ * ecore-evas usage, ecore itself will take care of calling those
+ * events' processing.
+ *
+ * This function returns the read file descriptor where to get the
+ * asynchronous events of the canvas. Naturally, other mainloops,
+ * apart from ecore, may make use of it.
+ *
+ */
 EAPI int
 evas_async_events_fd_get(void)
 {
@@ -79,95 +128,150 @@ evas_async_events_fd_get(void)
 #endif
 }
 
+/**
+ * @brief Trigger the processing of all events waiting on the file
+ * descriptor returned by evas_async_events_fd_get().
+ *
+ * @return The number of events processed.
+ *
+ * All asynchronous events queued up by evas_async_events_put() are
+ * processed here. More precisely, the callback functions, informed
+ * together with other event parameters, when queued, get called (with
+ * those parameters), in that order.
+ *
+ */
 EAPI int
 evas_async_events_process(void)
 {
 #ifdef BUILD_ASYNC_EVENTS
-   static Evas_Event_Async current;
-   static int size = 0;
+   Evas_Event_Async *ev;
+   unsigned char buf[1];
+   int i;
    int check;
    int count = 0;
-
+   int               myqueue_num = 0;
+   int               myqueue_alloc = 0;
+   Evas_Event_Async *myqueue = NULL;
+   
    if (_fd_read == -1) return 0;
-
+   
+   pthread_mutex_lock(&_mutex);
    do
      {
-	check = read(_fd_read, ((char*) &current) + size, sizeof(current) - size);
-
-	if (check > 0)
-	  {
-	     size += check;
-	     if (size == sizeof(current))
-	       {
-		  if (current.func) current.func((void*) current.target, current.type, current.event_info);
-		  size = 0;
-		  count++;
-	       }
-	  }
+	check = read(_fd_read, buf, 1);
      }
    while (check > 0);
-
+   
+   if (queue)
+     {
+        myqueue_num = queue_num;
+        myqueue_alloc = queue_alloc;
+        myqueue = queue;
+        queue_num = 0;
+        queue_alloc = 0;
+        queue = NULL;
+        pthread_mutex_unlock(&_mutex);
+        
+        for (i = 0; i < myqueue_num; i++)
+          {
+             ev = &(myqueue[i]);
+             if (ev->func) ev->func((void *)ev->target, ev->type, ev->event_info);
+             count++;
+          }
+        free(myqueue);
+     }
+   else
+     pthread_mutex_unlock(&_mutex);
+   
    if (check < 0)
      switch (errno)
        {
-	case EBADF:
-	case EINVAL:
-	case EIO:
-	case EISDIR:
-	   _fd_read = -1;
+       case EBADF:
+       case EINVAL:
+       case EIO:
+       case EISDIR:
+          _fd_read = -1;
        }
-
+   
+   evas_cache_pending_process();
    return count;
 #else
    return 0;
 #endif
 }
 
+/**
+* Insert asynchronous events on the canvas.
+ *
+ * @param target The target to be affected by the events.
+ * @param type The type of callback function.
+ * @param event_info Information about the event.
+ * @param func The callback function pointer.
+ *
+ * This is the way, for a routine running outside evas' main thread,
+ * to report an asynchronous event. A callback function is informed,
+ * whose call is to happen after evas_async_events_process() is
+ * called.
+ *
+ */
 EAPI Eina_Bool
 evas_async_events_put(const void *target, Evas_Callback_Type type, void *event_info, void (*func)(void *target, Evas_Callback_Type type, void *event_info))
 {
 #ifdef BUILD_ASYNC_EVENTS
-   Evas_Event_Async new;
+   Evas_Event_Async *ev;
    ssize_t check;
-   int offset = 0;
    Eina_Bool result = EINA_FALSE;
 
    if (!func) return 0;
    if (_fd_write == -1) return 0;
 
-   memset(&new, 0, sizeof (new));
-
-   new.func = func;
-   new.target = target;
-   new.type = type;
-   new.event_info = event_info;
-
    pthread_mutex_lock(&_mutex);
+   
+   queue_num++;
+   if (queue_num > queue_alloc)
+     {
+        Evas_Event_Async *q2;
+        
+        queue_alloc += 32; // 32 slots at a time for async events
+        q2 = realloc(queue, queue_alloc * sizeof(Evas_Event_Async));
+        if (!q2)
+          {
+             queue_alloc -= 32;
+             queue_num--;
+             pthread_mutex_unlock(&_mutex);
+             return 0;
+          }
+        queue = q2;
+     }
+   ev = &(queue[queue_num - 1]);
+   memset(ev, 0, sizeof(Evas_Event_Async));
+   ev->func = func;
+   ev->target = target;
+   ev->type = type;
+   ev->event_info = event_info;
 
-   do {
-      check = write(_fd_write, ((char*)&new) + offset, sizeof(new) - offset);
-      offset += check;
-   } while (offset != sizeof(new) && (errno == EINTR || errno == EAGAIN));
+   do
+     {
+        unsigned char buf[1] = { 0xf0 };
+        check = write(_fd_write, buf, 1);
+     } while ((check != 1) && ((errno == EINTR) || (errno == EAGAIN)));
 
-   if (offset == sizeof(new))
+   if (check == 1)
      result = EINA_TRUE;
    else
      switch (errno)
        {
-	case EBADF:
-	case EINVAL:
-	case EIO:
-	case EPIPE:
-	   _fd_write = -1;
+       case EBADF:
+       case EINVAL:
+       case EIO:
+       case EPIPE:
+          _fd_write = -1;
        }
-
+   
    pthread_mutex_unlock(&_mutex);
-
    return result;
 #else
    func(target, type, event_info);
-
    return EINA_TRUE;
 #endif
 }
-
diff --git a/src/lib/canvas/evas_callbacks.c b/src/lib/canvas/evas_callbacks.c
index 3a24477..df2fd5f 100644
--- a/src/lib/canvas/evas_callbacks.c
+++ b/src/lib/canvas/evas_callbacks.c
@@ -68,7 +68,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
 
    if (obj->delete_me) return;
    e = evas_object_evas_get(obj);
-     
+
    _evas_walk(e);
    if (obj->callbacks)
      {
@@ -78,7 +78,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
              case EVAS_CALLBACK_MOUSE_DOWN:
                {
                   Evas_Event_Mouse_Down *ev = event_info;
-                  
+
                   flags = ev->flags;
 	          if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK))
 	            {
@@ -91,7 +91,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
              case EVAS_CALLBACK_MOUSE_UP:
                {
                   Evas_Event_Mouse_Up *ev = event_info;
-                  
+
                   flags = ev->flags;
 	          if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK))
 	            {
@@ -123,7 +123,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
 	     evas_object_event_callback_clear(obj);
 	     l_mod = NULL;
 	  }
-        
+
         if (type == EVAS_CALLBACK_MOUSE_DOWN)
           {
              Evas_Event_Mouse_Down *ev = event_info;
@@ -135,7 +135,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
              ev->flags = flags;
           }
      }
-   
+
    if (!((obj->no_propagate) && (l_mod) && (*l_mod)))
      {
 	if (!obj->no_propagate)
@@ -156,140 +156,154 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
 
 /**
  * Add a callback function to an object
+ *
  * @param obj Object to attach a callback to
  * @param type The type of event that will trigger the callback
  * @param func The function to be called when the event is triggered
  * @param data The data pointer to be passed to @p func
  *
- * This function adds a function callback to an object when the event of type
- * @p type occurs on object @p obj. The function is @p func.
+ * This function adds a function callback to an object when the event
+ * of type @p type occurs on object @p obj. The function is @p func.
  *
- * In the event of a memory allocation error during addition of the callback to
- * the object, evas_alloc_error() should be used to determine the nature of
- * the error, if any, and the program should sensibly try and recover.
+ * In the event of a memory allocation error during addition of the
+ * callback to the object, evas_alloc_error() should be used to
+ * determine the nature of the error, if any, and the program should
+ * sensibly try and recover.
  *
- * The function will be passed the pointer @p data when it is called. A
- * callback function must look like this:
+ * The function will be passed the pointer @p data when it is
+ * called. A callback function must look like this:
  *
  * @code
  * void callback (void *data, Evas *e, Evas_Object *obj, void *event_info);
  * @endcode
  *
- * The first parameter @p data in this function will be the same value passed
- * to evas_object_event_callback_add() as the @p data parameter. The second
- * parameter is a convenience for the programmer to know what evas canvas the
- * event occured on. The third parameter @p obj is the Object handle on which
- * the event occured. The foruth parameter @p event_info is a pointer to a
- * data structure that may or may not be passed to the callback, depending on
- * the event type that triggered the callback.
+ * The first parameter @p data in this function will be the same value
+ * passed to evas_object_event_callback_add() as the @p data
+ * parameter. The second parameter is a convenience for the programmer
+ * to know what evas canvas the event occured on. The third parameter
+ * @p obj is the Object handle on which the event occured. The foruth
+ * parameter @p event_info is a pointer to a data structure that may
+ * or may not be passed to the callback, depending on the event type
+ * that triggered the callback.
  *
  * The event type @p type to trigger the function may be one of
- * EVAS_CALLBACK_MOUSE_IN, EVAS_CALLBACK_MOUSE_OUT, EVAS_CALLBACK_MOUSE_DOWN,
- * EVAS_CALLBACK_MOUSE_UP, EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_MOUSE_WHEEL,
+ * EVAS_CALLBACK_MOUSE_IN, EVAS_CALLBACK_MOUSE_OUT,
+ * EVAS_CALLBACK_MOUSE_DOWN, EVAS_CALLBACK_MOUSE_UP,
+ * EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_MOUSE_WHEEL,
  * EVAS_CALLBACK_FREE, EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP,
- * EVAS_CALLBACK_FOCUS_IN, EVAS_CALLBACK_FOCUS_OUT, EVAS_CALLBACK_SHOW,
- * EVAS_CALLBACK_HIDE, EVAS_CALLBACK_MOVE, EVAS_CALLBACK_RESIZE or EVAS_CALLBACK_RESTACK.
- * This determines the kind of event that will trigger the callback to be called.
- * The @p event_info pointer passed to the callback will be one of the
- * following, depending on the event triggering it:
+ * EVAS_CALLBACK_FOCUS_IN, EVAS_CALLBACK_FOCUS_OUT,
+ * EVAS_CALLBACK_SHOW, EVAS_CALLBACK_HIDE, EVAS_CALLBACK_MOVE,
+ * EVAS_CALLBACK_RESIZE or EVAS_CALLBACK_RESTACK.
+ * This determines the kind of event that will trigger the callback to
+ * be called.  The @p event_info pointer passed to the callback will
+ * be one of the following, depending on the event triggering it:
  *
  * EVAS_CALLBACK_MOUSE_IN: event_info = pointer to Evas_Event_Mouse_In
  *
  * This event is triggered when the mouse pointer enters the region of
- * the object @p obj. This may occur by the mouse pointer being moved by
- * evas_event_feed_mouse_move() or evas_event_feed_mouse_move_data() calls,
- * or by the object being shown, raised, moved, resized, or other objects
- * being moved out of the way, hidden, lowered or moved out of the way.
+ * the object @p obj. This may occur by the mouse pointer being moved
+ * by evas_event_feed_mouse_move() or
+ * evas_event_feed_mouse_move_data() calls, or by the object being
+ * shown, raised, moved, resized, or other objects being moved out of
+ * the way, hidden, lowered or moved out of the way.
  *
  * EVAS_CALLBACK_MOUSE_OUT: event_info = pointer to Evas_Event_Mouse_Out
  *
- * This event is triggered exactly like EVAS_CALLBACK_MOUSE_IN is, but occurs
- * when the mouse pointer exits an object. Note that no out events will be
- * reported if the mouse pointer is implicitly grabbed to an object (the
- * mouse buttons are down at all and any were pressed on that object). An
- * out event will be reported as soon as the mouse is no longer grabbed (no
- * mouse buttons are depressed). Out events will be reported once all buttons
- * are released, if the mouse has left the object.
- *
- * EVAS_CALLBACK_MOUSE_DOWN: event_info = pointer to Evas_Event_Mouse_Down
- *
- * This event is triggered by a mouse button being depressed while over an
- * object. If pointermode is EVAS_OBJECT_POINTER_MODE_AUTOGRAB (default)
- * this causes this object to passively grab the mouse until all mouse
- * buttons have been released.
- * That means if this mouse button is the first to be pressed, all future
- * mouse events will be reported to only this object until no buttons are
- * down. That includes mouse move events, in and out events, and further
- * button presses. When all buttons are released, event propagation occurs
- * as normal.
+ * This event is triggered exactly like EVAS_CALLBACK_MOUSE_IN is, but
+ * occurs when the mouse pointer exits an object. Note that no out
+ * events will be reported if the mouse pointer is implicitly grabbed
+ * to an object (the mouse buttons are down at all and any were
+ * pressed on that object). An out event will be reported as soon as
+ * the mouse is no longer grabbed (no mouse buttons are
+ * depressed). Out events will be reported once all buttons are
+ * released, if the mouse has left the object.
+ *
+ * EVAS_CALLBACK_MOUSE_DOWN: event_info = pointer to
+ * Evas_Event_Mouse_Down
+ *
+ * This event is triggered by a mouse button being depressed while
+ * over an object. If pointermode is EVAS_OBJECT_POINTER_MODE_AUTOGRAB
+ * (default) this causes this object to passively grab the mouse until
+ * all mouse buttons have been released.  That means if this mouse
+ * button is the first to be pressed, all future mouse events will be
+ * reported to only this object until no buttons are down. That
+ * includes mouse move events, in and out events, and further button
+ * presses. When all buttons are released, event propagation occurs as
+ * normal.
  *
  * EVAS_CALLBACK_MOUSE_UP: event_info = pointer to Evas_Event_Mouse_Up
  *
- * This event is triggered by a mouse button being released while over an
- * object or when passively grabbed to an object. If this is the last mouse
- * button to be raised on an object then the passive grab is released and
- * event processing will continue as normal.
+ * This event is triggered by a mouse button being released while over
+ * an object or when passively grabbed to an object. If this is the
+ * last mouse button to be raised on an object then the passive grab
+ * is released and event processing will continue as normal.
  *
  * EVAS_CALLBACK_MOUSE_MOVE: event_info = pointer to Evas_Event_Mouse_Move
  *
- * This event is triggered by the mouse pointer moving while over an object or
- * passively grabbed to an object.
+ * This event is triggered by the mouse pointer moving while over an
+ * object or passively grabbed to an object.
  *
- * EVAS_CALLBACK_MOUSE_WHEEL: event_info = pointer to Evas_Event_Mouse_Wheel
+ * EVAS_CALLBACK_MOUSE_WHEEL: event_info = pointer to
+ * Evas_Event_Mouse_Wheel
  *
- * This event is triggered by the mouse wheel being rolled while over an object
- * or passively grabbed to an object.
+ * This event is triggered by the mouse wheel being rolled while over
+ * an object or passively grabbed to an object.
  *
  * EVAS_CALLBACK_FREE: event_info = NULL
  *
- * This event is triggered just before Evas is about to free all memory used
- * by an object and remove all references to it. This is useful for programs
- * to use if they attached data to an object and want to free it when the
- * object is deleted. The object is still valid when this callback is called,
- * but after this callback returns, there is no guarantee on the object's
- * validity.
+ * This event is triggered just before Evas is about to free all
+ * memory used by an object and remove all references to it. This is
+ * useful for programs to use if they attached data to an object and
+ * want to free it when the object is deleted. The object is still
+ * valid when this callback is called, but after this callback
+ * returns, there is no guarantee on the object's validity.
  *
  * EVAS_CALLBACK_KEY_DOWN: event_info = pointer to Evas_Event_Key_Down
  *
- * This callback is called when a key is pressed and the focus is on the
- * object, or a key has been grabbed to a particular object which wants to
- * intercept the key press regardless of what object has the focus.
+ * This callback is called when a key is pressed and the focus is on
+ * the object, or a key has been grabbed to a particular object which
+ * wants to intercept the key press regardless of what object has the
+ * focus.
  *
  * EVAS_CALLBACK_KEY_UP: event_info = pointer to Evas_Event_Key_Up
  *
- * This callback is called when a key is released and the focus is on the
- * object, or a key has been grabbed to a particular object which wants to
- * intercept the key release regardless of what object has the focus.
+ * This callback is called when a key is released and the focus is on
+ * the object, or a key has been grabbed to a particular object which
+ * wants to intercept the key release regardless of what object has
+ * the focus.
  *
  * EVAS_CALLBACK_FOCUS_IN: event_info = NULL
  *
- * This event is called when an object gains the focus. When the callback is
- * called the object has already gained the focus.
+ * This event is called when an object gains the focus. When the
+ * callback is called the object has already gained the focus.
  *
  * EVAS_CALLBACK_FOCUS_OUT: event_info = NULL
  *
- * This event is triggered by an object losing the focus. When the callback is
- * called the object has already lost the focus.
+ * This event is triggered by an object losing the focus. When the
+ * callback is called the object has already lost the focus.
  *
  * EVAS_CALLBACK_SHOW: event_info = NULL
  *
- * This event is triggered by the object being shown by evas_object_show().
+ * This event is triggered by the object being shown by
+ * evas_object_show().
  *
  * EVAS_CALLBACK_HIDE: event_info = NULL
  *
- * This event is triggered by an object being hidden by evas_object_hide().
+ * This event is triggered by an object being hidden by
+ * evas_object_hide().
  *
  * EVAS_CALLBACK_MOVE: event_info = NULL
  *
- * This event is triggered by an object being moved. evas_object_move() can
- * trigger this, as can any object-specific manipulations that would mean the
- * object's origin could move.
+ * This event is triggered by an object being
+ * moved. evas_object_move() can trigger this, as can any
+ * object-specific manipulations that would mean the object's origin
+ * could move.
  *
  * EVAS_CALLBACK_RESIZE: event_info = NULL
  *
  * This event is triggered by an object being resized. Resizes can be
- * triggered by evas_object_resize() or by any object-specific calls that may
- * cause the object to resize.
+ * triggered by evas_object_resize() or by any object-specific calls
+ * that may cause the object to resize.
  *
  * Example:
  * @code
@@ -337,23 +351,24 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (
 	free(fn);
 	return;
      }
-   obj->callbacks->callbacks = 
-     eina_inlist_append(obj->callbacks->callbacks, EINA_INLIST_GET(fn));
+   obj->callbacks->callbacks =
+     eina_inlist_prepend(obj->callbacks->callbacks, EINA_INLIST_GET(fn));
 }
 
 /**
  * Delete a callback function from an object
+ *
  * @param obj Object to remove a callback from
  * @param type The type of event that was triggering the callback
  * @param func The function that was to be called when the event was triggered
  * @return The data pointer that was to be passed to the callback
  *
- * This function removes the most recently added callback from the object
- * @p obj which was triggered by the event type @p type and was calling the
- * function @p func when triggered. If the removal is successful it will also
- * return the data pointer that was passed to evas_object_event_callback_add()
- * when the callback was added to the object. If not successful NULL will be
- * returned.
+ * This function removes the most recently added callback from the
+ * object @p obj which was triggered by the event type @p type and was
+ * calling the function @p func when triggered. If the removal is
+ * successful it will also return the data pointer that was passed to
+ * evas_object_event_callback_add() when the callback was added to the
+ * object. If not successful NULL will be returned.
  *
  * Example:
  * @code
@@ -397,19 +412,20 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (
 
 /**
  * Delete a callback function from an object
+ *
  * @param obj Object to remove a callback from
  * @param type The type of event that was triggering the callback
  * @param func The function that was to be called when the event was triggered
  * @param data The data pointer that was to be passed to the callback
  * @return The data pointer that was to be passed to the callback
  *
- * This function removes the most recently added callback from the object
- * @p obj which was triggered by the event type @p type and was calling the
- * function @p func with data @p data when triggered. If the removal is
- * successful it will also return the data pointer that was passed to
- * evas_object_event_callback_add() (that will be the same as the parameter)
- * when the callback was added to the object. If not successful NULL will be
- * returned.
+ * This function removes the most recently added callback from the
+ * object @p obj which was triggered by the event type @p type and was
+ * calling the function @p func with data @p data when triggered. If
+ * the removal is successful it will also return the data pointer that
+ * was passed to evas_object_event_callback_add() (that will be the
+ * same as the parameter) when the callback was added to the
+ * object. If not successful NULL will be returned.
  *
  * Example:
  * @code
diff --git a/src/lib/canvas/evas_clip.c b/src/lib/canvas/evas_clip.c
index 5f8ac54..feea51b 100644
--- a/src/lib/canvas/evas_clip.c
+++ b/src/lib/canvas/evas_clip.c
@@ -222,10 +222,10 @@ evas_object_clip_unset(Evas_Object *obj)
        if (obj->smart.smart->smart_class->clip_unset)
 	  obj->smart.smart->smart_class->clip_unset(obj);
      }
-   if (obj->cur.clipper) 
+   if (obj->cur.clipper)
      {
         obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, obj);
-	if (!obj->cur.clipper->clip.clipees) 
+	if (!obj->cur.clipper->clip.clipees)
 	  obj->cur.clipper->cur.have_clipees = 0;
 	evas_object_change(obj->cur.clipper);
      }
diff --git a/src/lib/canvas/evas_events.c b/src/lib/canvas/evas_events.c
index 16acac5..460ce15 100644
--- a/src/lib/canvas/evas_events.c
+++ b/src/lib/canvas/evas_events.c
@@ -1,54 +1,123 @@
 #include "evas_common.h"
 #include "evas_private.h"
 
+static void
+_evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
+{
+   Evas_Object *pmap;
+   
+   if (!obj->havemap_parent) return;
+   pmap = obj->smart.parent;
+   if (!pmap) return;
+   while (pmap)
+     {
+        if ((pmap->cur.map) && (pmap->cur.map->count == 4) && (pmap->cur.usemap))
+          break;
+        pmap = pmap->smart.parent;
+     }
+   if (!pmap) return;
+   evas_map_coords_get(pmap->cur.map, *x, *y, x, y, obj->mouse_grabbed);
+}
+
 static Eina_List *
-_evas_event_object_list_in_get(Evas *e, Eina_List *in, const Eina_Inlist *list, Evas_Object *stop, int x, int y, int *no_rep)
+_evas_event_object_list_in_get(Evas *e, Eina_List *in,
+                               const Eina_Inlist *list, Evas_Object *stop, 
+                               int x, int y, int *no_rep, int parmap)
 {
    Evas_Object *obj;
-
    if (!list) return in;
    EINA_INLIST_REVERSE_FOREACH(list, obj)
      {
+        if (parmap) obj->havemap_parent = 1;
+        else obj->havemap_parent = 0;
+        
 	if (obj == stop)
 	  {
 	     *no_rep = 1;
 	     return in;
 	  }
-	if (!evas_event_passes_through(obj))
-	  {
-	     if ((obj->cur.visible) && (obj->delete_me == 0) &&
-		 (!obj->clip.clipees) &&
-		 (evas_object_clippers_is_visible(obj)))
-	       {
-		  if (obj->smart.smart)
-		    {
-		       int norep;
-
-		       norep = 0;
-		       in = _evas_event_object_list_in_get(e, in,
-							   evas_object_smart_members_get_direct(obj),
-							   stop, x, y, &norep);
-		       if (norep)
-			 {
-			    *no_rep = 1;
-			    return in;
-			 }
-		    }
-		  else
-		    {
-		       if (evas_object_is_in_output_rect(obj, x, y, 1, 1) &&
-		           ((!obj->precise_is_inside) ||
-			    (evas_object_is_inside(obj, x, y))))
-			 {
-			    in = eina_list_append(in, obj);
-			    if (!obj->repeat_events)
-			      {
-				 *no_rep = 1;
-				 return in;
-			      }
-			 }
-		    }
-	       }
+	if (evas_event_passes_through(obj)) continue;
+        if ((obj->cur.visible) && (obj->delete_me == 0) &&
+            (!obj->clip.clipees) &&
+            (evas_object_clippers_is_visible(obj)))
+          {
+             if (obj->smart.smart)
+               {
+                  int norep;
+                  int inside;
+                  
+                  norep = 0;
+                  if (((obj->cur.map) && (obj->cur.map->count == 4) && (obj->cur.usemap)))
+                    {
+                       inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
+                       if (inside)
+                         {
+                            if (!evas_map_coords_get(obj->cur.map, x, y,
+                                                     &(obj->cur.map->mx),
+                                                     &(obj->cur.map->my), 0))
+                              {
+                                 inside = 0;
+                              }
+                            else
+                              {
+                                 parmap = 1;
+                              }
+                         }
+                       else
+                         inside = 0;
+                       if (inside)
+                         {
+                            in = _evas_event_object_list_in_get
+                              (e, in,
+                               evas_object_smart_members_get_direct(obj),
+                               stop, 
+                               obj->cur.geometry.x + obj->cur.map->mx, 
+                               obj->cur.geometry.y + obj->cur.map->my, 
+                               &norep, parmap);
+                         }
+                    }
+                  else
+                    {
+                       in = _evas_event_object_list_in_get
+                         (e, in, evas_object_smart_members_get_direct(obj),
+                          stop, x, y, &norep, parmap);
+                    }
+                  if (norep)
+                    {
+                       *no_rep = 1;
+                       return in;
+                    }
+               }
+             else
+               {
+                  int inside = 1;
+                  
+                  if (((obj->cur.map) && (obj->cur.map->count == 4) && (obj->cur.usemap)))
+                    {
+                       inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
+                       if (inside)
+                         {
+                            if (!evas_map_coords_get(obj->cur.map, x, y,
+                                                     &(obj->cur.map->mx),
+                                                     &(obj->cur.map->my), 0))
+                              inside = 0;
+                         }
+                       else
+                         inside = 0;
+                    }
+                  else
+                    inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
+                  if (inside && ((!obj->precise_is_inside) ||
+                                 (evas_object_is_inside(obj, x, y))))
+                    {
+                       in = eina_list_append(in, obj);
+                       if (!obj->repeat_events)
+                         {
+                            *no_rep = 1;
+                            return in;
+                         }
+                    }
+               }
 	  }
      }
    *no_rep = 0;
@@ -67,8 +136,9 @@ evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y)
 	int norep;
 
 	norep = 0;
-	in = _evas_event_object_list_in_get(e, in, EINA_INLIST_GET(lay->objects), stop,
-					    x, y, &norep);
+	in = _evas_event_object_list_in_get(e, in, 
+                                            EINA_INLIST_GET(lay->objects), 
+                                            stop, x, y, &norep, 0);
 	if (norep) return in;
      }
    return in;
@@ -90,17 +160,18 @@ evas_event_list_copy(Eina_List *list)
 /**
  * @defgroup Evas_Event_Freezing_Group Evas Event Freezing Functions
  *
- * Functions that deal with the freezing of event processing of an evas.
+ * Functions that deal with the freezing of event processing of an
+ * evas.
  */
 
 /**
- * Freeze all event processing
- * @param e The canvas to freeze event processing on
+ * Freeze all event processing.
+ * @param e The canvas to freeze event processing on.
  *
- * This function will indicate to evas that the canvas @p e is to have all
- * event processing frozen until a matching evas_event_thaw() function is
- * called on the same canvas. Every freeze call must be matched by a thaw call
- * in order to completely thaw out a canvas.
+ * This function will indicate to evas that the canvas @p e is to have
+ * all event processing frozen until a matching evas_event_thaw()
+ * function is called on the same canvas. Every freeze call must be
+ * matched by a thaw call in order to completely thaw out a canvas.
  *
  * Example:
  * @code
@@ -124,13 +195,14 @@ evas_event_freeze(Evas *e)
 }
 
 /**
- * Thaw a canvas out after freezing
- * @param e The canvas to thaw out
+ * Thaw a canvas out after freezing.
+ *
+ * @param e The canvas to thaw out.
  *
- * This will thaw out a canvas after a matching evas_event_freeze() call. If
- * this call completely thaws out a canvas, events will start being processed
- * again after this call, but this call will not invole any "missed" events
- * to be evaluated.
+ * This will thaw out a canvas after a matching evas_event_freeze()
+ * call. If this call completely thaws out a canvas, events will start
+ * being processed again after this call, but this call will not
+ * invole any "missed" events to be evaluated.
  *
  * See evas_event_freeze() for an example.
  * @ingroup Evas_Event_Freezing_Group
@@ -162,14 +234,15 @@ evas_event_thaw(Evas *e)
 }
 
 /**
- * Return the freeze count of a given canvas
- * @param e The canvas to fetch the freeze count from
+ * Return the freeze count of a given canvas.
+ * @param e The canvas to fetch the freeze count from.
  *
- * This returns the number of times the canvas has been told to freeze events.
- * It is possible to call evas_event_freeze() multiple times, and these must
- * be matched by evas_event_thaw() calls. This call allows the program to
- * discover just how many times things have been frozen in case it may want
- * to break out of a deep freeze state where the count is high.
+ * This returns the number of times the canvas has been told to freeze
+ * events.  It is possible to call evas_event_freeze() multiple times,
+ * and these must be matched by evas_event_thaw() calls. This call
+ * allows the program to discover just how many times things have been
+ * frozen in case it may want to break out of a deep freeze state
+ * where the count is high.
  *
  * Example:
  * @code
@@ -188,10 +261,19 @@ evas_event_freeze_get(const Evas *e)
    return e->events_frozen;
 }
 
+
 /**
- * To be documented.
+ * Mouse down event feed.
  *
- * FIXME: To be fixed.
+ * @param e The given canvas pointer.
+ * @param b The button number.
+ * @param flags The evas button flags.
+ * @param timestamp The timestamp of the mouse down event.
+ * @param data The data for canvas.
+ *
+ * This function will set some evas properties that is necessary when
+ * the mouse button is pressed. It prepares information to be treated
+ * by the callback function.
  *
  */
 EAPI void
@@ -228,6 +310,9 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
    copy = evas_event_list_copy(e->pointer.object.in);
    EINA_LIST_FOREACH(copy, l, obj)
      {
+        ev.canvas.x = e->pointer.x;
+        ev.canvas.y = e->pointer.y;
+        _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 	if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
 	  {
 	     obj->mouse_grabbed++;
@@ -244,9 +329,17 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
 }
 
 /**
- * To be documented.
+ * Mouse up event feed.
+ *
+ * @param e The given canvas pointer.
+ * @param b The button number.
+ * @param flags evas button flags.
+ * @param timestamp The timestamp of the mouse up event.
+ * @param data The data for canvas.
  *
- * FIXME: To be fixed.
+ * This function will set some evas properties that is necessary when
+ * the mouse button is released. It prepares information to be treated
+ * by the callback function.
  *
  */
 EAPI void
@@ -285,6 +378,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
 	copy = evas_event_list_copy(e->pointer.object.in);
 	EINA_LIST_FOREACH(copy, l, obj)
 	  {
+             ev.canvas.x = e->pointer.x;
+             ev.canvas.y = e->pointer.y;
+             _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 	     if ((obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) &&
 		 (obj->mouse_in) && (obj->mouse_grabbed > 0))
 	       {
@@ -324,6 +420,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
 	     copy = evas_event_list_copy(e->pointer.object.in);
 	     EINA_LIST_FOREACH(copy, l, obj)
 	       {
+                  ev.canvas.x = e->pointer.x;
+                  ev.canvas.y = e->pointer.y;
+                  _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 		  if ((!eina_list_data_find(ins, obj)) ||
 		      (!e->pointer.inside))
 		    {
@@ -354,6 +453,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
 
 	     EINA_LIST_FOREACH(ins, l, obj)
 	       {
+                  ev.canvas.x = e->pointer.x;
+                  ev.canvas.y = e->pointer.y;
+                  _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 		  if (!eina_list_data_find(e->pointer.object.in, obj))
 		    {
 
@@ -378,22 +480,28 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
 
    if (e->pointer.mouse_grabbed < 0)
      {
-        fprintf(stderr, "BUG? e->pointer.mouse_grabbed (=%d) < 0!\n",
-                e->pointer.mouse_grabbed);
+        ERR("BUG? e->pointer.mouse_grabbed (=%d) < 0!",
+	      e->pointer.mouse_grabbed);
      }
 
    if ((e->pointer.button == 0) && (e->pointer.mouse_grabbed != 0))
      {
-        printf("restore to 0 grabs (from %i)\n", e->pointer.mouse_grabbed);
+        INF("restore to 0 grabs (from %i)", e->pointer.mouse_grabbed);
 	e->pointer.mouse_grabbed = 0;
      }
    _evas_unwalk(e);
 }
 
+
 /**
- * To be documented.
+ * Mouse cancel event feed.
+ *
+ * @param e The given canvas pointer.
+ * @param timestamp The timestamp of the mouse up event.
+ * @param data The data for canvas.
  *
- * FIXME: To be fixed.
+ * This function will call evas_event_feed_mouse_up() when a
+ * mouse cancel event happens.
  *
  */
 EAPI void
@@ -417,9 +525,17 @@ evas_event_feed_mouse_cancel(Evas *e, unsigned int timestamp, const void *data)
 }
 
 /**
- * To be documented.
+ * Mouse wheel event feed.
+ *
+ * @param e The given canvas pointer.
+ * @param direction The wheel mouse direction.
+ * @param z How much mouse wheel was scrolled up or down.
+ * @param timestamp The timestamp of the mouse up event.
+ * @param data The data for canvas.
  *
- * FIXME: To be fixed.
+ * This function will set some evas properties that is necessary when
+ * the mouse wheel is scrolled up or down. It prepares information to
+ * be treated by the callback function.
  *
  */
 EAPI void
@@ -453,6 +569,9 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
 
    EINA_LIST_FOREACH(copy, l, obj)
      {
+        ev.canvas.x = e->pointer.x;
+        ev.canvas.y = e->pointer.y;
+        _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 	if (e->events_frozen <= 0)
 	  evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
 	if (e->delete_me) break;
@@ -463,9 +582,17 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
 }
 
 /**
- * To be documented.
+ * Mouse move event feed.
  *
- * FIXME: To be fixed.
+ * @param e The given canvas pointer.
+ * @param x The horizontal position of the mouse pointer.
+ * @param y The vertical position of the mouse pointer.
+ * @param timestamp The timestamp of the mouse up event.
+ * @param data The data for canvas.
+ *
+ * This function will set some evas properties that is necessary when
+ * the mouse is moved from its last position. It prepares information
+ * to be treated by the callback function.
  *
  */
 EAPI void
@@ -522,6 +649,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
 	     copy = evas_event_list_copy(e->pointer.object.in);
 	     EINA_LIST_FOREACH(copy, l, obj)
 	       {
+                  ev.cur.canvas.x = e->pointer.x;
+                  ev.cur.canvas.y = e->pointer.y;
+                  _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
+                  e->pointer.x = ev.cur.canvas.x;
+                  e->pointer.y = ev.cur.canvas.y;
 		  if ((obj->cur.visible) &&
 		      (evas_object_clippers_is_visible(obj)) &&
 		      (!evas_event_passes_through(obj)) &&
@@ -561,12 +693,13 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
 		  outs = eina_list_remove(outs, obj);
 		  if ((obj->mouse_grabbed == 0) && (!e->delete_me))
 		    {
+                       ev.canvas.x = e->pointer.x;
+                       ev.canvas.y = e->pointer.y;
+                       _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 		       e->pointer.object.in = eina_list_remove(e->pointer.object.in, obj);
-			 {
-			    obj->mouse_in = 0;
-			    if (e->events_frozen <= 0)
-			      evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
-			 }
+                       obj->mouse_in = 0;
+                       if (e->events_frozen <= 0)
+                         evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
 		    }
 	       }
 	  }
@@ -638,6 +771,9 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
 	       {
 		  if ((px != x) || (py != y))
 		    {
+                       ev.cur.canvas.x = e->pointer.x;
+                       ev.cur.canvas.y = e->pointer.y;
+                       _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
 		       if (e->events_frozen <= 0)
 			 evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
 		    }
@@ -646,6 +782,9 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
 	     else
 	       {
 		  obj->mouse_in = 0;
+                  ev2.canvas.x = e->pointer.x;
+                  ev2.canvas.y = e->pointer.y;
+                  _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y);
 		  if (e->events_frozen <= 0)
 		    evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2);
 	       }
@@ -655,6 +794,9 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
 	/* go thru our current list of ins */
 	EINA_LIST_FOREACH(ins, l, obj)
 	  {
+             ev3.canvas.x = e->pointer.x;
+             ev3.canvas.y = e->pointer.y;
+             _evas_event_havemap_adjust(obj, &ev3.canvas.x, &ev3.canvas.y);
 	     /* if its not in the old list of ins send an enter event */
 	     if (!eina_list_data_find(e->pointer.object.in, obj))
 	       {
@@ -674,9 +816,15 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
 }
 
 /**
- * To be documented.
+ * Mouse in event feed.
+ *
+ * @param e The given canvas pointer.
+ * @param timestamp The timestamp of the mouse up event.
+ * @param data The data for canvas.
  *
- * FIXME: To be fixed.
+ * This function will set some evas properties that is necessary when
+ * the mouse in event happens. It prepares information to be treated
+ * by the callback function.
  *
  */
 EAPI void
@@ -713,6 +861,9 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
    ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
    EINA_LIST_FOREACH(ins, l, obj)
      {
+        ev.canvas.x = e->pointer.x;
+        ev.canvas.y = e->pointer.y;
+        _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
 	if (!eina_list_data_find(e->pointer.object.in, obj))
 	  {
 
@@ -731,9 +882,15 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
 }
 
 /**
- * To be documented.
+ * Mouse out event feed.
  *
- * FIXME: To be fixed.
+ * @param e The given canvas pointer.
+ * @param timestamp Timestamp of the mouse up event.
+ * @param data The data for canvas.
+ *
+ * This function will set some evas properties that is necessary when
+ * the mouse out event happens. It prepares information to be treated
+ * by the callback function.
  *
  */
 EAPI void
@@ -771,7 +928,10 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
 	copy = evas_event_list_copy(e->pointer.object.in);
 	EINA_LIST_FOREACH(copy, l, obj)
 	  {
-	    obj->mouse_in = 0;
+             ev.canvas.x = e->pointer.x;
+             ev.canvas.y = e->pointer.y;
+             _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
+             obj->mouse_in = 0;
 	    if (e->events_frozen <= 0)
 	      evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
 
@@ -785,9 +945,19 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
 }
 
 /**
- * To be documented.
+ * Key down event feed
  *
- * FIXME: To be fixed.
+ * @param e The canvas to thaw out
+ * @param keyname  Name of the key
+ * @param key The key pressed.
+ * @param string A String
+ * @param compose The compose string
+ * @param timestamp Timestamp of the mouse up event
+ * @param data Data for canvas.
+ *
+ * This function will set some evas properties that is necessary when
+ * a key is pressed. It prepares information to be treated by the
+ * callback function.
  *
  */
 EAPI void
@@ -867,9 +1037,19 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
 }
 
 /**
- * To be documented.
+ * Key up event feed
+ *
+ * @param e The canvas to thaw out
+ * @param keyname  Name of the key
+ * @param key The key released.
+ * @param string string
+ * @param compose compose
+ * @param timestamp Timestamp of the mouse up event
+ * @param data Data for canvas.
  *
- * FIXME: To be fixed.
+ * This function will set some evas properties that is necessary when
+ * a key is released. It prepares information to be treated by the
+ * callback function.
  *
  */
 EAPI void
@@ -949,9 +1129,14 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
 }
 
 /**
- * To be documented.
+ * Hold event feed
+ *
+ * @param e The given canvas pointer.
+ * @param hold The hold.
+ * @param timestamp The timestamp of the mouse up event.
+ * @param data The data for canvas.
  *
- * FIXME: To be fixed.
+ * This function makes the object to stop sending events.
  *
  */
 EAPI void
@@ -1094,7 +1279,8 @@ evas_object_repeat_events_get(const Evas_Object *obj)
 }
 
 /**
- * Set whether events on a smart member object should propagate to its parent.
+ * Set whether events on a smart member object should propagate to its
+ * parent.
  *
  * @param obj the smart member object
  * @param prop wheter to propagate events or not
@@ -1146,14 +1332,16 @@ evas_object_propagate_events_get(const Evas_Object *obj)
  * @param obj
  * @param setting desired behavior.
  *
- * This function has direct effect on event callbacks related to mouse.
+ * This function has direct effect on event callbacks related to
+ * mouse.
  *
- * If @p setting is EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse is
- * down at this object, events will be restricted to it as source, mouse
- * moves, for example, will be emitted even if outside this object area.
+ * If @p setting is EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse
+ * is down at this object, events will be restricted to it as source,
+ * mouse moves, for example, will be emitted even if outside this
+ * object area.
  *
- * If @p setting is EVAS_OBJECT_POINTER_MODE_NOGRAB, then events will be
- * emitted just when inside this object area.
+ * If @p setting is EVAS_OBJECT_POINTER_MODE_NOGRAB, then events will
+ * be emitted just when inside this object area.
  *
  * The default value is EVAS_OBJECT_POINTER_MODE_AUTOGRAB.
  */
diff --git a/src/lib/canvas/evas_focus.c b/src/lib/canvas/evas_focus.c
index cc144bc..60619d8 100644
--- a/src/lib/canvas/evas_focus.c
+++ b/src/lib/canvas/evas_focus.c
@@ -9,16 +9,15 @@
 
 /**
  * Sets focus to the given object.
- * 
+ *
  * @param obj The object to be focused or unfocused.
  * @param focus set or remove focus to the object.
  *
- * Changing focus only affects where key events go.
- * There can be only one object focused at any time.
- * <p>
- * If the parameter (@p focus) is set, the passed object will be set as the
- * currently focused object.  It will receive all keyboard events that are not
- * exclusive key grabs on other objects.
+ * Changing focus only affects where key events go.  There can be only
+ * one object focused at any time.  <p> If the parameter (@p focus) is
+ * set, the passed object will be set as the currently focused object.
+ * It will receive all keyboard events that are not exclusive key
+ * grabs on other objects.
  *
  * @see evas_object_focus_get
  * @see evas_focus_get
@@ -54,10 +53,10 @@ evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
  * Test if the object has focus.
  *
  * @param obj The object to be tested.
- * 
+ *
  * If the passed object is the currently focused object 1 is returned,
  * 0 otherwise.
- * 
+ *
  * @see evas_object_focus_set
  * @see evas_focus_get
  * @see evas_object_key_grab
@@ -78,9 +77,9 @@ evas_object_focus_get(const Evas_Object *obj)
  * Retrieve the object that currently has focus.
  *
  * @param e The @c Evas canvas to query focus on.
- * 
+ *
  * Returns the object that currently has focus, NULL otherwise.
- * 
+ *
  * @see evas_object_focus_set
  * @see evas_object_focus_get
  * @see evas_object_key_grab
diff --git a/src/lib/canvas/evas_font_dir.c b/src/lib/canvas/evas_font_dir.c
index 1b1be60..43d6d59 100644
--- a/src/lib/canvas/evas_font_dir.c
+++ b/src/lib/canvas/evas_font_dir.c
@@ -1,4 +1,3 @@
-
 #ifdef HAVE_CONFIG_H
 # include <config.h>
 #endif
@@ -55,7 +54,7 @@ evas_font_dir_cache_free(void)
 #ifdef HAVE_FONTCONFIG
    fc_init--;
    if (fc_init == 0) FcFini();
-#endif   
+#endif
    if (!font_dirs) return;
 
    eina_hash_foreach(font_dirs, font_cache_dir_free, NULL);
@@ -200,7 +199,7 @@ evas_font_init(void)
         FcInit();
         FcConfigEnableHome(1);
      }
-#endif   
+#endif
 }
 
 void *
@@ -213,7 +212,7 @@ evas_font_load(Evas *evas, const char *name, const char *source, int size)
 
    if (!name) return NULL;
    if (name[0] == 0) return NULL;
-   
+
    evas_font_init();
 
    EINA_LIST_FOREACH(fonts_cache, l, fd)
@@ -395,7 +394,7 @@ evas_font_load(Evas *evas, const char *name, const char *source, int size)
 	set = FcFontSort(NULL, p_nm, FcTrue, NULL, &res);
 	if (!set)
 	  {
-	     fprintf(stderr, "ERROR: no fontconfig font matches '%s'. It was the last resource, no font found!\n", name);
+	     ERR("No fontconfig font matches '%s'. It was the last resource, no font found!", name);
 	     goto fc_end;
 	  }
 
@@ -407,8 +406,8 @@ evas_font_load(Evas *evas, const char *name, const char *source, int size)
 	     FcPatternGet(set->fonts[i], FC_FILE, 0, &filename);
 
 	     if (font)
-	       evas->engine.func->font_add(evas->engine.data.output, font, (char *)filename.u.s, size);     	  
-	     else 	  
+	       evas->engine.func->font_add(evas->engine.data.output, font, (char *)filename.u.s, size);
+	     else
 	       font = evas->engine.func->font_load(evas->engine.data.output, (char *)filename.u.s, size);
 	  }
 
@@ -458,7 +457,7 @@ evas_font_dir_available_list(const Evas *evas)
    int i;
 
    evas_font_init();
-   
+
    p = FcPatternCreate();
    os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, NULL);
 
diff --git a/src/lib/canvas/evas_key.c b/src/lib/canvas/evas_key.c
index e6529cc..ca4d78e 100644
--- a/src/lib/canvas/evas_key.c
+++ b/src/lib/canvas/evas_key.c
@@ -45,7 +45,7 @@ evas_key_lock_number(const Evas_Lock *l, const char *keyname)
  * @param e The pointer to the Evas Canvas
  *
  * @return An Evas_Modifier handle to query the modifier subsystem with
- * 	evas_key_modifier_is_set_get, or NULL on error.
+ *	evas_key_modifier_is_set_get, or NULL on error.
  */
 EAPI const Evas_Modifier *
 evas_key_modifier_get(const Evas *e)
@@ -69,7 +69,7 @@ evas_key_modifier_get(const Evas *e)
  * @param e The pointer to the Evas Canvas
  *
  * @return An Evas_Lock handle to query the lock subsystem with
- * 	evas_key_lock_is_set_get, or NULL on error.
+ *	evas_key_lock_is_set_get, or NULL on error.
  */
 EAPI const Evas_Lock *
 evas_key_lock_get(const Evas *e)
@@ -83,13 +83,13 @@ evas_key_lock_get(const Evas *e)
 /**
  * Checks the state of a given modifier.  If the modifier is set, such as shift being pressed
  * this function returns true.
- * 
+ *
  * @see evas_key_modifier_add
  * @see evas_key_modifier_del
  * @see evas_key_modifier_get
  * @see evas_key_modifier_on
  * @see evas_key_modifier_off
- * 
+ *
  * @param m The current modifier set as returned by evas_key_modifier_get.
  * @param keyname The name of the key to check its status.
  *
@@ -123,7 +123,7 @@ evas_key_modifier_is_set(const Evas_Modifier *m, const char *keyname)
  *
  * @param l The current lock set as returned by evas_key_lock_get.
  * @param keyname The name of the lock to add the the list.
- * 
+ *
  * @param 1 if the @p keyname kock is set, 0 otherwise.
  */
 EAPI Eina_Bool
@@ -144,7 +144,7 @@ evas_key_lock_is_set(const Evas_Lock *l, const char *keyname)
 
 /**
  * Adds the @p keyname to the current list of modifiers.
- * 
+ *
  * Modifiers can be keys like shift, alt and ctrl, as well as user defined.  This allows
  * custom modifiers to be added to the evas system as run time.  It is then possible to set
  * and unset the modifier for other parts of the program to check and act on.
@@ -154,7 +154,7 @@ evas_key_lock_is_set(const Evas_Lock *l, const char *keyname)
  * @see evas_key_modifier_on
  * @see evas_key_modifier_off
  * @see evas_key_modifier_is_set_get
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the modifier to add to the list.
  */
@@ -181,7 +181,7 @@ evas_key_modifier_add(Evas *e, const char *keyname)
  * @see evas_key_modifier_on
  * @see evas_key_modifier_off
  * @see evas_key_modifier_is_set_get
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the key to remove from the modifiers list.
  */
@@ -216,12 +216,12 @@ evas_key_modifier_del(Evas *e, const char *keyname)
  * Locks can be keys like caps lock, num lock or scroll lock, as well as user defined.  This
  * allows custom locks to be added to the evas system at run time.  It is then possible to
  * set and unset the lock for other parts of the program to check and act on.
- * 
+ *
  * @see evas_key_lock_get
  * @see evas_key_lock_del
  * @see evas_key_lock_on
  * @see evas_key_lock_off
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the key to remove from the modifier list.
  */
@@ -247,7 +247,7 @@ evas_key_lock_add(Evas *e, const char *keyname)
  * @see evas_key_lock_add
  * @see evas_key_lock_on
  * @see evas_key_lock_off
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the key to remove from the lock list.
  */
@@ -279,12 +279,12 @@ evas_key_lock_del(Evas *e, const char *keyname)
 
 /**
  * Enables or turns on the modifier with name @p keyname.
- * 
+ *
  * @see evas_key_modifier_add
  * @see evas_key_modifier_get
  * @see evas_key_modifier_off
  * @see evas_key_modifier_is_set_get
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the modifier to set.
  */
@@ -306,12 +306,12 @@ evas_key_modifier_on(Evas *e, const char *keyname)
 
 /**
  * Disables or turns off the modifier with name @p keyname.
- * 
+ *
  * @see evas_key_modifier_add
  * @see evas_key_modifier_get
  * @see evas_key_modifier_on
  * @see evas_key_modifier_is_set_get
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the modifier to un-set.
  */
@@ -338,7 +338,7 @@ evas_key_modifier_off(Evas *e, const char *keyname)
  * @see evas_key_lock_add
  * @see evas_key_lock_del
  * @see evas_key_lock_off
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the lock to set.
  */
@@ -365,7 +365,7 @@ evas_key_lock_on(Evas *e, const char *keyname)
  * @see evas_key_lock_add
  * @see evas_key_lock_del
  * @see evas_key_lock_on
- * 
+ *
  * @param e The pointer to the Evas Canvas
  * @param keyname The name of the lock to un-set.
  */
@@ -396,7 +396,7 @@ evas_key_lock_off(Evas *e, const char *keyname)
  * @see evas_key_modifier_on
  * @see evas_key_modifier_off
  * @see evas_key_modifier_is_set_get
- * 
+ *
  * @param keyname The name of the modifier to create the mask for.
  *
  * @returns the bit mask or 0 if the @p keyname wasn't registered as a modifier.
diff --git a/src/lib/canvas/evas_key_grab.c b/src/lib/canvas/evas_key_grab.c
index 18e5d90..a8e8979 100644
--- a/src/lib/canvas/evas_key_grab.c
+++ b/src/lib/canvas/evas_key_grab.c
@@ -137,38 +137,42 @@ evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask mod
 /**
  * Requests @p keyname key events be directed to @p obj.
  *
- * Key grabs allow an object to receive key events for specific key strokes
- * even if another object has focus.  If the grab is non-exclusive then all
- * objects that have grabs on the key will get the event, however if the
- * grab is exclusive, no other object can get a grab on the key and only
- * that object will get the event.
+ * Key grabs allow an object to receive key events for specific key
+ * strokes even if another object has focus.  If the grab is
+ * non-exclusive then all objects that have grabs on the key will get
+ * the event, however if the grab is exclusive, no other object can
+ * get a grab on the key and only that object will get the event.
  *
- * @p keyname is a platform dependent symbolic name for the key pressed.
- * It is sometimes possible to convert the string to an ASCII value of the
- * key, but not always for example the enter key may be returned as the
- * string 'Enter'.
+ * @p keyname is a platform dependent symbolic name for the key
+ * pressed.  It is sometimes possible to convert the string to an
+ * ASCII value of the key, but not always for example the enter key
+ * may be returned as the string 'Enter'.
  *
- * Typical platforms are Linux frame buffer (Ecore_FB) and X server (Ecore_X)
- * when using Evas with Ecore and Ecore_Evas.
+ * Typical platforms are Linux frame buffer (Ecore_FB) and X server
+ * (Ecore_X) when using Evas with Ecore and Ecore_Evas.
  *
- * For a list of keynames for the Linux frame buffer, please refer to the
- * Ecore_FB documentation.
- * 
- * @p modifiers and @p not_modifiers are bit masks of all the modifiers that are required and
- * not required respectively for the new grab.  Modifiers can be things such as shift and ctrl
- * as well as user defigned types via evas_key_modifier_add.
+ * For a list of keynames for the Linux frame buffer, please refer to
+ * the Ecore_FB documentation.
+ *
+ * @p modifiers and @p not_modifiers are bit masks of all the
+ * modifiers that are required and not required respectively for the
+ * new grab.  Modifiers can be things such as shift and ctrl as well
+ * as user defigned types via evas_key_modifier_add.
  *
  * @see evas_object_key_ungrab
  * @see evas_object_focus_set
  * @see evas_object_focus_get
  * @see evas_focus_get
  * @see evas_key_modifier_add
- * 
+ *
  * @param obj the object to direct @p keyname events to.
  * @param keyname the key to request events for.
- * @param modifiers a mask of modifiers that should be present to trigger the event.
- * @param not_modifiers a mask of modifiers that should not be present to trigger the event.
- * @param exclusive request that the @p obj is the only object receiving the @p keyname events.
+ * @param modifiers a mask of modifiers that should be present to
+ * trigger the event.
+ * @param not_modifiers a mask of modifiers that should not be present
+ * to trigger the event.
+ * @param exclusive request that the @p obj is the only object
+ * receiving the @p keyname events.
  * @return Boolean indicating whether the grab succeeded
  */
 EAPI Eina_Bool
@@ -193,10 +197,10 @@ evas_object_key_grab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask m
 
 /**
  * Request that the grab on @p obj be removed.
- * 
+ *
  * Removes the grab on @p obj if @p keyname, @p modifiers, and @p not_modifiers
  * match.
- * 
+ *
  * @see evas_object_key_grab
  * @see evas_object_focus_set
  * @see evas_object_focus_get
@@ -204,8 +208,10 @@ evas_object_key_grab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask m
  *
  * @param obj the object that has an existing grab.
  * @param keyname the key the grab is for.
- * @param modifiers a mask of modifiers that should be present to trigger the event.
- * @param not_modifiers a mask of modifiers that should not be present to trigger the event.
+ * @param modifiers a mask of modifiers that should be present to
+ * trigger the event.
+ * @param not_modifiers a mask of modifiers that should not be present
+ * to trigger the event.
  */
 EAPI void
 evas_object_key_ungrab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
diff --git a/src/lib/canvas/evas_main.c b/src/lib/canvas/evas_main.c
index 0853585..e0fa3de 100644
--- a/src/lib/canvas/evas_main.c
+++ b/src/lib/canvas/evas_main.c
@@ -2,40 +2,88 @@
 #include "evas_private.h"
 #include "evas_cs.h"
 
-static int initcount = 0;
-
+static int _evas_init_count = 0;
+int _evas_log_dom_global = -1;
+/**
+ * Initialize Evas
+ *
+ * @return The init counter value.
+ *
+ * This function initialize evas, increments a counter of the number
+ * of calls to this function and returns this value.
+ *
+ * @see evas_shutdown().
+ *
+ */
 EAPI int
 evas_init(void)
 {
-   if (initcount == 0)
+   if (++_evas_init_count != 1)
+     return _evas_init_count;
+
+   if (!eina_init())
+     return --_evas_init_count;
+
+   _evas_log_dom_global = eina_log_domain_register("evas_main",EVAS_DEFAULT_LOG_COLOR);
+   if (_evas_log_dom_global < 0)
      {
-	eina_init();
+       EINA_LOG_ERR("Evas could not create a default log domain\n");
+	goto shutdown_eina;
+     }
 
-	evas_module_init();
-	evas_async_events_init();
+   evas_module_init();
+#ifdef BUILD_ASYNC_EVENTS
+   if (!evas_async_events_init())
+     goto shutdown_module;
+#endif
 #ifdef EVAS_CSERVE
-        if (getenv("EVAS_CSERVE")) evas_cserve_init();
-#endif        
-     }
-   return ++initcount;
+   if (getenv("EVAS_CSERVE")) evas_cserve_init();
+#endif
+
+   return _evas_init_count;
+
+#ifdef BUILD_ASYNC_EVENTS
+ shutdown_module:
+   evas_module_shutdown();
+   eina_log_domain_unregister(_evas_log_dom_global);
+#endif
+ shutdown_eina:
+   eina_shutdown();
+
+   return --_evas_init_count;
 }
 
+/**
+ * Shutdown Evas
+ *
+ * @return The init counter value.
+ *
+ * This function finalize evas, decrements the counter of the number
+ * of calls to the function evas_init() and returns this value.
+ *
+ * @see evas_init().
+ *
+ */
+
 EAPI int
 evas_shutdown(void)
 {
-   initcount--;
-   if (initcount == 0)
-     {
+   if (--_evas_init_count != 0)
+     return _evas_init_count;
+
 #ifdef EVAS_CSERVE
-        if (getenv("EVAS_CSERVE")) evas_cserve_shutdown();
-#endif        
-	evas_async_events_shutdown();
-	evas_font_dir_cache_free();
-	evas_common_shutdown();
-	evas_module_shutdown();
-	eina_shutdown();
-     }
-   return initcount;
+   if (getenv("EVAS_CSERVE")) evas_cserve_shutdown();
+#endif
+#ifdef BUILD_ASYNC_EVENTS
+   evas_async_events_shutdown();
+#endif
+   evas_font_dir_cache_free();
+   evas_common_shutdown();
+   evas_module_shutdown();
+   eina_log_domain_unregister(_evas_log_dom_global);
+   eina_shutdown();
+
+   return _evas_init_count;
 }
 
 /**
@@ -54,12 +102,13 @@ evas_shutdown(void)
  * @li Set its render method with @ref evas_output_method_set .
  * @li Set its viewport size with @ref evas_output_viewport_set .
  * @li Set its size of the canvas with @ref evas_output_size_set .
- * @li Ensure that the render engine is given the correct settings with
- *     @ref evas_engine_info_set .
+ * @li Ensure that the render engine is given the correct settings
+ *     with @ref evas_engine_info_set .
  *
  * This function should only fail if the memory allocation fails.
  *
- * @return  A new uninitialised Evas canvas on success.  Otherwise, @c NULL.
+ * @return A new uninitialised Evas canvas on success.  Otherwise, @c
+ * NULL.
  * @ingroup Evas_Canvas
  */
 EAPI Evas *
@@ -77,15 +126,15 @@ evas_new(void)
    e->hinting = EVAS_FONT_HINTING_BYTECODE;
    e->name_hash = eina_hash_string_superfast_new(NULL);
 
-   eina_array_step_set(&e->delete_objects, 16);
-   eina_array_step_set(&e->active_objects, 16);
-   eina_array_step_set(&e->restack_objects, 16);
-   eina_array_step_set(&e->render_objects, 16);
-   eina_array_step_set(&e->pending_objects, 16);
-   eina_array_step_set(&e->obscuring_objects, 16);
-   eina_array_step_set(&e->temporary_objects, 16);
-   eina_array_step_set(&e->calculate_objects, 16);
-   eina_array_step_set(&e->clip_changes, 16);
+   eina_array_step_set(&e->delete_objects, 256);
+   eina_array_step_set(&e->active_objects, 256);
+   eina_array_step_set(&e->restack_objects, 256);
+   eina_array_step_set(&e->render_objects, 256);
+   eina_array_step_set(&e->pending_objects, 256);
+   eina_array_step_set(&e->obscuring_objects, 256);
+   eina_array_step_set(&e->temporary_objects, 256);
+   eina_array_step_set(&e->calculate_objects, 256);
+   eina_array_step_set(&e->clip_changes, 256);
 
    return e;
 }
@@ -161,9 +210,9 @@ evas_free(Evas *e)
 
    if (e->engine.func)
      {
-	e->engine.func->info_free(e, e->engine.info);
 	e->engine.func->context_free(e->engine.data.output, e->engine.data.context);
 	e->engine.func->output_free(e->engine.data.output);
+	e->engine.func->info_free(e, e->engine.info);
      }
 
    for (i = 0; i < e->modifiers.mod.count; i++)
@@ -193,8 +242,8 @@ evas_free(Evas *e)
 /**
  * @defgroup Evas_Output_Method Evas Render Engine Functions
  *
- * Functions that are used to set the render engine for a given function, and
- * then get that engine working.
+ * Functions that are used to set the render engine for a given
+ * function, and then get that engine working.
  *
  * The following code snippet shows how they can be used to
  * initialise an evas that uses the X11 software engine:
@@ -280,8 +329,9 @@ evas_output_method_get(const Evas *e)
 /**
  * Retrieves the current render engine info struct from the given evas.
  *
- * The returned structure is publicly modifiable.  The contents are valid
- * until either @ref evas_engine_info_set or @ref evas_render are called.
+ * The returned structure is publicly modifiable.  The contents are
+ * valid until either @ref evas_engine_info_set or @ref evas_render
+ * are called.
  *
  * This structure does not need to be freed by the caller.
  *
@@ -341,9 +391,11 @@ evas_engine_info_set(Evas *e, Evas_Engine_Info *info)
 }
 
 /**
- * @defgroup Evas_Output_Size Evas Output and Viewport Resizing Functions
+ * @defgroup Evas_Output_Size Evas Output and Viewport Resizing
+ * Functions
  *
- * Functions that set and retrieve the output and viewport size of an evas.
+ * Functions that set and retrieve the output and viewport size of an
+ * evas.
  */
 
 /**
@@ -409,9 +461,9 @@ evas_output_size_get(const Evas *e, int *w, int *h)
 /**
  * Sets the output viewport of the given evas in evas units.
  *
- * The output viewport is the area of the evas that will be visible to the
- * viewer.  The viewport will be stretched to fit the output target of the
- * evas when rendering is performed.
+ * The output viewport is the area of the evas that will be visible to
+ * the viewer.  The viewport will be stretched to fit the output
+ * target of the evas when rendering is performed.
  *
  * @note The coordinate values do not have to map 1-to-1 with the output
  *       target.  However, it is generally advised that it is done for ease
@@ -437,7 +489,7 @@ evas_output_viewport_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas
    if (h <= 0) return;
    if ((x != 0) || (y != 0))
      {
-	printf("EVAS: compat error. viewport x,y != 0,0 not supported\n");
+	ERR("Compat error. viewport x,y != 0,0 not supported");
 	x = 0;
 	y = 0;
      }
@@ -459,11 +511,12 @@ evas_output_viewport_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas
  * @param h The pointer to a height variable to be filled in
  * @ingroup Evas_Output_Size
  *
- * Calling this function writes the current canvas output viewport size and
- * location values into the variables pointed to by @p x, @p y, @p w and @p h.
- * On success the variables have the output location and size values written to
- * them in canvas units. Any of @p x, @p y, @p w or @p h that are NULL will not
- * be written to. If @p e is invalid, the results are undefined.
+ * Calling this function writes the current canvas output viewport
+ * size and location values into the variables pointed to by @p x, @p
+ * y, @p w and @p h.  On success the variables have the output
+ * location and size values written to them in canvas units. Any of @p
+ * x, @p y, @p w or @p h that are NULL will not be written to. If @p e
+ * is invalid, the results are undefined.
  *
  * Example:
  * @code
@@ -491,7 +544,8 @@ evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord
 }
 
 /**
- * @defgroup Evas_Coord_Mapping_Group Evas Coordinate Mapping Functions
+ * @defgroup Evas_Coord_Mapping_Group Evas Coordinate Mapping
+ * Functions
  *
  * Functions that are used to map coordinates from the canvas to the
  * screen or the screen to the canvas.
@@ -505,10 +559,10 @@ evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord
  * @return The screen co-ordinate translated to canvas unit co-ordinates
  * @ingroup Evas_Coord_Mapping_Group
  *
- * This function takes in a horizontal co-ordinate as the @p x parameter and
- * converts it into canvas units, accounting for output size, viewport size
- * and location, returning it as the function return value. If @p e is
- * invalid, the results are undefined.
+ * This function takes in a horizontal co-ordinate as the @p x
+ * parameter and converts it into canvas units, accounting for output
+ * size, viewport size and location, returning it as the function
+ * return value. If @p e is invalid, the results are undefined.
  *
  * Example:
  * @code
@@ -537,10 +591,10 @@ evas_coord_screen_x_to_world(const Evas *e, int x)
  * @return The screen co-ordinate translated to canvas unit co-ordinates
  * @ingroup Evas_Coord_Mapping_Group
  *
- * This function takes in a vertical co-ordinate as the @p y parameter and
- * converts it into canvas units, accounting for output size, viewport size
- * and location, returning it as the function return value. If @p e is
- * invalid, the results are undefined.
+ * This function takes in a vertical co-ordinate as the @p y parameter
+ * and converts it into canvas units, accounting for output size,
+ * viewport size and location, returning it as the function return
+ * value. If @p e is invalid, the results are undefined.
  *
  * Example:
  * @code
@@ -569,10 +623,10 @@ evas_coord_screen_y_to_world(const Evas *e, int y)
  * @return The output/screen co-ordinate translated to output co-ordinates
  * @ingroup Evas_Coord_Mapping_Group
  *
- * This function takes in a horizontal co-ordinate as the @p x parameter and
- * converts it into output units, accounting for output size, viewport size
- * and location, returning it as the function return value. If @p e is
- * invalid, the results are undefined.
+ * This function takes in a horizontal co-ordinate as the @p x
+ * parameter and converts it into output units, accounting for output
+ * size, viewport size and location, returning it as the function
+ * return value. If @p e is invalid, the results are undefined.
  *
  * Example:
  * @code
@@ -601,10 +655,10 @@ evas_coord_world_x_to_screen(const Evas *e, Evas_Coord x)
  * @return The output/screen co-ordinate translated to output co-ordinates
  * @ingroup Evas_Coord_Mapping_Group
  *
- * This function takes in a vertical co-ordinate as the @p x parameter and
- * converts it into output units, accounting for output size, viewport size
- * and location, returning it as the function return value. If @p e is
- * invalid, the results are undefined.
+ * This function takes in a vertical co-ordinate as the @p x parameter
+ * and converts it into output units, accounting for output size,
+ * viewport size and location, returning it as the function return
+ * value. If @p e is invalid, the results are undefined.
  *
  * Example:
  * @code
@@ -632,15 +686,17 @@ evas_coord_world_y_to_screen(const Evas *e, Evas_Coord y)
  * @return A numeric (opaque) ID for the rendering engine
  * @ingroup Evas_Output_Method
  *
- * This function looks up a numeric return value for the named engine in the
- * string @p name. This is a normal C string, NUL byte terminated. The name
- * is case sensitive. If the rendering engine is available, a numeric ID for
- * that engine is returned that is not 0. If the engine is not available, 0
- * is returned, indicating an invalid engine.
+ * This function looks up a numeric return value for the named engine
+ * in the string @p name. This is a normal C string, NUL byte
+ * terminated. The name is case sensitive. If the rendering engine is
+ * available, a numeric ID for that engine is returned that is not
+ * 0. If the engine is not available, 0 is returned, indicating an
+ * invalid engine.
  *
- * The programmer should NEVER rely on the numeric ID of an engine unless it is
- * returned by this function. Programs should NOT be written accessing render
- * method ID's directly, without first obtaining it from this function.
+ * The programmer should NEVER rely on the numeric ID of an engine
+ * unless it is returned by this function. Programs should NOT be
+ * written accessing render method ID's directly, without first
+ * obtaining it from this function.
  *
  * Example:
  * @code
@@ -681,13 +737,13 @@ evas_render_method_lookup(const char *name)
  * @return A linked list whose data members are C strings of engine names
  * @ingroup Evas_Output_Method
  *
- * Calling this will return a handle (pointer) to an Evas linked list. Each node
- * in the linked list will have the data pointer be a (char *) pointer to the
- * string name of the rendering engine available. The strings should never be
- * modified, neither should the list be modified. This list should be cleaned up
- * as soon as the program no longer needs it using
- * evas_render_method_list_free(). If no engines are available from Evas, NULL
- * will be returned.
+ * Calling this will return a handle (pointer) to an Evas linked
+ * list. Each node in the linked list will have the data pointer be a
+ * (char *) pointer to the string name of the rendering engine
+ * available. The strings should never be modified, neither should the
+ * list be modified. This list should be cleaned up as soon as the
+ * program no longer needs it using evas_render_method_list_free(). If
+ * no engines are available from Evas, NULL will be returned.
  *
  * Example:
  * @code
@@ -776,9 +832,10 @@ evas_render_method_list(void)
  * @param list The Eina_List base pointer for the engine list to be freed
  * @ingroup Evas_Output_Method
  *
- * When this function is called it will free the engine list passed in as
- * @p list. The list should only be a list of engines generated by calling
- * evas_render_method_list(). If @p list is NULL, nothing will happen.
+ * When this function is called it will free the engine list passed in
+ * as @p list. The list should only be a list of engines generated by
+ * calling evas_render_method_list(). If @p list is NULL, nothing will
+ * happen.
  *
  * Example:
  * @code
@@ -817,10 +874,10 @@ evas_render_method_list_free(Eina_List *list)
  * @param y The pointer to an integer to be filled in
  * @ingroup Evas_Pointer_Group
  *
- * This function returns the current known screen/output co-ordinates of the
- * mouse pointer and sets the contents of the integers pointed to by @p x
- * and @p y to contain these co-ordinates. If @p e is not a valid canvas the
- * results of this function are undefined.
+ * This function returns the current known screen/output co-ordinates
+ * of the mouse pointer and sets the contents of the integers pointed
+ * to by @p x and @p y to contain these co-ordinates. If @p e is not a
+ * valid canvas the results of this function are undefined.
  *
  * Example:
  * @code
@@ -851,10 +908,10 @@ evas_pointer_output_xy_get(const Evas *e, int *x, int *y)
  * @param y The pointer to a Evas_Coord to be filled in
  * @ingroup Evas_Pointer_Group
  *
- * This function returns the current known canvas unit co-ordinates of the
- * mouse pointer and sets the contents of the Evas_Coords pointed to by @p x
- * and @p y to contain these co-ordinates. If @p e is not a valid canvas the
- * results of this function are undefined.
+ * This function returns the current known canvas unit co-ordinates of
+ * the mouse pointer and sets the contents of the Evas_Coords pointed
+ * to by @p x and @p y to contain these co-ordinates. If @p e is not a
+ * valid canvas the results of this function are undefined.
  *
  * Example:
  * @code
@@ -884,19 +941,20 @@ evas_pointer_canvas_xy_get(const Evas *e, Evas_Coord *x, Evas_Coord *y)
  * @return A bitmask of the currently depressed buttons on the cavas
  * @ingroup Evas_Pointer_Group
  *
- * Calling this function will return a 32-bit integer with the appropriate bits
- * set to 1 that correspond to a mouse button being depressed. This limits
- * Evas to a mouse devices with a maximum of 32 buttons, but that is generally
- * in excess of any host system's pointing device abilities.
+ * Calling this function will return a 32-bit integer with the
+ * appropriate bits set to 1 that correspond to a mouse button being
+ * depressed. This limits Evas to a mouse devices with a maximum of 32
+ * buttons, but that is generally in excess of any host system's
+ * pointing device abilities.
  *
- * A canvas by default begins with no mouse buttons being pressed and only
- * calls to evas_event_feed_mouse_down(), evas_event_feed_mouse_down_data(),
- * evas_event_feed_mouse_up() and evas_event_feed_mouse_up_data() will alter
- * that.
+ * A canvas by default begins with no mouse buttons being pressed and
+ * only calls to evas_event_feed_mouse_down(),
+ * evas_event_feed_mouse_down_data(), evas_event_feed_mouse_up() and
+ * evas_event_feed_mouse_up_data() will alter that.
  *
- * The least significant bit corresponds to the first mouse button (button 1)
- * and the most significant bit corresponds to the last mouse button
- * (button 32).
+ * The least significant bit corresponds to the first mouse button
+ * (button 1) and the most significant bit corresponds to the last
+ * mouse button (button 32).
  *
  * If @p e is not a valid canvas, the return value is undefined.
  *
@@ -929,13 +987,14 @@ evas_pointer_button_down_mask_get(const Evas *e)
  * @return An integer that is 1 if the mouse is inside the canvas, 0 otherwise
  * @ingroup Evas_Pointer_Group
  *
- * When this function is called it will return a value of either 0 or 1,
- * depending on if evas_event_feed_mouse_in(), evas_event_feed_mouse_in_data(),
- * or evas_event_feed_mouse_out(), evas_event_feed_mouse_out_data() have been
- * called to feed in a mouse enter event into the canvas.
+ * When this function is called it will return a value of either 0 or
+ * 1, depending on if evas_event_feed_mouse_in(),
+ * evas_event_feed_mouse_in_data(), or evas_event_feed_mouse_out(),
+ * evas_event_feed_mouse_out_data() have been called to feed in a
+ * mouse enter event into the canvas.
  *
- * A return value of 1 indicates the mouse is logically inside the canvas, and
- * 0 implies it is logically outside the canvas.
+ * A return value of 1 indicates the mouse is logically inside the
+ * canvas, and 0 implies it is logically outside the canvas.
  *
  * A canvas begins with the mouse being assumed outside (0).
  *
@@ -960,7 +1019,7 @@ evas_pointer_inside_get(const Evas *e)
 
 /**
  * Attaches a specific pointer to the evas for fetching later
- * 
+ *
  * @param e The canvas to attach the pointer to
  * @param data The pointer to attach
  */
@@ -975,7 +1034,7 @@ evas_data_attach_set(Evas *e, void *data)
 
 /**
  * Returns the pointer attached by evas_data_attach_set()
- * 
+ *
  * @param e The canvas to attach the pointer to
  * @return The pointer attached
  */
@@ -1000,4 +1059,3 @@ _evas_unwalk(Evas *e)
    e->walking_list--;
    if ((e->walking_list == 0) && (e->delete_me)) evas_free(e);
 }
-
diff --git a/src/lib/canvas/evas_map.c b/src/lib/canvas/evas_map.c
new file mode 100644
index 0000000..550c6ef
--- /dev/null
+++ b/src/lib/canvas/evas_map.c
@@ -0,0 +1,1267 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include <math.h>
+
+static void
+_evas_map_calc_geom_change(Evas_Object *obj)
+{
+   int is, was = 0, pass = 0;
+
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+	evas_object_recalc_clippees(obj);
+	if (!pass)
+	  {
+	     if (!obj->smart.smart)
+	       {
+		  is = evas_object_is_in_output_rect(obj,
+						     obj->layer->evas->pointer.x,
+						     obj->layer->evas->pointer.y, 1, 1);
+		  if ((is ^ was) && obj->cur.visible)
+		    evas_event_feed_mouse_move(obj->layer->evas,
+					       obj->layer->evas->pointer.x,
+					       obj->layer->evas->pointer.y,
+					       obj->layer->evas->last_timestamp,
+					       NULL);
+	       }
+	  }
+     }
+   evas_object_inform_call_move(obj);
+   evas_object_inform_call_resize(obj);
+}
+
+static void
+_evas_map_calc_map_geometry(Evas_Object *obj)
+{
+   Evas_Coord x1, x2, y1, y2;
+   const Evas_Map_Point *p, *p_end;
+
+   if (!obj->cur.map) return;
+   p = obj->cur.map->points;
+   p_end = p + obj->cur.map->count;
+   x1 = p->x;
+   x2 = p->x;
+   y1 = p->y;
+   y2 = p->y;
+   p++;
+   for (; p < p_end; p++)
+     {
+        if (p->x < x1) x1 = p->x;
+        if (p->x > x2) x2 = p->x;
+        if (p->y < y1) y1 = p->y;
+        if (p->y > y2) y2 = p->y;
+     }
+   obj->cur.map->normal_geometry.x = x1;
+   obj->cur.map->normal_geometry.y = y1;
+   obj->cur.map->normal_geometry.w = (x2 - x1);
+   obj->cur.map->normal_geometry.h = (y2 - y1);
+   _evas_map_calc_geom_change(obj);
+}
+
+static inline Evas_Map *
+_evas_map_new(int count)
+{
+   int i;
+   Evas_Map *m = calloc(1, sizeof(Evas_Map) + count * sizeof(Evas_Map_Point));
+   if (!m) return NULL;
+   m->count = count;
+   m->alpha = 1;
+   m->smooth = 1;
+   for (i = 0; i < count; i++)
+     {
+        m->points[i].r = 255;
+        m->points[i].g = 255;
+        m->points[i].b = 255;
+        m->points[i].a = 255;
+     }
+   return m;
+}
+
+static inline Eina_Bool
+_evas_map_copy(Evas_Map *dst, const Evas_Map *src)
+{
+   if (dst->count != src->count)
+     {
+	ERR("cannot copy map of different sizes: dst=%i, src=%i", dst->count, src->count);
+	return EINA_FALSE;
+     }
+   memcpy(dst->points, src->points, src->count * sizeof(Evas_Map_Point));
+   dst->smooth = src->smooth;
+   dst->alpha = src->alpha;
+   return EINA_TRUE;
+}
+
+static inline Evas_Map *
+_evas_map_dup(const Evas_Map *orig)
+{
+   Evas_Map *copy = _evas_map_new(orig->count);
+   if (!copy) return NULL;
+   memcpy(copy->points, orig->points, orig->count * sizeof(Evas_Map_Point));
+   copy->smooth = orig->smooth;
+   copy->alpha = orig->alpha;
+   return copy;
+}
+
+static inline void
+_evas_map_free(Evas_Map *m)
+{
+   free(m);
+}
+
+Eina_Bool
+evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y,
+                    Evas_Coord *mx, Evas_Coord *my, int grab)
+{
+   int order[4], i, j, edges, edge[4][2], douv;
+   Evas_Coord xe[2];
+   double u[2], v[2];
+
+   if (m->count != 4) return 0;
+   // FIXME need to handle grab mode and extrapolte coords outside
+   // map
+   if (grab)
+     {
+        Evas_Coord ymin, ymax;
+        
+        ymin = m->points[0].y;
+        ymax = m->points[0].y;
+        for (i = 1; i < m->count; i++)
+          {
+             if (m->points[i].y < ymin) ymin = m->points[i].y; 
+             else if (m->points[i].y > ymax) ymax = m->points[i].y; 
+          }
+        if (y <= ymin) y = ymin + 1;
+        if (y >= ymax) y = ymax - 1;
+     }
+   edges = 0;
+   for (i = 0; i < m->count; i++)
+     {
+        j = (i + 1) % m->count;
+        if ((m->points[i].y <= y) && (m->points[j].y > y))
+          {
+             edge[edges][0] = i;
+             edge[edges][1] = j;
+             edges++;
+          }
+        else if ((m->points[j].y <= y) && (m->points[i].y > y))
+          {
+             edge[edges][0] = j;
+             edge[edges][1] = i;
+             edges++;
+          }
+     }
+   douv = 0;
+   if ((mx) || (my)) douv = 1;
+   for (i = 0; i < (edges - 1); i+= 2)
+     {
+        Evas_Coord yp, yd, x0, x1;
+        
+        j = i + 1;
+        yd = m->points[edge[i][1]].y - m->points[edge[i][0]].y;
+        if (yd > 0)
+          {
+             yp = y - m->points[edge[i][0]].y;
+             xe[0] = m->points[edge[i][1]].x - m->points[edge[i][0]].x;
+             xe[0] = m->points[edge[i][0]].x + ((xe[0] * yp) / yd);
+             if (douv)
+               {
+                  u[0] = m->points[edge[i][1]].u - m->points[edge[i][0]].u;
+                  u[0] = m->points[edge[i][0]].u + ((u[0] * yp) / yd);
+                  v[0] = m->points[edge[i][1]].v - m->points[edge[i][0]].v;
+                  v[0] = m->points[edge[i][0]].v + ((v[0] * yp) / yd);
+               }
+          }
+        else
+          {
+             xe[0] = m->points[edge[i][0]].x;
+             if (douv)
+               {
+                  u[0] = m->points[edge[i][0]].u;
+                  v[0] = m->points[edge[i][0]].v;
+               }
+          }
+        yd = m->points[edge[j][1]].y - m->points[edge[j][0]].y;
+        if (yd > 0)
+          {
+             yp = y - m->points[edge[j][0]].y;
+             xe[1] = m->points[edge[j][1]].x - m->points[edge[j][0]].x;
+             xe[1] = m->points[edge[j][0]].x + ((xe[1] * yp) / yd);
+             if (douv)
+               {
+                  u[1] = m->points[edge[j][1]].u - m->points[edge[j][0]].u;
+                  u[1] = m->points[edge[j][0]].u + ((u[1] * yp) / yd);
+                  v[1] = m->points[edge[j][1]].v - m->points[edge[j][0]].v;
+                  v[1] = m->points[edge[j][0]].v + ((v[1] * yp) / yd);
+               }
+          }
+        else
+          {
+             xe[1] = m->points[edge[j][0]].x;
+             if (douv)
+               {
+                  u[1] = m->points[edge[j][0]].u;
+                  v[1] = m->points[edge[j][0]].v;
+               }
+          }
+        if (xe[0] > xe[1])
+          {
+             int ti;
+             
+             ti = xe[0]; xe[0] = xe[1]; xe[1] = ti;
+             if (douv)
+               {
+                  double td;
+                  
+                  td = u[0]; u[0] = u[1]; u[1] = td;
+                  td = v[0]; v[0] = v[1]; v[1] = td;
+               }
+          }
+        if ((x >= xe[0]) && (x < xe[1]))
+          {
+             if (douv)
+               {
+                  if (mx) 
+                    *mx = u[0] + (((x - xe[0]) * (u[1] - u[0])) / 
+                                  (xe[1] - xe[0]));
+                 if (my)
+                    *my = v[0] + (((x - xe[0]) * (v[1] - v[0])) / 
+                                  (xe[1] - xe[0]));
+               }
+             return 1;
+          }
+        if (grab)
+          {
+             if (douv)
+               {
+                  if (mx) 
+                    *mx = u[0] + (((x - xe[0]) * (u[1] - u[0])) / 
+                                  (xe[1] - xe[0]));
+                  if (my)
+                    *my = v[0] + (((x - xe[0]) * (v[1] - v[0])) / 
+                                  (xe[1] - xe[0]));
+               }
+             return 1;
+          }
+     }
+   return 0;
+}
+
+Eina_Bool
+evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y)
+{
+   return evas_map_coords_get(m, x, y, NULL, NULL, 0);
+}
+
+
+/**
+ * Enable or disable the map that is set
+ * 
+ * This enables the map that is set or disables it. On enable, the object
+ * geometry will be saved, and the new geometry will change (position and
+ * size) to reflect the map geometry set. If none is set yet, this may be
+ * an undefined geometry, unless you have already set the map with
+ * evas_object_map_set(). It is suggested you first set a map with
+ * evas_object_map_set() with valid useful coordinatesm then enable and
+ * disable the map with evas_object_map_enable_set() as needed.
+ * 
+ * @param obj object to enable the map on
+ * @param enbled enabled state
+ */
+EAPI void
+evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->cur.usemap == !!enabled) return;
+   obj->cur.usemap = !!enabled;
+   if (enabled)
+     {
+        if (!obj->cur.map)
+          obj->cur.map = _evas_map_new(4);
+//        obj->cur.map->normal_geometry = obj->cur.geometry;
+     }
+   else
+     {
+        if (obj->cur.map)
+          {
+             _evas_map_calc_geom_change(obj);
+          }
+     }
+   _evas_map_calc_map_geometry(obj);
+}
+
+/**
+ * Get the map enabled state
+ * 
+ * This returns the currently enabled state of the map on the object indicated.
+ * The default map enable state is off. You can enable and disable it with
+ * evas_object_map_enable_set().
+ * 
+ * @param obj object to get the map enabled state from
+ * @return the map enabled state
+ */
+EAPI Eina_Bool
+evas_object_map_enable_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return obj->cur.usemap;
+}
+
+/**
+ * Set current object transformation map.
+ * 
+ * This sets the map on a given object. It is copied from the @p map pointer,
+ * so there is no need to keep the @p map object if you don't need it anymore.
+ * 
+ * A map is a set of 4 points which have canvas x, y coordinates per point,
+ * with an optional z point value as a hint for perspective correction, if it
+ * is available. As well each point has u and v coordinates. These are like
+ * "texture coordinates" in OpenGL in that they define a point in the source
+ * image that is mapped to that map vertex/point. The u corresponds to the x
+ * coordinate of this mapped point and v, the y coordinate. Note that these
+ * coordinates describe a bounding region to sample. If you have a 200x100
+ * source image and wannt to display it at 200x100 with proper pixel
+ * precision, then do:
+ * 
+ * @code
+ * Evas_Map *m = evas_map_new(4);
+ * evas_map_point_coord_set(m, 0,   0,   0, 0);
+ * evas_map_point_coord_set(m, 1, 200,   0, 0);
+ * evas_map_point_coord_set(m, 2, 200, 100, 0);
+ * evas_map_point_coord_set(m, 3,   0, 100, 0);
+ * evas_map_point_image_uv_set(m, 0,   0,   0);
+ * evas_map_point_image_uv_set(m, 1, 200,   0);
+ * evas_map_point_image_uv_set(m, 2, 200, 100);
+ * evas_map_point_image_uv_set(m, 3,   0, 100);
+ * evas_object_map_set(obj, m);
+ * evas_map_free(m);
+ * @endcode
+ * 
+ * Note that the map points a uv coordinates match the image geometry. If
+ * the @p map parameter is NULL, the sotred map will be freed and geometry
+ * prior to enabling/setting a map will be restored.
+ *
+ * @param obj object to change transformation map
+ * @param map new map to use
+ *
+ * @see evas_map_new()
+ */
+EAPI void
+evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!map)
+     {
+        if (obj->cur.map)
+          {
+             if (obj->cur.map->surface)
+               {
+                  obj->layer->evas->engine.func->image_map_surface_free
+                    (obj->layer->evas->engine.data.output,
+                     obj->cur.map->surface);
+                  obj->cur.map->surface = NULL;
+               }
+             obj->prev.geometry = obj->cur.map->normal_geometry;
+             if (!obj->prev.map)
+               {
+		  _evas_map_free(obj->cur.map);
+                  obj->cur.map = NULL;
+                  return;
+               }
+             obj->cur.map = NULL;
+             if (!obj->cur.usemap) _evas_map_calc_geom_change(obj);
+             else _evas_map_calc_map_geometry(obj);
+          }
+        return;
+     }
+   if (!obj->cur.map)
+     {
+        obj->cur.map = _evas_map_dup(map);
+        obj->prev.map = NULL;
+     }
+   else
+     {
+	_evas_map_copy(obj->cur.map, map);
+        obj->prev.map = NULL;
+     }
+   _evas_map_calc_map_geometry(obj);
+}
+
+/**
+ * Get current object transformation map.
+ * 
+ * This returns the current internal map set on the indicated object. It is
+ * intended for read-only acces and is only valid as long as the object is
+ * not deleted or the map on the object is not changed. If you wish to modify
+ * the map and set it back do the following:
+ * 
+ * @code
+ * const Evas_Map *m = evas_object_map_get(obj);
+ * Evas_Map *m2 = evas_map_dup(m);
+ * evas_map_util_rotate(m2, 30.0, 0, 0);
+ * evas_object_map_set(obj);
+ * evas_map_free(m2);
+ * @endcode
+ *
+ * @param obj object to query transformation map.
+ * @return map reference to map in use. This is an internal data structure, so
+ * do not modify it.
+ *
+ * @see evas_object_map_set()
+ */
+EAPI const Evas_Map *
+evas_object_map_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (obj->cur.map) return obj->cur.map;
+   return NULL;
+}
+
+/**
+ * Create map of transformation points to be later used with an evas object.
+ *
+ * This creates a set of points (currently only 4 is supported. no other
+ * number for @p count will work). That is empty and ready to be modified
+ * with evas_map calls.
+ * 
+ * @param count number of points in the map. *
+ * @return a newly allocated map or NULL on errors.
+ *
+ * @see evas_map_free()
+ * @see evas_map_dup()
+ * @see evas_map_point_coord_set()
+ * @see evas_map_point_image_uv_set()
+ * @see evas_map_util_points_populate_from_object_full()
+ * @see evas_map_util_points_populate_from_object()
+ *
+ * @see evas_object_map_set()
+ */
+EAPI Evas_Map *
+evas_map_new(int count)
+{
+   if (count != 4)
+     {
+	ERR("num (%i) != 4 is unsupported!", count);
+	return NULL;
+     }
+   return _evas_map_new(count);
+}
+
+/**
+ * Set the smoothing for map rendering
+ * 
+ * This sets smoothing for map rendering. If the object is a type that has
+ * its own smoothing settings, then both the smooth settings for this object
+ * and the map must be turned off. By default smooth maps are enabled.
+ * 
+ * @param m map to modify. Must not be NULL.
+ * @param enabled enable or disable smooth map rendering
+ */
+EAPI void
+evas_map_smooth_set(Evas_Map *m, Eina_Bool enabled)
+{
+   if (!m) return;
+   m->smooth = enabled;
+}
+
+/**
+ * get the smoothing for map rendering
+ * 
+ * This gets smoothing for map rendering.
+ * 
+ * @param m map to get the smooth from. Must not be NULL.
+ */
+EAPI Eina_Bool
+evas_map_smooth_get(const Evas_Map *m)
+{
+   if (!m) return 0;
+   return m->smooth;
+}
+
+/**
+ * Set the alpha flag for map rendering
+ * 
+ * This sets alpha flag for map rendering. If the object is a type that has
+ * its own alpha settings, then this will take precedence. Only image objects
+ * have this currently. Fits stops alpha blending of the map area, and is
+ * useful if you know the object and/or all sub-objects is 100% solid.
+ * 
+ * @param m map to modify. Must not be NULL.
+ * @param enabled enable or disable alpha map rendering
+ */
+EAPI void
+evas_map_alpha_set(Evas_Map *m, Eina_Bool enabled)
+{
+   if (!m) return;
+   m->alpha = enabled;
+}
+
+/**
+ * get the alpha flag for map rendering
+ * 
+ * This gets the alph flag for map rendering.
+ * 
+ * @param m map to get the alpha from. Must not be NULL.
+ */
+EAPI Eina_Bool
+evas_map_alpha_get(const Evas_Map *m)
+{
+   if (!m) return 0;
+   return m->alpha;
+}
+
+/**
+ * Copy a previously allocated map.
+ * 
+ * This makes a duplicate of the @p m object and returns it.
+ *
+ * @param m map to copy. Must not be NULL.
+ * @return newly allocated map with the same count and contents as @p m.
+ */
+EAPI Evas_Map *
+evas_map_dup(const Evas_Map *m)
+{
+   if (!m) return NULL;
+   return _evas_map_dup(m);
+}
+
+/**
+ * Free a previously allocated map.
+ *
+ * This frees a givem map @p m and all memory associated with it. You must NOT
+ * free a map returned by evas_object_map_get() as this is internal.
+ * 
+ * @param m map to free.
+ */
+EAPI void
+evas_map_free(Evas_Map *m)
+{
+   if (!m) return;
+   _evas_map_free(m);
+}
+
+/**
+ * Change the map point's coordinate.
+ * 
+ * This sets the fixen point's coordinate in the map. Note that points
+ * describe the outline of a quadrangle and are ordered either clockwise
+ * or anit-clock-wise. It is suggested to keep your quadrangles concave and
+ * non-complex, though these polygon modes may work, they may not render
+ * a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2,
+ * 2 and 3, and 3 and 0 to describe the edges of the quandrangle.
+ * 
+ * The X and Y and Z coordinates are in canvas units. Z is optional and may
+ * or may not be honored in drawing. Z is a hint and does not affect the
+ * X and Y rendered coordinates. It may be used for calculating fills with
+ * perspective correct rendering.
+ * 
+ * Remember all coordinates are canvas global ones like with move and reize
+ * in evas.
+ *
+ * @param m map to change point. Must not be @c NULL.
+ * @param idx index of point to change. Must be smaller than map size.
+ * @param x Point X Coordinate
+ * @param y Point Y Coordinate
+ * @param z Point Z Coordinate hint (pre-perspective transform)
+ *
+ * @see evas_map_util_rotate()
+ * @see evas_map_util_zoom()
+ * @see evas_map_util_points_populate_from_object_full()
+ * @see evas_map_util_points_populate_from_object()
+ */
+EAPI void
+evas_map_point_coord_set(Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_Coord z)
+{
+   Evas_Map_Point *p;
+   if (!m) return;
+   if (idx >= m->count) return;
+   p = m->points + idx;
+   p->x = x;
+   p->y = y;
+   p->z = z;
+}
+
+/**
+ * Get the map point's coordinate.
+ * 
+ * This returns the coordinates of the given point in the map.
+ *
+ * @param m map to query point.
+ * @param idx index of point to query. Must be smaller than map size.
+ * @param x where to return the X coordinate.
+ * @param y where to return the Y coordinate.
+ * @param z where to return the Z coordinate.
+ */
+EAPI void
+evas_map_point_coord_get(const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z)
+{
+   const Evas_Map_Point *p;
+   
+   if (!m) goto error;
+   if (idx >= m->count) goto error;
+   p = m->points + idx;
+   if (x) *x = p->x;
+   if (y) *y = p->y;
+   if (z) *z = p->z;
+   return;
+
+ error:
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (z) *z = 0;
+}
+
+/**
+ * Change the map point's U and V texture source point
+ *
+ * This sets the U and V coordinates for the point. This determines which
+ * coordinate in the source image is mapped to the given point, much like
+ * OpenGL and textures. Notes that these points do select the pixel, but
+ * are double floating point values to allow for accuracy and sub-pixel
+ * selection.
+ * 
+ * @param m map to change the point of.
+ * @param idx index of point to change. Must be smaller than map size.
+ * @param u the X coordinate within the image/texture source
+ * @param v the Y coordinate within the image/texture source
+ * 
+ * @see evas_map_point_coord_set()
+ * @see evas_object_map_set()
+ * @see evas_map_util_points_populate_from_object_full()
+ * @see evas_map_util_points_populate_from_object()
+ */
+EAPI void
+evas_map_point_image_uv_set(Evas_Map *m, int idx, double u, double v)
+{
+   Evas_Map_Point *p;
+   if (!m) return;
+   if (idx >= m->count) return;
+   p = m->points + idx;
+   p->u = u;
+   p->v = v;
+}
+
+/**
+ * Get the map point's U and V texture source points
+ *
+ * This returns the texture points set by evas_map_point_image_uv_set().
+ * 
+ * @param m map to query point.
+ * @param idx index of point to query. Must be smaller than map size.
+ * @param u where to write the X coordinate within the image/texture source
+ * @param v where to write the Y coordinate within the image/texture source
+ */
+EAPI void
+evas_map_point_image_uv_get(const Evas_Map *m, int idx, double *u, double *v)
+{
+   const Evas_Map_Point *p;
+   if (!m) goto error;
+   if (idx >= m->count) goto error;
+   p = m->points + idx;
+   if (u) *u = p->u;
+   if (v) *v = p->v;
+   return;
+
+ error:
+   if (u) *u = 0.0;
+   if (v) *v = 0.0;
+}
+
+/**
+ * Set the color of a vertex in the map
+ *
+ * This sets the color of the vertex in the map. Colors will be linearly
+ * interpolated between vertex points through the map. Color will multiply
+ * the "texture" pixels (like GL_MODULATE in OpenGL). The default color of
+ * a vertex in a map is white solid (255, 255, 255, 255) which means it will
+ * have no affect on modifying the texture pixels.
+ * 
+ * @param m map to change the color of.
+ * @param idx index of point to change. Must be smaller than map size.
+ * @param r red (0 - 255)
+ * @param g green (0 - 255)
+ * @param b blue (0 - 255)
+ * @param a alpha (0 - 255)
+ *
+ * @see evas_map_util_points_color_set()
+ * @see evas_map_point_coord_set()
+ * @see evas_object_map_set()
+ */
+EAPI void
+evas_map_point_color_set(Evas_Map *m, int idx, int r, int g, int b, int a)
+{
+   Evas_Map_Point *p;
+   if (!m) return;
+   if (idx >= m->count) return;
+   p = m->points + idx;
+   p->r = r;
+   p->g = g;
+   p->b = b;
+   p->a = a;
+}
+
+/**
+ * Get the color set on a vertex in the map
+ *
+ * This gets the color set by evas_map_point_color_set() on the given vertex
+ * of the map.
+ * 
+ * @param m map to get the color of the vertex from.
+ * @param idx index of point get. Must be smaller than map size.
+ * @param r pointer to red return
+ * @param g pointer to green return
+ * @param b pointer to blue return
+ * @param a pointer to alpha return (0 - 255)
+ * 
+ * @see evas_map_point_coord_set()
+ * @see evas_object_map_set()
+ */
+EAPI void
+evas_map_point_color_get(const Evas_Map *m, int idx, int *r, int *g, int *b, int *a)
+{
+   const Evas_Map_Point *p;
+   if (!m) return;
+   if (idx >= m->count) return;
+   p = m->points + idx;
+   if (r) *r = p->r;
+   if (g) *g = p->g;
+   if (b) *b = p->b;
+   if (a) *a = p->a;
+}
+
+/****************************************************************************/
+/* util functions for manipulating maps, so you don't need to know the math */
+/****************************************************************************/
+static inline void
+_evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord y, const Evas_Coord w, const Evas_Coord h, const Evas_Coord z)
+{
+   Evas_Map_Point *p = m->points;
+
+   p[0].x = x;
+   p[0].y = y;
+   p[0].z = z;
+   p[0].u = 0.0;
+   p[0].v = 0.0;
+
+   p[1].x = x + w;
+   p[1].y = y;
+   p[1].z = z;
+   p[1].u = w;
+   p[1].v = 0.0;
+
+   p[2].x = x + w;
+   p[2].y = y + h;
+   p[2].z = z;
+   p[2].u = w;
+   p[2].v = h;
+
+   p[3].x = x;
+   p[3].y = y + h;
+   p[3].z = z;
+   p[3].u = 0.0;
+   p[3].v = h;
+}
+
+/**
+ * Populate source and destination map points to match exactly object.
+ *
+ * Usually one initialize map of an object to match it's original
+ * position and size, then transform these with evas_map_util_*
+ * functions, such as evas_map_util_rotate() or
+ * evas_map_util_3d_rotate(). The original set is done by this
+ * function, avoiding code duplication all around.
+ *
+ * @param m map to change all 4 points (must be of size 4).
+ * @param obj object to use unmapped geometry to populate map coordinates.
+ * @param z Point Z Coordinate hint (pre-perspective transform). This value
+ *        will be used for all four points.
+ *
+ * @see evas_map_util_points_populate_from_object()
+ * @see evas_map_point_coord_set()
+ * @see evas_map_point_image_uv_set()
+ */
+EAPI void
+evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *obj, Evas_Coord z)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!m)
+     {
+	ERR("map == NULL");
+	return;
+     }
+   if (m->count != 4)
+     {
+	ERR("map has count=%d where 4 was expected.", m->count);
+	return;
+     }
+   _evas_map_util_points_populate(m, obj->cur.geometry.x, obj->cur.geometry.y,
+				  obj->cur.geometry.w, obj->cur.geometry.h, z);
+}
+
+/**
+ * Populate source and destination map points to match exactly object.
+ *
+ * Usually one initialize map of an object to match it's original
+ * position and size, then transform these with evas_map_util_*
+ * functions, such as evas_map_util_rotate() or
+ * evas_map_util_3d_rotate(). The original set is done by this
+ * function, avoiding code duplication all around.
+ *
+ * Z Point coordinate is assumed as 0 (zero).
+ *
+ * @param m map to change all 4 points (must be of size 4).
+ * @param obj object to use unmapped geometry to populate map coordinates.
+ *
+ * @see evas_map_util_points_populate_from_object_full()
+ * @see evas_map_util_points_populate_from_geometry()
+ * @see evas_map_point_coord_set()
+ * @see evas_map_point_image_uv_set()
+ */
+EAPI void
+evas_map_util_points_populate_from_object(Evas_Map *m, const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!m)
+     {
+	ERR("map == NULL");
+	return;
+     }
+   if (m->count != 4)
+     {
+	ERR("map has count=%d where 4 was expected.", m->count);
+	return;
+     }
+   _evas_map_util_points_populate(m, obj->cur.geometry.x, obj->cur.geometry.y,
+				  obj->cur.geometry.w, obj->cur.geometry.h, 0);
+}
+
+/**
+ * Populate source and destination map points to match given geometry.
+ *
+ * Similar to evas_map_util_points_populate_from_object_full(), this
+ * call takes raw values instead of querying object's unmapped
+ * geometry. The given width will be used to calculate destination
+ * points (evas_map_point_coord_set()) and set the image uv
+ * (evas_map_point_image_uv_set()).
+ *
+ * @param m map to change all 4 points (must be of size 4).
+ * @param x Point X Coordinate
+ * @param y Point Y Coordinate
+ * @param w width to use to calculate second and third points.
+ * @param h height to use to calculate third and fourth points.
+ * @param z Point Z Coordinate hint (pre-perspective transform). This value
+ *        will be used for all four points.
+ *
+ * @see evas_map_util_points_populate_from_object()
+ * @see evas_map_point_coord_set()
+ * @see evas_map_point_image_uv_set()
+ */
+EAPI void
+evas_map_util_points_populate_from_geometry(Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Coord z)
+{
+   if (!m)
+     {
+	ERR("map == NULL");
+	return;
+     }
+   if (m->count != 4)
+     {
+	ERR("map has count=%d where 4 was expected.", m->count);
+	return;
+     }
+   _evas_map_util_points_populate(m, x, y, w, h, z);
+}
+
+/**
+ * Set color of all points to given color.
+ *
+ * This call is useful to reuse maps after they had 3d lightning or
+ * any other colorization applied before.
+ *
+ * @param m map to change the color of.
+ * @param r red (0 - 255)
+ * @param g green (0 - 255)
+ * @param b blue (0 - 255)
+ * @param a alpha (0 - 255)
+ *
+ * @see evas_map_point_color_set()
+ */
+EAPI void
+evas_map_util_points_color_set(Evas_Map *m, int r, int g, int b, int a)
+{
+   Evas_Map_Point *p, *p_end;
+   if (!m)
+     {
+	ERR("map == NULL");
+	return;
+     }
+   p = m->points;
+   p_end = p + m->count;
+   for (; p < p_end; p++)
+     {
+	p->r = r;
+	p->g = g;
+	p->b = b;
+	p->a = a;
+     }
+}
+
+/**
+ * Change the map to apply the given rotation.
+ * 
+ * This rotates the indicated map's coordinates around the center coordinate
+ * given by @p cx and @p cy as the rotation center. The points will have their
+ * X and Y coordinates rotated clockwise by @p degrees degress (360.0 is a
+ * full rotation). Negative values for degrees will rotate counter-clockwise
+ * by that amount. All coordinates are canvas global coordinates.
+ *
+ * @param m map to change.
+ * @param degrees amount of degrees from 0.0 to 360.0 to rotate.
+ * @param cx rotation's center horizontal positon.
+ * @param cy rotation's center vertical positon.
+ *
+ * @see evas_map_point_coord_set()
+ * @see evas_map_util_zoom()
+ */
+EAPI void
+evas_map_util_rotate(Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy)
+{
+   double r = (degrees * M_PI) / 180.0;
+   Evas_Map_Point *p, *p_end;
+
+   if (!m) return;
+   p = m->points;
+   p_end = p + m->count;
+
+   for (; p < p_end; p++)
+     {
+        Evas_Coord x, y, xx, yy;
+
+        xx = x = p->x - cx;
+        yy = y = p->y - cy;
+
+        xx = (x * cos(r));
+        yy = (x * sin(r));
+        x = xx + (y * cos(r + (M_PI / 2.0)));
+        y = yy + (y * sin(r + (M_PI / 2.0)));
+
+        p->x = x + cx;
+        p->y = y + cy;
+     }
+}
+
+/**
+ * Change the map to apply the given zooming.
+ *
+ * Like evas_map_util_rotate(), this zooms the points of the map from a center
+ * point. That center is defined by @p cx and @p cy. The @p zoomx and @p zoomy
+ * parameters specific how much to zoom in the X and Y direction respectively.
+ * A value of 1.0 means "don't zoom". 2.0 means "dobule the size". 0.5 is
+ * "half the size" etc. All coordinates are canvas global coordinates.
+ * 
+ * @param m map to change.
+ * @param zoomx horizontal zoom to use.
+ * @param zoomy vertical zoom to use.
+ * @param cx zooming center horizontal positon.
+ * @param cy zooming center vertical positon.
+ *
+ * @see evas_map_point_coord_set()
+ * @see evas_map_util_rotate()
+ */
+EAPI void
+evas_map_util_zoom(Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy)
+{
+   Evas_Map_Point *p, *p_end;
+
+   if (!m) return;
+   p = m->points;
+   p_end = p + m->count;
+
+   for (; p < p_end; p++)
+     {
+        Evas_Coord x, y;
+
+        x = p->x - cx;
+        y = p->y - cy;
+
+        x = (((double)x) * zoomx);
+        y = (((double)y) * zoomy);
+
+        p->x = x + cx;
+        p->y = y + cy;
+     }
+}
+
+/**
+ * Rotate the map around 3 axes in 3D
+ * 
+ * This will rotate not just around the "Z" axis as in evas_map_util_rotate()
+ * (which is a convenience call for those only wanting 2D). This will rotate
+ * around the X, Y and Z axes. The Z axis points "into" the screen with low
+ * values at the screen and higher values further away. The X axis runs from
+ * left to right on the screen and the Y axis from top to bottom. Like with
+ * evas_map_util_rotate(0 you provide a center point to rotate around (in 3D).
+ *
+ * @param m map to change.
+ * @param dx amount of degrees from 0.0 to 360.0 to rotate arount X axis.
+ * @param dy amount of degrees from 0.0 to 360.0 to rotate arount Y axis.
+ * @param dz amount of degrees from 0.0 to 360.0 to rotate arount Z axis.
+ * @param cx rotation's center horizontal positon.
+ * @param cy rotation's center vertical positon.
+ * @param cz rotation's center vertical positon.
+ */
+EAPI void
+evas_map_util_3d_rotate(Evas_Map *m, double dx, double dy, double dz, 
+                        Evas_Coord cx, Evas_Coord cy, Evas_Coord cz)
+{
+   double rz = (dz * M_PI) / 180.0;
+   double rx = (dx * M_PI) / 180.0;
+   double ry = (dy * M_PI) / 180.0;
+   Evas_Map_Point *p, *p_end;
+
+   if (!m) return;
+   p = m->points;
+   p_end = p + m->count;
+
+   for (; p < p_end; p++)
+     {
+        double x, y, z, xx, yy, zz;
+
+        x = p->x - cx;
+        y = p->y - cy;
+        z = p->z - cz;
+        
+        if (rz != 0.0)
+          {
+             xx = x * cos(rz);
+             yy = x * sin(rz);
+             x = xx + (y * cos(rz + M_PI_2));
+             y = yy + (y * sin(rz + M_PI_2));
+          }
+
+        if (ry != 0.0)
+          {
+             xx = x * cos(ry);
+             zz = x * sin(ry);
+             x = xx + (z * cos(ry + M_PI_2));
+             z = zz + (z * sin(ry + M_PI_2));
+          }
+        
+        if (rx != 0.0)
+          {
+             zz = z * cos(rx);
+             yy = z * sin(rx);
+             z = zz + (y * cos(rx + M_PI_2));
+             y = yy + (y * sin(rx + M_PI_2));
+          }
+        
+        p->x = x + cx;
+        p->y = y + cy;
+        p->z = z + cz;
+     }
+}
+
+/**
+ * Perform lighting calculations on the given Map
+ * 
+ * This is used to apply lighting calculations (from a single light source)
+ * to a given map. The R, G and B values of each vertex will be modified to
+ * reflect the lighting based on the lixth point coordinates, the light
+ * color and the ambient color, and at what angle the map is facing the
+ * light source. A surface should have its points be declared in a
+ * clockwise fashion if the face is "facing" towards you (as opposed to
+ * away from you) as faces have a "logical" side for lighting.
+ *
+ * @param m map to change.
+ * @param lx X coordinate in space of light point
+ * @param ly Y coordinate in space of light point
+ * @param lz Z coordinate in space of light point
+ * @param lr light red value (0 - 255)
+ * @param lg light green value (0 - 255)
+ * @param lb light blue value (0 - 255)
+ * @param lr ambient color red value (0 - 255)
+ * @param lg ambient color green value (0 - 255)
+ * @param lb ambient color blue value (0 - 255)
+ */
+EAPI void
+evas_map_util_3d_lighting(Evas_Map *m, 
+                          Evas_Coord lx, Evas_Coord ly, Evas_Coord lz,
+                          int lr, int lg, int lb, int ar, int ab, int ag)
+{
+   int i;
+   
+   if (!m) return;
+   
+   for (i = 0; i < m->count; i++)
+     {
+        double x, y, z;
+        double nx, ny, nz, x1, y1, z1, x2, y2, z2, ln, br;
+        int h, j, mr, mg, mb;
+        
+        x = m->points[i].x;
+        y = m->points[i].y;
+        z = m->points[i].z;
+        
+        // calc normal
+        h = (i + m->count - 1) % m->count; // prev point
+        j = (i + 1) % m->count; // next point
+
+        x1 = m->points[h].x - x;
+        y1 = m->points[h].y - y;
+        z1 = m->points[h].z - z;
+        
+        x2 = m->points[j].x - x;
+        y2 = m->points[j].y - y;
+        z2 = m->points[j].z - z;
+        
+        nx = (y1 * z2) - (z1 * y2);
+        ny = (z1 * x2) - (x1 * z2);
+        nz = (x1 * y2) - (y1 * x2);
+        
+        ln = (nx * nx) + (ny * ny) + (nz * nz);
+        ln = sqrt(ln);
+        
+        if (ln != 0.0)
+          {
+             nx /= ln;
+             ny /= ln;
+             nz /= ln;
+          }
+        
+        // calc point -> light vector
+        x = lx - x;
+        y = ly - y;
+        z = lz - z;
+        
+        ln = (x * x) + (y * y) + (z * z);
+        ln = sqrt(ln);
+        
+        if (ln != 0.0)
+          {
+             x /= ln;
+             y /= ln;
+             z /= ln;
+          }
+        
+        // brightness - tan (0.0 -> 1.0 brightness really)
+        br = (nx * x) + (ny * y) + (nz * z);
+        if (br < 0.0) br = 0.0;
+        
+        mr = ar + ((lr - ar) * br);
+        mg = ag + ((lg - ag) * br);
+        mb = ab + ((lb - ab) * br);
+        mr = (mr * m->points[i].a) / 255;
+        mg = (mg * m->points[i].a) / 255;
+        mb = (mb * m->points[i].a) / 255;
+        m->points[i].r = (m->points[i].r * mr) / 255;
+        m->points[i].g = (m->points[i].g * mg) / 255;
+        m->points[i].b = (m->points[i].b * mb) / 255;
+     }
+}
+
+/**
+ * Apply a perspective transform to the map
+ * 
+ * This applies a given perspective (3D) to the map coordinates. X, Y and Z
+ * values are used. The px and py points specify the "infinite distance" point
+ * in the 3D conversion (where all lines converge to like when artists draw
+ * 3D by hand). The @p z0 value specifis the z value at which there is a 1:1
+ * mapping between spatial coorinates and screen coordinates. Any points
+ * on this z value will not have their X and Y values modified in the transform.
+ * Those further away (Z value higher) will shrink into the distance, and
+ * those less than this value will expand and become bigger. The @p foc value
+ * determines the "focal length" of the camera. This is in reality the distance
+ * between the camera lens plane itself (at or closer than this rendering
+ * results are undefined) and the "z0" z value. This allows for some "depth"
+ * control and @p foc must be greater than 0.
+ *
+ * @param m map to change.
+ * @param px The pespective distance X coordinate
+ * @param py The pespective distance Y coordinate
+ * @param z0 The "0" z plane value
+ * @param foc The focal distance
+ */
+EAPI void
+evas_map_util_3d_perspective(Evas_Map *m,
+                             Evas_Coord px, Evas_Coord py,
+                             Evas_Coord z0, Evas_Coord foc)
+{
+   Evas_Map_Point *p, *p_end;
+
+   if (!m) return;
+   p = m->points;
+   p_end = p + m->count;
+
+   for (; p < p_end; p++)
+     {
+        Evas_Coord x, y, zz;
+
+        if (foc > 0)
+          {
+             x = p->x - px;
+             y = p->y - py;
+             
+             zz = ((p->z - z0) + foc);
+             
+             if (zz > 0)
+               {
+                  x = (x * foc) / zz;
+                  y = (y * foc) / zz;
+               }
+             
+             p->x = px + x;
+             p->y = py + y;
+          }
+     }
+}
+
+/**
+ * Get the clockwise state of a map
+ * 
+ * This determines if the output points (X and Y. Z is not used) are
+ * clockwise or anti-clockwise. This can be used for "back-face culling". This
+ * is where you hide objects that "face away" from you. In this case objects
+ * that are not clockwise.
+ *
+ * @param m map to query.
+ * @return 1 if clockwise, 0 otherwise
+ */
+EAPI Eina_Bool
+evas_map_util_clockwise_get(Evas_Map *m)
+{
+   int i, j, k, count;
+   long long c;
+   
+   if (!m) return 0;
+   if (m->count < 3) return 0;
+   
+   count = 0;
+   for (i = 0; i < m->count; i++)
+     {
+        j = (i + 1) % m->count; 
+        k = (i + 2) % m->count;
+        c = 
+          ((m->points[j].x - m->points[i].x) *
+           (m->points[k].y - m->points[j].y))
+          -
+          ((m->points[j].y - m->points[i].y) *
+           (m->points[k].x - m->points[j].x));
+        if (c < 0) count--;
+        else if (c > 0) count++;
+     }
+   if (count > 0) return 1;
+   return 0;
+}
diff --git a/src/lib/canvas/evas_object_box.c b/src/lib/canvas/evas_object_box.c
index d6fa475..fd7e645 100644
--- a/src/lib/canvas/evas_object_box.c
+++ b/src/lib/canvas/evas_object_box.c
@@ -32,8 +32,8 @@ struct _Evas_Object_Box_Accessor
   EVAS_OBJECT_BOX_DATA_GET(o, ptr);					\
   if (!ptr)								\
     {									\
-       fprintf(stderr, "CRITICAL: no widget data for object %p (%s)\n",	\
-	       o, evas_object_type_get(o));				\
+       CRIT("no widget data for object %p (%s)",	\
+		o, evas_object_type_get(o));				\
        fflush(stderr);							\
        abort();								\
        return;								\
@@ -43,7 +43,7 @@ struct _Evas_Object_Box_Accessor
   EVAS_OBJECT_BOX_DATA_GET(o, ptr);					\
   if (!ptr)								\
     {									\
-       fprintf(stderr, "CRITICAL: no widget data for object %p (%s)\n",	\
+       CRIT("no widget data for object %p (%s)",	\
 	       o, evas_object_type_get(o));				\
        fflush(stderr);							\
        abort();								\
@@ -104,7 +104,8 @@ static void
 _on_child_resize(void *data, Evas *evas __UNUSED__, Evas_Object *o __UNUSED__, void *einfo __UNUSED__)
 {
    Evas_Object *box = data;
-   evas_object_smart_changed(box);
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(box, priv);
+   if (!priv->layouting) evas_object_smart_changed(box);
 }
 
 static void
@@ -131,7 +132,8 @@ static void
 _on_child_hints_changed(void *data, Evas *evas __UNUSED__, Evas_Object *o __UNUSED__, void *einfo __UNUSED__)
 {
    Evas_Object *box = data;
-   evas_object_smart_changed(box);
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(box, priv);
+   if (!priv->layouting) evas_object_smart_changed(box);
 }
 
 static Evas_Object_Box_Option *
@@ -267,6 +269,31 @@ _evas_object_box_insert_before_default(Evas_Object *o, Evas_Object_Box_Data *pri
 }
 
 static Evas_Object_Box_Option *
+_evas_object_box_insert_after_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference)
+{
+   Eina_List *l;
+   Evas_Object_Box_Option *opt;
+
+   EINA_LIST_FOREACH(priv->children, l, opt)
+     {
+	if (opt->obj == reference)
+	  {
+	     Evas_Object_Box_Option *new_opt;
+
+	     new_opt = _evas_object_box_option_new(o, priv, child);
+	     if (!new_opt)
+	       return NULL;
+
+	     priv->children = eina_list_append_relative
+		(priv->children, new_opt, opt);
+	     return new_opt;
+	  }
+     }
+
+   return NULL;
+}
+
+static Evas_Object_Box_Option *
 _evas_object_box_insert_at_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos)
 {
    Eina_List *l;
@@ -342,25 +369,27 @@ _evas_object_box_remove_at_default(Evas_Object *o, Evas_Object_Box_Data *priv, u
 {
    const Evas_Object_Box_Api *api;
    Eina_List *node;
+   Evas_Object_Box_Option *opt;
+   Evas_Object *obj;
 
    api = priv->api;
 
    if ((!api) || (!api->option_free))
      {
-	fputs("WARNING: api->option_free not set (may cause memory leaks,"
-	      " segfaults)\n", stderr);
+	WRN("api->option_free not set (may cause memory leaks,"
+	      " segfaults)\n");
         return NULL;
      }
 
    node = eina_list_nth_list(priv->children, pos);
    if (!node)
      {
-	fprintf(stderr, "ERROR: no item to be removed at position %d\n", pos);
+	ERR("No item to be removed at position %d\n", pos);
 	return NULL;
      }
 
-   Evas_Object_Box_Option *opt = node->data;
-   Evas_Object *obj = opt->obj;
+   opt = node->data;
+   obj = opt->obj;
 
    priv->children = eina_list_remove_list(priv->children, node);
    api->option_free(o, priv, opt);
@@ -381,7 +410,7 @@ _evas_object_box_smart_add(Evas_Object *o)
 	priv = (Evas_Object_Box_Data *)calloc(1, sizeof(*priv));
 	if (!priv)
 	  {
-	     fputs("ERROR: could not allocate object private data.\n", stderr);
+	     ERR("Could not allocate object private data.\n");
 	     return;
 	  }
 
@@ -414,8 +443,8 @@ _evas_object_box_smart_del(Evas_Object *o)
    api = priv->api;
    if ((!api) || (!api->option_free))
      {
-	fputs("WARNING: api->option_free not set (may cause memory leaks,"
-	      " segfaults)\n", stderr);
+	WRN("api->option_free not set (may cause memory leaks,"
+	      " segfaults)\n");
         return;
      }
 
@@ -449,9 +478,13 @@ _evas_object_box_smart_calculate(Evas_Object *o)
 {
    EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(o, priv);
    if (priv->layout.cb)
-     priv->layout.cb(o, priv, priv->layout.data);
+       {
+           priv->layouting = 1;
+           priv->layout.cb(o, priv, priv->layout.data);
+           priv->layouting = 0;
+       }
    else
-     fprintf(stderr, "ERROR: no layout function set for %p box.\n", o);
+     ERR("No layout function set for %p box.", o);
 }
 
 static Evas_Smart *
@@ -532,6 +565,7 @@ evas_object_box_smart_set(Evas_Object_Box_Api *api)
    api->append = _evas_object_box_append_default;
    api->prepend = _evas_object_box_prepend_default;
    api->insert_before = _evas_object_box_insert_before_default;
+   api->insert_after = _evas_object_box_insert_after_default;
    api->insert_at = _evas_object_box_insert_at_default;
    api->remove = _evas_object_box_remove_default;
    api->remove_at = _evas_object_box_remove_at_default;
@@ -597,6 +631,7 @@ _layout_set_offset_and_expand_dimension_space_max_bounded(int dim, int *new_dim,
 {
    if (align >= 0.0)
      {
+	*new_dim = dim;
 	*offset = (space_sz - (dim + pad_before + pad_after)) * align
 	  + pad_before;
      }
@@ -620,16 +655,37 @@ static void
 _layout_set_offset_and_change_dimension_min_max_cell_bounded(int dim, int *new_dim, int min_dim, int max_dim, int cell_sz, int *offset, double align, int pad_before, int pad_after)
 {
    if (align >= 0.0)
-     *offset = (cell_sz - (dim + pad_before + pad_after)) * align
-       + pad_before;
+     {
+	*new_dim = dim;
+	*offset =
+	  (cell_sz - (dim + pad_before + pad_after)) * align + pad_before;
+     }
    else
      {
         *offset = pad_before;
-        _layout_dimension_change_min_max_cell_bound(
-						    dim, new_dim, min_dim, max_dim, cell_sz - pad_before - pad_after);
+        _layout_dimension_change_min_max_cell_bound
+	  (dim, new_dim, min_dim, max_dim, cell_sz - pad_before - pad_after);
      }
 }
 
+static void
+_sizing_eval(Evas_Object *obj)
+{
+   Evas_Coord minw, minh, maxw, maxh;
+   Evas_Coord w, h;
+
+   evas_object_size_hint_min_get(obj, &minw, &minh);
+   evas_object_size_hint_max_get(obj, &maxw, &maxh);
+   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
+
+   if (w < minw) w = minw;
+   if (h < minh) h = minh;
+   if ((maxw >= 0) && (w > maxw)) w = maxw;
+   if ((maxh >= 0) && (h > maxh)) h = maxh;
+
+   evas_object_resize(obj, w, h);
+}
+
 static int
 _evas_object_box_layout_horizontal_weight_apply(Evas_Object_Box_Data *priv, Evas_Object_Box_Option **objects, int n_objects, int remaining, int weight_total)
 {
@@ -644,7 +700,7 @@ _evas_object_box_layout_horizontal_weight_apply(Evas_Object_Box_Data *priv, Evas
 
         evas_object_geometry_get(o, NULL, NULL, NULL, &h);
 
-        if (remaining < 0)
+        if (remaining <= 0)
 	  {
 	     int min_w;
 
@@ -732,8 +788,6 @@ _evas_object_box_layout_horizontal_weight_apply(Evas_Object_Box_Data *priv, Evas
  * resized bounded to a minimum or maximum size, their size hint
  * properties must be set (by the
  * evas_object_size_hint_{min,max}_set() functions.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -745,13 +799,16 @@ evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, vo
    int x, y, w, h;
    int n_children;
    Evas_Object_Box_Option *opt;
+   Evas_Object_Box_Option **objects;
    Eina_List *l;
 
    n_children = eina_list_count(priv->children);
    if (!n_children)
      return;
 
-   Evas_Object_Box_Option *objects[n_children];
+   objects = (Evas_Object_Box_Option **)alloca(sizeof(Evas_Object_Box_Option *) * n_children);
+   if (!objects)
+     return;
 
    evas_object_geometry_get(o, &x, &y, &w, &h);
    global_pad = priv->pad.h;
@@ -762,6 +819,7 @@ evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, vo
         int padding_l, padding_r;
         double weight_x;
 
+	_sizing_eval(opt->obj);
         evas_object_size_hint_weight_get(opt->obj, &weight_x, NULL);
         evas_object_size_hint_padding_get
 	  (opt->obj, &padding_l, &padding_r, NULL, NULL);
@@ -831,6 +889,7 @@ evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, vo
 	     sub_pixel -= 1 << 16;
 	  }
      }
+
    evas_object_size_hint_min_set(o, req_w, top_h);
 }
 
@@ -848,7 +907,7 @@ _evas_object_box_layout_vertical_weight_apply(Evas_Object_Box_Data *priv, Evas_O
 
         evas_object_geometry_get(o, NULL, NULL, &w, NULL);
 
-        if (remaining < 0)
+        if (remaining <= 0)
 	  {
 	     int min_h;
 
@@ -895,8 +954,6 @@ _evas_object_box_layout_vertical_weight_apply(Evas_Object_Box_Data *priv, Evas_O
  * This function behaves analogously to
  * evas_object_box_layout_horizontal().  The description of its
  * behaviour can be derived from that function's documentation.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -908,13 +965,16 @@ evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void
    int x, y, w, h;
    int n_children;
    Evas_Object_Box_Option *opt;
+   Evas_Object_Box_Option **objects;
    Eina_List *l;
 
    n_children = eina_list_count(priv->children);
    if (!n_children)
      return;
 
-   Evas_Object_Box_Option *objects[n_children];
+   objects = (Evas_Object_Box_Option **)alloca(sizeof(Evas_Object_Box_Option *) * n_children);
+   if (!objects)
+     return;
 
    evas_object_geometry_get(o, &x, &y, &w, &h);
    global_pad = priv->pad.v;
@@ -925,6 +985,7 @@ evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void
         int padding_t, padding_b;
         double weight_y;
 
+	_sizing_eval(opt->obj);
         evas_object_size_hint_weight_get(opt->obj, NULL, &weight_y);
         evas_object_size_hint_padding_get
 	  (opt->obj, NULL, NULL, &padding_t, &padding_b);
@@ -994,6 +1055,7 @@ evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void
 	     sub_pixel -= 1 << 16;
 	  }
      }
+
    evas_object_size_hint_min_set(o, top_w, req_h);
 }
 
@@ -1029,8 +1091,6 @@ evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void
  * value of -1.0 to @c align_y makes the box try to resize this child
  * element to the exact height of its parent (respecting the max hint
  * on the child's height).
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1064,6 +1124,7 @@ evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Da
         evas_object_size_hint_max_get(opt->obj, &max_w, &max_h);
         evas_object_size_hint_min_get(opt->obj, &min_w, NULL);
 
+	_sizing_eval(opt->obj);
         evas_object_geometry_get(opt->obj, NULL, NULL, &child_w, &child_h);
 
         new_w = child_w;
@@ -1088,6 +1149,7 @@ evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Da
 	     sub_pixel -= 1 << 16;
 	  }
      }
+
    evas_object_size_hint_min_set(o, w, h);
 }
 
@@ -1098,8 +1160,6 @@ evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Da
  * This function behaves analogously to
  * evas_object_box_layout_homogeneous_horizontal().  The description
  * of its behaviour can be derived from that function's documentation.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1133,6 +1193,7 @@ evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data
         evas_object_size_hint_max_get(opt->obj, &max_w, &max_h);
         evas_object_size_hint_min_get(opt->obj, NULL, &min_h);
 
+	_sizing_eval(opt->obj);
         evas_object_geometry_get(opt->obj, NULL, NULL, &child_w, &child_h);
         new_w = child_w;
         new_h = child_h;
@@ -1156,6 +1217,7 @@ evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data
 	     sub_pixel -= 1 << 16;
 	  }
      }
+
    evas_object_size_hint_min_set(o, w, h);
 }
 
@@ -1199,8 +1261,6 @@ evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data
  * value of -1.0 to @c align_y makes the box try to resize this child
  * element to the exact height of its parent (respecting the max hint
  * on the child's height).
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1223,6 +1283,7 @@ evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Obje
      {
         int child_w, padding_l, padding_r;
 
+	_sizing_eval(opt->obj);
         evas_object_size_hint_padding_get
 	  (opt->obj, &padding_l, &padding_r, NULL, NULL);
         evas_object_geometry_get(opt->obj, NULL, NULL, &child_w, NULL);
@@ -1281,6 +1342,7 @@ evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Obje
 	     sub_pixel -= 1 << 16;
 	  }
      }
+
    evas_object_size_hint_min_set(o, x, top_h);
 }
 
@@ -1292,8 +1354,6 @@ evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Obje
  * evas_object_box_layout_homogeneous_max_size_horizontal().  The
  * description of its behaviour can be derived from that function's
  * documentation.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_homogeneous_max_size_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1316,6 +1376,7 @@ evas_object_box_layout_homogeneous_max_size_vertical(Evas_Object *o, Evas_Object
      {
         int child_h, padding_t, padding_b;
 
+	_sizing_eval(opt->obj);
         evas_object_size_hint_padding_get
 	  (opt->obj, NULL, NULL, &padding_t, &padding_b);
         evas_object_geometry_get(opt->obj, NULL, NULL, NULL, &child_h);
@@ -1374,6 +1435,7 @@ evas_object_box_layout_homogeneous_max_size_vertical(Evas_Object *o, Evas_Object
 	     sub_pixel -= 1 << 16;
 	  }
      }
+
    evas_object_size_hint_min_set(o, top_w, y);
 }
 
@@ -1393,13 +1455,14 @@ _evas_object_box_layout_flow_horizontal_row_info_collect(Evas_Object_Box_Data *p
         evas_object_size_hint_padding_get
 	  (opt->obj, &padding_l, &padding_r, &padding_t, &padding_b);
 
-        evas_object_geometry_get(opt->obj, NULL, NULL, &child_w, &child_h);
+	_sizing_eval(opt->obj);
+	evas_object_geometry_get(opt->obj, NULL, NULL, &child_w, &child_h);
 
         child_w += padding_l + padding_r + priv->pad.h;
         child_h += padding_t + padding_b;
 
         remain_w -= child_w;
-        if (remain_w >= 0)
+        if (remain_w + priv->pad.h >= 0)
 	  { /* continue "line" */
 	     if (child_h > max_h)
 	       max_h = child_h;
@@ -1438,9 +1501,6 @@ _evas_object_box_layout_flow_horizontal_row_info_collect(Evas_Object_Box_Data *p
    *row_count = n_rows;
    *off_y_ret = off_y;
    *max_h_ret = max_h;
-   
-   //TODO set size hints
-   //evas_object_size_hint_min_set(o, w,h);
 }
 
 /**
@@ -1477,8 +1537,6 @@ _evas_object_box_layout_flow_horizontal_row_info_collect(Evas_Object_Box_Data *p
  * row justifying) of setting space between rows.  Note, however, that
  * @c align_y dictates positioning relative to the *largest height*
  * required by a child object in the actual row.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1490,6 +1548,9 @@ evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *pri
    int remain_y, i;
    int x, y, w, h;
    Eina_List *l;
+   int *row_max_h;
+   int *row_break;
+   int *row_width;
    int off_y;
 
    n_children = eina_list_count(priv->children);
@@ -1497,9 +1558,15 @@ evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *pri
      return;
 
    /* *per row* arrays */
-   int row_max_h[n_children];
-   int row_break[n_children];
-   int row_width[n_children];
+   row_max_h = (int *)alloca(sizeof(int) * n_children);
+   if (!row_max_h)
+     return;
+   row_break = (int *)alloca(sizeof(int) * n_children);
+   if (!row_break)
+     return;
+   row_width = (int *)alloca(sizeof(int) * n_children);
+   if (!row_width)
+     return;
 
    memset(row_width, 0, sizeof(row_width));
 
@@ -1522,6 +1589,8 @@ evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *pri
 	  inc_y = remain_y / row_count;
      }
 
+   inc_y += priv->pad.v;
+
    for (i = 0, r = 0, l = priv->children; r <= row_count; r++)
      {
         int row_justify = 0, just_inc = 0, sub_pixel = 0;
@@ -1539,6 +1608,8 @@ evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *pri
 		 (remain_x, row_size, &row_justify, &just_inc);
 	  }
 
+        row_justify += priv->pad.h;
+
         for (; i <= row_break[r]; i++, l = l->next)
 	  {
 	     Evas_Object_Box_Option *opt = l->data;
@@ -1599,13 +1670,14 @@ _evas_object_box_layout_flow_vertical_col_info_collect(Evas_Object_Box_Data *pri
         evas_object_size_hint_padding_get
 	  (opt->obj, &padding_l, &padding_r, &padding_t, &padding_b);
 
+	_sizing_eval(opt->obj);
         evas_object_geometry_get(opt->obj, NULL, NULL, &child_w, &child_h);
 
         child_w += padding_l + padding_r;
         child_h += padding_t + padding_b + priv->pad.v;
 
         remain_h -= child_h;
-        if (remain_h >= 0)
+        if (remain_h + priv->pad.v >= 0)
 	  { /* continue "col" */
 	     if (child_w > max_w)
 	       max_w = child_w;
@@ -1645,9 +1717,6 @@ _evas_object_box_layout_flow_vertical_col_info_collect(Evas_Object_Box_Data *pri
    *col_count = n_cols;
    *off_x_ret = off_x;
    *max_w_ret = max_w;
-
-   //TODO set size hints
-   //evas_object_size_hint_min_set(o, w,h);
 }
 
 /**
@@ -1657,8 +1726,6 @@ _evas_object_box_layout_flow_vertical_col_info_collect(Evas_Object_Box_Data *pri
  * This function behaves analogously to
  * evas_object_box_layout_flow_horizontal().  The description of its
  * behaviour can be derived from that function's documentation.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1670,6 +1737,9 @@ evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv,
    int remain_x, i;
    int x, y, w, h;
    Eina_List *l;
+   int *col_max_w;
+   int *col_break;
+   int *col_height;
    int off_x;
 
    n_children = eina_list_count(priv->children);
@@ -1677,9 +1747,15 @@ evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv,
      return;
 
    /* *per col* arrays */
-   int col_max_w[n_children];
-   int col_break[n_children];
-   int col_height[n_children];
+   col_max_w = (int *)alloca(sizeof(int) * n_children);
+   if (!col_max_w)
+     return;
+   col_break = (int *)alloca(sizeof(int) * n_children);
+   if (!col_break)
+     return;
+   col_height = (int *)alloca(sizeof(int) * n_children);
+   if (!col_height)
+     return;
 
    memset(col_height, 0, sizeof(col_height));
 
@@ -1701,6 +1777,8 @@ evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv,
 	  inc_x = remain_x / col_count;
      }
 
+   inc_x += priv->pad.h;
+
    for (i = 0, c = 0, l = priv->children; c <= col_count; c++)
      {
         int col_justify = 0, just_inc = 0, sub_pixel = 0;
@@ -1718,6 +1796,8 @@ evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv,
 		 (remain_y, col_size, &col_justify, &just_inc);
 	  }
 
+        col_justify += priv->pad.v;
+
         for (; i <= col_break[c]; i++, l = l->next)
 	  {
 	     Evas_Object_Box_Option *opt = l->data;
@@ -1782,8 +1862,6 @@ evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv,
  * (respecting the min and max hints on the child's width *and*
  * accounting its horizontal padding properties).  Same applies to
  * vertical axis.
- *
- * @todo consider aspect hint and respect it.
  */
 void
 evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
@@ -1809,12 +1887,13 @@ evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *d
         evas_object_size_hint_max_get(child, &max_w, &max_h);
         evas_object_size_hint_min_get(child, &min_w, &min_h);
 
-        evas_object_geometry_get(child, NULL, NULL, &child_w, &child_h);
+	_sizing_eval(opt->obj);
+	evas_object_geometry_get(child, NULL, NULL, &child_w, &child_h);
         new_w = child_w;
         new_h = child_h;
         if (new_w > top_w) top_w = new_w;
         if (new_h > top_h) top_h = new_h;
-        
+
         _layout_set_offset_and_change_dimension_min_max_cell_bounded
 	  (child_w, &new_w, min_w, max_w, ow, &off_x, align_x, pad_l, pad_r);
         _layout_set_offset_and_change_dimension_min_max_cell_bounded
@@ -1828,6 +1907,7 @@ evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *d
 	  evas_object_stack_above(child, old_child);
         old_child = child;
      }
+
    evas_object_size_hint_min_set(o, top_w, top_h);
 }
 
@@ -1958,7 +2038,7 @@ evas_object_box_prepend(Evas_Object *o, Evas_Object *child)
 }
 
 /**
- * Prepend a new object @child to the box @o relative to element @a
+ * Prepend a new object @a child to the box @c o relative to element @a
  * reference. If @a reference is not contained in the box or any other
  * error occurs, @c NULL is returned.
  */
@@ -1989,6 +2069,37 @@ evas_object_box_insert_before(Evas_Object *o, Evas_Object *child, const Evas_Obj
 }
 
 /**
+ * Append a new object @a child to the box @c o relative to element @a
+ * reference. If @a reference is not contained in the box or any other
+ * error occurs, @c NULL is returend.
+ */
+Evas_Object_Box_Option *
+evas_object_box_insert_after(Evas_Object *o, Evas_Object *child, const Evas_Object *reference)
+{
+   Evas_Object_Box_Option *opt;
+   const Evas_Object_Box_Api *api;
+
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+   if (!child)
+     return NULL;
+
+   api = priv->api;
+   if ((!api) || (!api->insert_after))
+     return NULL;
+
+   opt = api->insert_after(o, priv, child, reference);
+
+   if (opt)
+     {
+	evas_object_smart_member_add(child, o);
+	evas_object_smart_changed(o);
+	return _evas_object_box_option_callbacks_register(o, priv, opt);
+     }
+
+   return NULL;
+}
+
+/**
  * Insert a new object @a child to the box @a o at position @a pos. On
  * error, @c NULL is returned.
  */
@@ -2197,9 +2308,10 @@ evas_object_box_children_get(const Evas_Object *o)
 const char *
 evas_object_box_option_property_name_get(Evas_Object *o, int property)
 {
-   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
    const Evas_Object_Box_Api *api;
 
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+
    if (property < 0)
      return NULL;
 
@@ -2217,9 +2329,10 @@ evas_object_box_option_property_name_get(Evas_Object *o, int property)
 int
 evas_object_box_option_property_id_get(Evas_Object *o, const char *name)
 {
-   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, -1);
    const Evas_Object_Box_Api *api;
 
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, -1);
+
    if (!name)
      return -1;
 
@@ -2260,9 +2373,10 @@ evas_object_box_option_property_set(Evas_Object *o, Evas_Object_Box_Option *opt,
 Eina_Bool
 evas_object_box_option_property_vset(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args)
 {
-   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
    const Evas_Object_Box_Api *api;
 
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+
    if (!opt) return EINA_FALSE;
 
    api = priv->api;
@@ -2304,9 +2418,10 @@ evas_object_box_option_property_get(Evas_Object *o, Evas_Object_Box_Option *opt,
 Eina_Bool
 evas_object_box_option_property_vget(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args)
 {
-   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
    const Evas_Object_Box_Api *api;
 
+   EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+
    if (!opt) return EINA_FALSE;
 
    api = priv->api;
diff --git a/src/lib/canvas/evas_object_gradient.c b/src/lib/canvas/evas_object_gradient.c
index f8c0ffc..506708f 100644
--- a/src/lib/canvas/evas_object_gradient.c
+++ b/src/lib/canvas/evas_object_gradient.c
@@ -78,6 +78,7 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -411,11 +412,11 @@ evas_object_gradient_fill_angle_get(const Evas_Object *obj)
    Evas_Object_Gradient *o;
 
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return 0.0;
+   return 0;
    MAGIC_CHECK_END();
    o = (Evas_Object_Gradient *)(obj->object_data);
    MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return 0.0;
+   return 0;
    MAGIC_CHECK_END();
    return o->cur.fill.angle;
 }
@@ -503,11 +504,11 @@ evas_object_gradient_angle_get(const Evas_Object *obj)
    Evas_Object_Gradient *o;
 
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return 0.0;
+   return 0;
    MAGIC_CHECK_END();
    o = (Evas_Object_Gradient *)(obj->object_data);
    MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return 0.0;
+   return 0;
    MAGIC_CHECK_END();
    return o->cur.map.angle;
 }
@@ -711,8 +712,19 @@ evas_object_gradient_type_get(const Evas_Object *obj, char **name, char **params
 */
 
 /**
-   FIXME: ...
-**/
+ * Convert a given color from HSV to RGB format.
+ *
+ * @param h The Hue component of the color.
+ * @param s The Saturation component of the color.
+ * @param v The Value component of the color.
+ * @param r The Red component of the color.
+ * @param g The Green component of the color.
+ * @param b The Blue component of the color.
+ *
+ * This function converts a given color in HSV color format to RGB
+ * color format.
+ *
+ **/
 EAPI void
 evas_color_hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b)
 {
@@ -720,8 +732,19 @@ evas_color_hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b)
 }
 
 /**
-   FIXME: ...
-**/
+ * Convert a given color from RGB to HSV format.
+ *
+ * @param r The Red component of the color.
+ * @param g The Green component of the color.
+ * @param b The Blue component of the color.
+ * @param h The Hue component of the color.
+ * @param s The Saturation component of the color.
+ * @param v The Value component of the color.
+ *
+ * This function converts a given color in RGB color format to HSV
+ * color format.
+ *
+ **/
 EAPI void
 evas_color_rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v)
 {
@@ -729,8 +752,17 @@ evas_color_rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v)
 }
 
 /**
-   FIXME: ...
-**/
+ * Pre-multiplies a rgb triplet by an alpha factor.
+ *
+ * @param a The alpha factor.
+ * @param r The Red component of the color.
+ * @param g The Green component of the color.
+ * @param b The Blue component of the color.
+ *
+ * This function pre-multiplies a given rbg triplet by an alpha
+ * factor. Alpha factor is used to define transparency.
+ *
+ **/
 EAPI void
 evas_color_argb_premul(int a, int *r, int *g, int *b)
 {
@@ -738,8 +770,19 @@ evas_color_argb_premul(int a, int *r, int *g, int *b)
 }
 
 /**
-   FIXME: ...
-**/
+ * Undo pre-multiplication of a rgb triplet by an alpha factor.
+ *
+ * @param a The alpha factor.
+ * @param r The Red component of the color.
+ * @param g The Green component of the color.
+ * @param b The Blue component of the color.
+ *
+ * This function undoes pre-multiplication a given rbg triplet by an
+ * alpha factor. Alpha factor is used to define transparency.
+ *
+ * @see evas_color_argb_premul().
+ *
+ **/
 EAPI void
 evas_color_argb_unpremul(int a, int *r, int *g, int *b)
 {
@@ -747,8 +790,15 @@ evas_color_argb_unpremul(int a, int *r, int *g, int *b)
 }
 
 /**
-   FIXME: ...
-**/
+ * Pre-multiplies data by an alpha factor.
+ *
+ * @param data The data value.
+ * @param len  The lenght value.
+ *
+ * This function pre-multiplies a given data by an alpha
+ * factor. Alpha factor is used to define transparency.
+ *
+ **/
 EAPI void
 evas_data_argb_premul(unsigned int *data, unsigned int len)
 {
@@ -757,8 +807,15 @@ evas_data_argb_premul(unsigned int *data, unsigned int len)
 }
 
 /**
-   FIXME: ...
-**/
+ * Undo pre-multiplication data by an alpha factor.
+ *
+ * @param data The data value.
+ * @param len  The lenght value.
+ *
+ * This function undoes pre-multiplication of a given data by an alpha
+ * factor. Alpha factor is used to define transparency.
+ *
+ **/
 EAPI void
 evas_data_argb_unpremul(unsigned int *data, unsigned int len)
 {
@@ -803,14 +860,14 @@ evas_object_gradient_new(void)
    o = calloc(1, sizeof(Evas_Object_Gradient));
    if (!o) return NULL;
    o->magic = MAGIC_OBJ_GRADIENT;
-   o->cur.map.angle = 0.0;
+   o->cur.map.angle = 0;
    o->cur.map.offset = 0.0;
    o->cur.map.direction = 1;
    o->cur.fill.x = 0;
    o->cur.fill.y = 0;
    o->cur.fill.w = 1;
    o->cur.fill.h = 1;
-   o->cur.fill.angle = 0.0;
+   o->cur.fill.angle = 0;
    o->cur.fill.spread = EVAS_TEXTURE_REFLECT;
    o->cur.type.name = strdup("linear");
    o->cur.type.params = NULL;
@@ -845,7 +902,7 @@ evas_object_gradient_free(Evas_Object *obj)
       obj->layer->evas->engine.func->gradient_free(obj->layer->evas->engine.data.output,
 						   o->engine_data);
    free(o);
-   obj->object_data = NULL; 
+   obj->object_data = NULL;
 }
 
 
@@ -978,7 +1035,7 @@ evas_object_gradient_render_pre(Evas_Object *obj)
 								o->engine_data);
 	o->cur.gradient_opaque = obj->layer->evas->engine.func->gradient_is_opaque(obj->layer->evas->engine.data.output,
 										   obj->layer->evas->engine.data.context,
-				  						   o->engine_data,
+										   o->engine_data,
 										   obj->cur.cache.clip.x, obj->cur.cache.clip.y,
 										   obj->cur.cache.clip.w, obj->cur.cache.clip.h);
 
@@ -994,6 +1051,11 @@ evas_object_gradient_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if (obj->cur.map != obj->prev.map)
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* its not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
@@ -1016,7 +1078,7 @@ evas_object_gradient_render_pre(Evas_Object *obj)
    /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
    /* area so if there were updates for it they get wiped. don't do it if we */
    /* arent fully opaque and we are visible */
-   
+
    if (evas_object_is_visible(obj) &&
        evas_object_is_opaque(obj))
      obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
@@ -1024,7 +1086,7 @@ evas_object_gradient_render_pre(Evas_Object *obj)
 							    obj->cur.cache.clip.y,
 							    obj->cur.cache.clip.w,
 							    obj->cur.cache.clip.h);
-   
+
    done:
    evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 }
@@ -1088,8 +1150,9 @@ evas_object_gradient_is_opaque(Evas_Object *obj)
    /* currently fully opaque over the entire region it occupies */
    o = (Evas_Object_Gradient *)(obj->object_data);
    if (!o->engine_data) return 0;
+   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
    return o->cur.gradient_opaque;
- }
+}
 
 static int
 evas_object_gradient_was_opaque(Evas_Object *obj)
diff --git a/src/lib/canvas/evas_object_gradient2.c b/src/lib/canvas/evas_object_gradient2.c
index f9e6265..42b8018 100644
--- a/src/lib/canvas/evas_object_gradient2.c
+++ b/src/lib/canvas/evas_object_gradient2.c
@@ -140,6 +140,7 @@ evas_object_gradient2_fill_spread_get(const Evas_Object *obj)
    return og->cur.fill.spread;
 }
 
+/* FIXME: To be documented*/
 EAPI void
 evas_object_gradient2_fill_transform_set (Evas_Object *obj, Evas_Transform *t)
 {
@@ -193,6 +194,7 @@ evas_object_gradient2_fill_transform_set (Evas_Object *obj, Evas_Transform *t)
    evas_object_change(obj);
 }
 
+/* FIXME: To be documented*/
 EAPI void
 evas_object_gradient2_fill_transform_get (const Evas_Object *obj, Evas_Transform *t)
 {
diff --git a/src/lib/canvas/evas_object_gradient2_linear.c b/src/lib/canvas/evas_object_gradient2_linear.c
index eb21c7f..88fc016 100644
--- a/src/lib/canvas/evas_object_gradient2_linear.c
+++ b/src/lib/canvas/evas_object_gradient2_linear.c
@@ -63,6 +63,7 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -140,6 +141,7 @@ evas_object_gradient2_linear_fill_set(Evas_Object *obj, float x0, float y0, floa
    evas_object_change(obj);
 }
 
+/*FIXME: To be documented*/
 EAPI void
 evas_object_gradient2_linear_fill_get(const Evas_Object *obj, float *x0, float *y0, float *x1, float *y1)
 {
@@ -240,7 +242,7 @@ evas_object_gradient2_linear_free(Evas_Object *obj)
       obj->layer->evas->engine.func->gradient2_linear_free(obj->layer->evas->engine.data.output,
 							  o->engine_data);
    free(o);
-   obj->object_data = NULL; 
+   obj->object_data = NULL;
 }
 
 
@@ -333,7 +335,7 @@ evas_object_gradient2_linear_render_pre(Evas_Object *obj)
 	  }
 	og->cur.gradient_opaque = obj->layer->evas->engine.func->gradient2_linear_is_opaque(obj->layer->evas->engine.data.output,
 										   obj->layer->evas->engine.data.context,
-				  						   o->engine_data,
+										   o->engine_data,
 										   obj->cur.cache.clip.x, obj->cur.cache.clip.y,
 										   obj->cur.cache.clip.w, obj->cur.cache.clip.h);
 
@@ -350,6 +352,12 @@ evas_object_gradient2_linear_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* its not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
@@ -372,7 +380,7 @@ evas_object_gradient2_linear_render_pre(Evas_Object *obj)
    /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
    /* area so if there were updates for it they get wiped. don't do it if we */
    /* arent fully opaque and we are visible */
-   
+
    if (evas_object_is_visible(obj) &&
        evas_object_is_opaque(obj))
      obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
@@ -380,7 +388,7 @@ evas_object_gradient2_linear_render_pre(Evas_Object *obj)
 							    obj->cur.cache.clip.y,
 							    obj->cur.cache.clip.w,
 							    obj->cur.cache.clip.h);
-   
+
    done:
    evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 }
@@ -444,6 +452,7 @@ evas_object_gradient2_linear_is_opaque(Evas_Object *obj)
 
    /* this returns 1 if the internal object data implies that the object is */
    /* currently fully opaque over the entire region it occupies */
+   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
    o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
    if (!o->engine_data) return 0;
    og = (Evas_Object_Gradient2 *)(o);
diff --git a/src/lib/canvas/evas_object_gradient2_radial.c b/src/lib/canvas/evas_object_gradient2_radial.c
index 7bdd48c..01aadb3 100644
--- a/src/lib/canvas/evas_object_gradient2_radial.c
+++ b/src/lib/canvas/evas_object_gradient2_radial.c
@@ -63,6 +63,7 @@ static const Evas_Object_Func rg_object_func =
      NULL,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -239,7 +240,7 @@ evas_object_gradient2_radial_free(Evas_Object *obj)
       obj->layer->evas->engine.func->gradient2_radial_free(obj->layer->evas->engine.data.output,
 							  o->engine_data);
    free(o);
-   obj->object_data = NULL; 
+   obj->object_data = NULL;
 }
 
 
@@ -332,7 +333,7 @@ evas_object_gradient2_radial_render_pre(Evas_Object *obj)
 	  }
 	og->cur.gradient_opaque = obj->layer->evas->engine.func->gradient2_radial_is_opaque(obj->layer->evas->engine.data.output,
 										   obj->layer->evas->engine.data.context,
-				  						   o->engine_data,
+										   o->engine_data,
 										   obj->cur.cache.clip.x, obj->cur.cache.clip.y,
 										   obj->cur.cache.clip.w, obj->cur.cache.clip.h);
 
@@ -348,6 +349,12 @@ evas_object_gradient2_radial_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* its not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
@@ -370,7 +377,7 @@ evas_object_gradient2_radial_render_pre(Evas_Object *obj)
    /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
    /* area so if there were updates for it they get wiped. don't do it if we */
    /* arent fully opaque and we are visible */
-   
+
    if (evas_object_is_visible(obj) &&
        evas_object_is_opaque(obj))
      obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
@@ -378,7 +385,7 @@ evas_object_gradient2_radial_render_pre(Evas_Object *obj)
 							    obj->cur.cache.clip.y,
 							    obj->cur.cache.clip.w,
 							    obj->cur.cache.clip.h);
-   
+
    done:
    evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 }
@@ -442,6 +449,7 @@ evas_object_gradient2_radial_is_opaque(Evas_Object *obj)
 
    /* this returns 1 if the internal object data implies that the object is */
    /* currently fully opaque over the entire region it occupies */
+   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
    o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
    if (!o->engine_data) return 0;
    og = (Evas_Object_Gradient2 *)(o);
diff --git a/src/lib/canvas/evas_object_image.c b/src/lib/canvas/evas_object_image.c
index 2763f6c..4372788 100644
--- a/src/lib/canvas/evas_object_image.c
+++ b/src/lib/canvas/evas_object_image.c
@@ -23,7 +23,7 @@ struct _Evas_Object_Image
       int         spread;
       Evas_Coord_Rectangle fill;
       struct {
-	 short       w, h, stride;
+	 short         w, h, stride;
       } image;
       struct {
 	 short         l, r, t, b;
@@ -46,6 +46,9 @@ struct _Evas_Object_Image
       unsigned char  scale_down_by;
       double         dpi;
       short          w, h;
+      struct {
+         short       x, y, w, h;
+      } region;
    } load_opts;
 
    struct {
@@ -54,7 +57,7 @@ struct _Evas_Object_Image
    } func;
 
    Evas_Image_Scale_Hint scale_hint;
-   
+
    void             *engine_data;
 
    unsigned char     changed : 1;
@@ -84,6 +87,7 @@ static int evas_object_image_was_opaque(Evas_Object *obj);
 static int evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
 static int evas_object_image_has_opaque_rect(Evas_Object *obj);
 static int evas_object_image_get_opaque_rect(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+static int evas_object_image_can_map(Evas_Object *obj);
 
 static void *evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace);
 static void evas_object_image_filled_resize_listener(void *data, Evas *e, Evas_Object *obj, void *einfo);
@@ -110,7 +114,8 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      evas_object_image_has_opaque_rect,
-     evas_object_image_get_opaque_rect
+     evas_object_image_get_opaque_rect,
+     evas_object_image_can_map
 };
 
 /**
@@ -118,45 +123,50 @@ static const Evas_Object_Func object_func =
  *
  * Functions used to create and manipulate image objects.
  *
- * Note - Image objects may return or accept "image data" in multiple formats.
- * This is based on the colorspace of an object. Here is a rundown on formats:
+ * Note - Image objects may return or accept "image data" in multiple
+ * formats.  This is based on the colorspace of an object. Here is a
+ * rundown on formats:
  *
  * EVAS_COLORSPACE_ARGB8888:
  *
- * This pixel format is a linear block of pixels, starting at the top-left row
- * by row until the bottom right of the image or pixel region. All pixels are
- * 32-bit unsigned int's with the high-byte being alpha and the low byte being
- * blue in the format ARGB. Alpha may or may not be used by evas depending on
- * the alpha flag of the image, but if not used, should be set to 0xff anyway.
+ * This pixel format is a linear block of pixels, starting at the
+ * top-left row by row until the bottom right of the image or pixel
+ * region. All pixels are 32-bit unsigned int's with the high-byte
+ * being alpha and the low byte being blue in the format ARGB. Alpha
+ * may or may not be used by evas depending on the alpha flag of the
+ * image, but if not used, should be set to 0xff anyway.
  *
- * This colorspace uses premultiplied alpha. That means that R, G and B cannot
- * exceed A in value. The conversion from non-premultiplied colorspace is:
+ * This colorspace uses premultiplied alpha. That means that R, G and
+ * B cannot exceed A in value. The conversion from non-premultiplied
+ * colorspace is:
  *
  * R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255;
  *
- * So 50% transparent blue will be: 0x80000080. This will not be "dark" - just
- * 50% transparent. Values are 0 == black, 255 == solid or full red, green or
- * blue.
+ * So 50% transparent blue will be: 0x80000080. This will not be
+ * "dark" - just 50% transparent. Values are 0 == black, 255 == solid
+ * or full red, green or blue.
  *
  * EVAS_COLORSPACE_YCBCR422P601_PL:
  *
- * This is a pointer-list indirected set of YUV (YCbCr) pixel data. This means
- * that the data returned or set is not actual pixel data, but pointers TO
- * lines of pixel data. The list of pointers will first be N rows of pointers
- * to the Y plane - pointing to the first pixel at the start of each row in
- * the Y plane. N is the height of the image data in pixels. Each pixel in the
- * Y, U and V planes is 1 byte exactly, packed. The next N / 2 pointers will
- * point to rows in the U plane, and the next N / 2 pointers will point to
- * the V plane rows. U and V planes are half the horizontal and vertical
- * resolution of the U plane.
+ * This is a pointer-list indirected set of YUV (YCbCr) pixel
+ * data. This means that the data returned or set is not actual pixel
+ * data, but pointers TO lines of pixel data. The list of pointers
+ * will first be N rows of pointers to the Y plane - pointing to the
+ * first pixel at the start of each row in the Y plane. N is the
+ * height of the image data in pixels. Each pixel in the Y, U and V
+ * planes is 1 byte exactly, packed. The next N / 2 pointers will
+ * point to rows in the U plane, and the next N / 2 pointers will
+ * point to the V plane rows. U and V planes are half the horizontal
+ * and vertical resolution of the Y plane.
  *
  * Row order is top to bottom and row pixels are stored left to right.
  *
- * There is a limitation that these images MUST be a multiple of 2 pixels in
- * size horizontally or vertically. This is due to the U and V planes being
- * half resolution. Also note that this assumes the itu601 YUV colorspace
- * specification. This is defined for standard television and mpeg streams.
- * HDTV may use the itu709 specification.
+ * There is a limitation that these images MUST be a multiple of 2
+ * pixels in size horizontally or vertically. This is due to the U and
+ * V planes being half resolution. Also note that this assumes the
+ * itu601 YUV colorspace specification. This is defined for standard
+ * television and mpeg streams.  HDTV may use the itu709
+ * specification.
  *
  * Values are 0 to 255, indicating full or no signal in that plane
  * respectively.
@@ -169,22 +179,25 @@ static const Evas_Object_Func object_func =
  *
  * In the process of being implemented in 1 engine only. This may change.
  *
- * This is a pointer to image data for 16-bit half-word pixel data in 16bpp
- * RGB 565 format (5 bits red, 6 bits green, 5 bits blue), with the high-byte
- * containing red and the low byte containing blue, per pixel. This data is
- * packed row by row from the top-left to the bottom right.
- *
- * If the image has an alpha channel enabled there will be an extra alpha plane
- * after the color pixel plane. If not, then this data will not exist and
- * should not be accessed in any way. This plane is a set of pixels with 1
- * byte per pixel defining the alpha values of all pixels in the image from
- * the top-left to the bottom right of the image, row by row. Even though
- * the values of the alpha pixels can be 0 to 255, only values 0 through to 32
- * are used, 32 being solid and 0 being transparent.
- *
- * RGB values can be 0 to 31 for red and blue and 0 to 63 for green, with 0
- * being black and 31 or 63 being full red, green or blue respectively. This
- * colorspace is also pre-multiplied like EVAS_COLORSPACE_ARGB8888 so:
+ * This is a pointer to image data for 16-bit half-word pixel data in
+ * 16bpp RGB 565 format (5 bits red, 6 bits green, 5 bits blue), with
+ * the high-byte containing red and the low byte containing blue, per
+ * pixel. This data is packed row by row from the top-left to the
+ * bottom right.
+ *
+ * If the image has an alpha channel enabled there will be an extra
+ * alpha plane after the color pixel plane. If not, then this data
+ * will not exist and should not be accessed in any way. This plane is
+ * a set of pixels with 1 byte per pixel defining the alpha values of
+ * all pixels in the image from the top-left to the bottom right of
+ * the image, row by row. Even though the values of the alpha pixels
+ * can be 0 to 255, only values 0 through to 32 are used, 32 being
+ * solid and 0 being transparent.
+ *
+ * RGB values can be 0 to 31 for red and blue and 0 to 63 for green,
+ * with 0 being black and 31 or 63 being full red, green or blue
+ * respectively. This colorspace is also pre-multiplied like
+ * EVAS_COLORSPACE_ARGB8888 so:
  *
  * R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32;
  */
@@ -242,9 +255,8 @@ evas_object_image_filled_add(Evas *e)
 /**
  * Sets the filename and key of the given image object.
  *
- * If the file supports multiple data stored in it as eet,
- * you can specify the key to be used as the index of the
- * image in this file.
+ * If the file supports multiple data stored in it as eet, you can
+ * specify the key to be used as the index of the image in this file.
  *
  * @param obj The given image object.
  * @param file The image filename.
@@ -270,12 +282,14 @@ evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
 	if ((o->cur.key) && (key) && (!strcmp(o->cur.key, key)))
 	  return;
      }
-
+/*
+ * WTF? why cancel a null image preload? this is just silly (tm)
    if (!o->engine_data)
      obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
 							      o->engine_data,
 							      obj);
-
+ */
+   
    if (o->cur.file) eina_stringshare_del(o->cur.file);
    if (o->cur.key) eina_stringshare_del(o->cur.key);
    if (file) o->cur.file = eina_stringshare_add(file);
@@ -285,13 +299,22 @@ evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
    o->prev.file = NULL;
    o->prev.key = NULL;
    if (o->engine_data)
-     obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
-					       o->engine_data);
+     {
+        obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 obj);
+        obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                                  o->engine_data);
+     }
    o->load_error = EVAS_LOAD_ERROR_NONE;
    lo.scale_down_by = o->load_opts.scale_down_by;
    lo.dpi = o->load_opts.dpi;
    lo.w = o->load_opts.w;
    lo.h = o->load_opts.h;
+   lo.region.x = o->load_opts.region.x;
+   lo.region.y = o->load_opts.region.y;
+   lo.region.w = o->load_opts.region.w;
+   lo.region.h = o->load_opts.region.h;
    o->engine_data = obj->layer->evas->engine.func->image_load(obj->layer->evas->engine.data.output,
 							      o->cur.file,
 							      o->cur.key,
@@ -362,8 +385,8 @@ evas_object_image_file_get(const Evas_Object *obj, const char **file, const char
  * to be scaled.
  *
  * When rendering, the image may be scaled to fit the size of the
- * image object. This function sets what area around the border of
- * the image is not to be scaled. This sort of function is useful for
+ * image object. This function sets what area around the border of the
+ * image is not to be scaled. This sort of function is useful for
  * widget theming, where, for example, buttons may be of varying
  * sizes, but the border size must remain constant.
  *
@@ -404,8 +427,8 @@ evas_object_image_border_set(Evas_Object *obj, int l, int r, int t, int b)
 }
 
 /**
- * Retrieves how much of each border of the given image object is not to
- * be scaled.
+ * Retrieves how much of each border of the given image object is not
+ * to be scaled.
  *
  * See @ref evas_object_image_border_set for more details.
  *
@@ -446,9 +469,9 @@ evas_object_image_border_get(const Evas_Object *obj, int *l, int *r, int *t, int
  * should be drawn.
  *
  * When rendering, the image may be scaled to fit the size of the
- * image object. This function sets if the center part of the scaled image
- * is to be drawn or left completely blank, or forced to be solid. Very useful
- * for frames and decorations.
+ * image object. This function sets if the center part of the scaled
+ * image is to be drawn or left completely blank, or forced to be
+ * solid. Very useful for frames and decorations.
  *
  * @param obj The given image object.
  * @param fill Fill mode of the middle.
@@ -539,8 +562,8 @@ evas_object_image_filled_set(Evas_Object *obj, Eina_Bool setting)
 
 
 /**
- * Retrieves if the center of the given image object is to be drawn
- * or not.
+ * Retrieves if the center of the given image object is to be drawn or
+ * not.
  *
  * See @ref evas_object_image_fill_set for more details.
  *
@@ -563,12 +586,12 @@ evas_object_image_border_center_fill_get(const Evas_Object *obj)
 }
 
 /**
- * Sets the rectangle of the given image object that the image will
- * be drawn to.
+ * Sets the rectangle of the given image object that the image will be
+ * drawn to.
  *
- * Note that the image will be tiled around this one rectangle. To have
- * only one copy of the image drawn, @p x and @p y must be 0 and @p w
- * and @p h need to be the width and height of the image object
+ * Note that the image will be tiled around this one rectangle. To
+ * have only one copy of the image drawn, @p x and @p y must be 0 and
+ * @p w and @p h need to be the width and height of the image object
  * respectively.
  *
  * The default values for the fill parameters is @p x = 0, @p y = 0,
@@ -587,8 +610,8 @@ evas_object_image_fill_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Co
 
    if (w < 0) w = -w;
    if (h < 0) h = -h;
-   if (w == 0.0) return;
-   if (h == 0.0) return;
+   if (w == 0) return;
+   if (h == 0) return;
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
    return;
    MAGIC_CHECK_END();
@@ -672,7 +695,9 @@ evas_object_image_fill_spread_set(Evas_Object *obj, int spread)
 }
 
 /**
- * Retrieves the spread (tiling mode) for the given image object's fill.
+ * Retrieves the spread (tiling mode) for the given image object's
+ * fill.
+ *
  * @param   obj The given evas image object.
  * @return  The current spread mode of the image object.
  */
@@ -692,7 +717,7 @@ evas_object_image_fill_spread_get(const Evas_Object *obj)
 }
 
 EAPI void
-evas_object_image_fill_transform_set (Evas_Object *obj, Evas_Transform *t)
+evas_object_image_fill_transform_set(Evas_Object *obj, Evas_Transform *t)
 {
    Evas_Object_Image *o;
 
@@ -744,8 +769,9 @@ evas_object_image_fill_transform_set (Evas_Object *obj, Evas_Transform *t)
    evas_object_change(obj);
 }
 
+/*FIXME: To be documented*/
 EAPI void
-evas_object_image_fill_transform_get (const Evas_Object *obj, Evas_Transform *t)
+evas_object_image_fill_transform_get(const Evas_Object *obj, Evas_Transform *t)
 {
    Evas_Object_Image *o;
 
@@ -912,9 +938,9 @@ evas_object_image_load_error_get(const Evas_Object *obj)
  * Converts the raw image data of the given image object to the
  * specified colorspace.
  *
- * Note that this function does not modify the raw image data.
- * If the requested colorspace is the same as the image colorspace
- * nothing is done and NULL is returned. You should use
+ * Note that this function does not modify the raw image data.  If the
+ * requested colorspace is the same as the image colorspace nothing is
+ * done and NULL is returned. You should use
  * evas_object_image_colorspace_get() to check the current image
  * colorspace.
  *
@@ -950,8 +976,8 @@ evas_object_image_data_convert(Evas_Object *obj, Evas_Colorspace to_cspace)
 /**
  * Sets the raw image data of the given image object.
  *
- * Note that the raw data must be of the same size and colorspace
- * of the image. If data is NULL the current image data will be freed.
+ * Note that the raw data must be of the same size and colorspace of
+ * the image. If data is NULL the current image data will be freed.
  *
  * @param obj The given image object.
  * @param data The raw data, or NULL.
@@ -1014,9 +1040,10 @@ evas_object_image_data_set(Evas_Object *obj, void *data)
 /**
  * Get a pointer to the raw image data of the given image object.
  *
- * This function returns a pointer to an image object's internal pixel buffer,
- * for reading only or read/write. If you request it for writing, the image
- * will be marked dirty so that it gets redrawn at the next update.
+ * This function returns a pointer to an image object's internal pixel
+ * buffer, for reading only or read/write. If you request it for
+ * writing, the image will be marked dirty so that it gets redrawn at
+ * the next update.
  *
  * This is best suited when you want to modify an existing image,
  * without changing its dimensions.
@@ -1056,8 +1083,8 @@ evas_object_image_data_get(const Evas_Object *obj, Eina_Bool for_writing)
 /**
  * Preload image in the background
  *
- * This function request the preload of the data image in the background. The
- * worked is queued before being processed.
+ * This function request the preload of the data image in the
+ * background. The worked is queued before being processed.
  *
  * If image data is already loaded, it will callback
  * EVAS_CALLBACK_IMAGE_PRELOADED immediatelly and do nothing else.
@@ -1097,19 +1124,19 @@ evas_object_image_preload(Evas_Object *obj, Eina_Bool cancel)
 /**
  * Replaces the raw image data of the given image object.
  *
- * This function lets the application replace an image object's internal pixel
- * buffer with a user-allocated one. For best results, you should generally
- * first call evas_object_image_size_set() with the width and height for the
- * new buffer.
+ * This function lets the application replace an image object's
+ * internal pixel buffer with a user-allocated one. For best results,
+ * you should generally first call evas_object_image_size_set() with
+ * the width and height for the new buffer.
  *
  * This call is best suited for when you will be using image data with
- * different dimensions than the existing image data, if any. If you only need
- * to modify the existing image in some fashion, then using
+ * different dimensions than the existing image data, if any. If you
+ * only need to modify the existing image in some fashion, then using
  * evas_object_image_data_get() is probably what you are after.
  *
- * Note that the caller is responsible for freeing the buffer when finished
- * with it, as user-set image data will not be automatically freed when the
- * image object is deleted.
+ * Note that the caller is responsible for freeing the buffer when
+ * finished with it, as user-set image data will not be automatically
+ * freed when the image object is deleted.
  *
  * See @ref evas_object_image_data_get for more details.
  *
@@ -1184,11 +1211,11 @@ evas_object_image_data_update_add(Evas_Object *obj, int x, int y, int w, int h)
 /**
  * Enable or disable alpha channel of the given image object.
  *
- * This function sets a flag on an image object indicating whether or not to
- * use alpha channel data. A value of 1 indicates to use alpha channel data,
- * and 0 indicates to ignore any alpha channel data. Note that this has
- * nothing to do with an object's color as manipulated by
- * evas_object_color_set().
+ * This function sets a flag on an image object indicating whether or
+ * not to use alpha channel data. A value of 1 indicates to use alpha
+ * channel data, and 0 indicates to ignore any alpha channel
+ * data. Note that this has nothing to do with an object's color as
+ * manipulated by evas_object_color_set().
  *
  * @param obj The given image object.
  * @param has_alpha Whether to use alpha channel data or not.
@@ -1219,15 +1246,15 @@ evas_object_image_alpha_set(Evas_Object *obj, Eina_Bool has_alpha)
 
 
 /**
- * Retrieves the alpha channel setting of the given image object.
- *
- * This function returns 1 if the image object's alpha channel is being used,
- * or 0 otherwise.
- *
- * See @ref evas_object_image_alpha_set for more details.
+ * @brief Retrieves the alpha channel setting of the given image object.
  *
  * @param obj The given image object.
  * @return Whether the alpha channel data is being used.
+ *
+ * This function returns 1 if the image object's alpha channel is
+ * being used, or 0 otherwise.
+ *
+ * See @ref evas_object_image_alpha_set for more details.
  */
 EAPI Eina_Bool
 evas_object_image_alpha_get(const Evas_Object *obj)
@@ -1248,9 +1275,9 @@ evas_object_image_alpha_get(const Evas_Object *obj)
  * Sets whether to use of high-quality image scaling algorithm
  * of the given image object.
  *
- * When enabled, a higher quality image scaling algorithm is used when scaling
- * images to sizes other than the source image. This gives better results but
- * is more computationally expensive.
+ * When enabled, a higher quality image scaling algorithm is used when
+ * scaling images to sizes other than the source image. This gives
+ * better results but is more computationally expensive.
  *
  * @param obj The given image object.
  * @param smooth_scale Whether to use smooth scale or not.
@@ -1276,8 +1303,8 @@ evas_object_image_smooth_scale_set(Evas_Object *obj, Eina_Bool smooth_scale)
 }
 
 /**
- * Retrieves whether the given image object is using use a high-quality
- * image scaling algorithm.
+ * Retrieves whether the given image object is using use a
+ * high-quality image scaling algorithm.
  *
  * See @ref evas_object_image_smooth_scale_set for more details.
  *
@@ -1300,9 +1327,11 @@ evas_object_image_smooth_scale_get(const Evas_Object *obj)
 }
 
 /**
- * To be documented.
+ * Reload a image of the canvas.
+ *
+ * @param obj The given image object pointer.
  *
- * FIXME: To be fixed.
+ * This function reloads a image of the given canvas.
  *
  */
 EAPI void
@@ -1332,14 +1361,13 @@ evas_object_image_reload(Evas_Object *obj)
 /**
  * Save the given image object to a file.
  *
- * Note that you should pass the filename extension when saving.
- * If the file supports multiple data stored in it as eet,
- * you can specify the key to be used as the index of the
- * image in this file.
+ * Note that you should pass the filename extension when saving.  If
+ * the file supports multiple data stored in it as eet, you can
+ * specify the key to be used as the index of the image in this file.
  *
- * You can specify some flags when saving the image.
- * Currently acceptable flags are quality and compress.
- * Eg.: "quality=100 compress=9"
+ * You can specify some flags when saving the image.  Currently
+ * acceptable flags are quality and compress.  Eg.: "quality=100
+ * compress=9"
  *
  * @param obj The given image object.
  * @param file The filename to be used to save the image.
@@ -1371,7 +1399,7 @@ evas_object_image_save(const Evas_Object *obj, const char *file, const char *key
      {
 	char *p, *pp;
 	char *tflags;
-	
+
 	tflags = alloca(strlen(flags) + 1);
 	strcpy(tflags, flags);
 	p = tflags;
@@ -1413,9 +1441,12 @@ evas_object_image_save(const Evas_Object *obj, const char *file, const char *key
 }
 
 /**
- * To be documented.
+ * Import pixels from given source to a given canvas image object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object.
+ * @param pixels The pixel's source to be imported.
+ *
+ * This function imports pixels from a given source to a given canvas image.
  *
  */
 EAPI Eina_Bool
@@ -1505,9 +1536,14 @@ evas_object_image_pixels_import(Evas_Object *obj, Evas_Pixel_Import_Source *pixe
 }
 
 /**
- * To be documented.
+ * Set the callback function to get pixels from a canva's image.
+ *
+ * @param obj The given canvas pointer.
+ * @param func The callback function.
+ * @param data The data pointer to be passed to @a func.
  *
- * FIXME: To be fixed.
+ * This functions sets a function to be the callback function that get
+ * pixes from a image of the canvas.
  *
  */
 EAPI void
@@ -1573,9 +1609,12 @@ evas_object_image_pixels_dirty_get(const Evas_Object *obj)
 }
 
 /**
- * To be documented.
+ * Set the dpi resolution of a loaded image of the  canvas.
+ *
+ * @param obj The given canvas pointer.
+ * @param dpi The new dpi resolution.
  *
- * FIXME: To be fixed.
+ * This function set the dpi resolution of a given loaded canvas image.
  *
  */
 EAPI void
@@ -1602,9 +1641,12 @@ evas_object_image_load_dpi_set(Evas_Object *obj, double dpi)
 }
 
 /**
- * To be documented.
+ * Get the dpi resolution of a loaded image of the canvas.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas pointer.
+ * @return The dpi resolution of the given canvas image.
+ *
+ * This function returns the dpi resolution of given canvas image.
  *
  */
 EAPI double
@@ -1623,9 +1665,13 @@ evas_object_image_load_dpi_get(const Evas_Object *obj)
 }
 
 /**
- * To be documented.
+ * Set the size of a loaded image of the canvas.
+ *
+ * @param obj The given canvas object.
+ * @param w The new width of the canvas image given.
+ * @param h Th new height of the canvas image given.
  *
- * FIXME: To be fixed.
+ * This function sets a new size for the given canvas image.
  *
  */
 EAPI void
@@ -1652,6 +1698,16 @@ evas_object_image_load_size_set(Evas_Object *obj, int w, int h)
      }
 }
 
+/**
+ * Get the size of a loaded image of the canvas.
+ *
+ * @param obj The given canvas object.
+ * @param w The width of the canvas image given.
+ * @param h The height of the canvas image given.
+ *
+ * This function get the size of the given canvas image.
+ *
+ */
 EAPI void
 evas_object_image_load_size_get(const Evas_Object *obj, int *w, int *h)
 {
@@ -1669,9 +1725,12 @@ evas_object_image_load_size_get(const Evas_Object *obj, int *w, int *h)
 }
 
 /**
- * To be documented.
+ * Set the scale down of a loaded image of the canvas.
+ *
+ * @param obj The given canvas pointer.
+ * @param scale_down The scale to down value.
  *
- * FIXME: To be fixed.
+ * This function sets the scale down of a given canvas image.
  *
  */
 EAPI void
@@ -1698,9 +1757,11 @@ evas_object_image_load_scale_down_set(Evas_Object *obj, int scale_down)
 }
 
 /**
- * To be documented.
+ * Get the scale down value of given image of the canvas.
  *
- * FIXME: To be fixed.
+ * @param obj The given image object pointer.
+ *
+ * This function returns the scale down value of a given canvas image.
  *
  */
 EAPI int
@@ -1718,10 +1779,58 @@ evas_object_image_load_scale_down_get(const Evas_Object *obj)
    return o->load_opts.scale_down_by;
 }
 
+EAPI void
+evas_object_image_load_region_set(Evas_Object *obj, int x, int y, int w, int h)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->load_opts.region.x == x) && (o->load_opts.region.y == y) &&
+       (o->load_opts.region.w == w) && (o->load_opts.region.h == h)) return;
+   o->load_opts.region.x = x;
+   o->load_opts.region.y = y;
+   o->load_opts.region.w = w;
+   o->load_opts.region.h = h;
+   if (o->cur.file)
+     {
+	evas_object_image_unload(obj, 0);
+	evas_object_image_load(obj);
+	o->changed = 1;
+	evas_object_change(obj);
+     }
+}
+
+EAPI void
+evas_object_image_load_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (x) *x = o->load_opts.region.x;
+   if (y) *y = o->load_opts.region.y;
+   if (w) *w = o->load_opts.region.w;
+   if (h) *h = o->load_opts.region.h;
+}
+
 /**
- * To be documented.
+ * Set the colorspace of a given image of the canvas.
+ *
+ * @param obj The given image object pointer.
+ * @param cspace The new color space.
  *
- * FIXME: To be fixed.
+ * This function sets the colorspace of given canvas image.
  *
  */
 EAPI void
@@ -1744,9 +1853,12 @@ evas_object_image_colorspace_set(Evas_Object *obj, Evas_Colorspace cspace)
 }
 
 /**
- * To be documented.
+ * Get the colorspace of a given image of the canvas.
+ *
+ * @param obj The given image object pointer.
+ * @return The colorspace of the image.
  *
- * FIXME: To be fixed.
+ * This function returns the colorspace of given canvas image.
  *
  */
 EAPI Evas_Colorspace
@@ -1765,9 +1877,12 @@ evas_object_image_colorspace_get(const Evas_Object *obj)
 }
 
 /**
- * To be documented.
+ * Set the native surface of a given image of the canvas
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas pointer.
+ * @param surf The new native surface.
+ *
+ * This function sets a native surface of a given canvas image.
  *
  */
 EAPI void
@@ -1788,9 +1903,12 @@ evas_object_image_native_surface_set(Evas_Object *obj, Evas_Native_Surface *surf
 }
 
 /**
- * To be documented.
+ * Get the native surface of a given image of the canvas
+ *
+ * @param obj The given canvas pointer.
+ * @return The native surface of the given canvas image.
  *
- * FIXME: To be fixed.
+ * This function returns the native surface of a given canvas image.
  *
  */
 EAPI Evas_Native_Surface *
@@ -1810,9 +1928,12 @@ evas_object_image_native_surface_get(const Evas_Object *obj)
 }
 
 /**
- * To be documented.
+ * Set the scale hint of a given image of the canvas.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas pointer.
+ * @param hint The scale hint value.
+ *
+ * This function sets the scale hint value of the given image of the canvas.
  *
  */
 EAPI void
@@ -1830,6 +1951,14 @@ evas_object_image_scale_hint_set(Evas_Object *obj, Evas_Image_Scale_Hint hint)
    o->scale_hint = hint;
 }
 
+/**
+ * Get the scale hint of a given image of the canvas.
+ *
+ * @param obj The given canvas pointer.
+ *
+ * This function returns the scale hint value of the given image of the canvas.
+ *
+ */
 EAPI Evas_Image_Scale_Hint
 evas_object_image_scale_hint_get(const Evas_Object *obj)
 {
@@ -1846,9 +1975,11 @@ evas_object_image_scale_hint_get(const Evas_Object *obj)
 }
 
 /**
- * To be documented.
+ * Flush the image cache of the canvas.
+ *
+ * @param e The given evas pointer.
  *
- * FIXME: To be fixed.
+ * This function flushes image cache of canvas.
  *
  */
 EAPI void
@@ -1862,10 +1993,11 @@ evas_image_cache_flush(Evas *e)
 }
 
 /**
- * To be documented.
+ * Reload the image cache
  *
- * FIXME: To be fixed.
+ * @param e The given evas pointer.
  *
+ * This function reloads the image cache of canvas.
  */
 EAPI void
 evas_image_cache_reload(Evas *e)
@@ -1914,9 +2046,12 @@ evas_image_cache_reload(Evas *e)
 }
 
 /**
- * To be documented.
+ * Set the image cache.
+ *
+ * @param e The given evas pointer.
+ * @param size The cache size.
  *
- * FIXME: To be fixed.
+ * This function sets the image cache of canvas.
  *
  */
 EAPI void
@@ -1931,9 +2066,11 @@ evas_image_cache_set(Evas *e, int size)
 }
 
 /**
- * To be documented.
+ * Set the image cache
  *
- * FIXME: To be fixed.
+ * @param e The given evas pointer.
+ *
+ * This function returns the image cache of canvas.
  *
  */
 EAPI int
@@ -1994,6 +2131,10 @@ evas_object_image_load(Evas_Object *obj)
    lo.dpi = o->load_opts.dpi;
    lo.w = o->load_opts.w;
    lo.h = o->load_opts.h;
+   lo.region.x = o->load_opts.region.x;
+   lo.region.y = o->load_opts.region.y;
+   lo.region.w = o->load_opts.region.w;
+   lo.region.h = o->load_opts.region.h;
    o->engine_data = obj->layer->evas->engine.func->image_load(obj->layer->evas->engine.data.output,
 							      o->cur.file,
 							      o->cur.key,
@@ -2127,8 +2268,13 @@ evas_object_image_free(Evas_Object *obj)
    if (o->cur.file) eina_stringshare_del(o->cur.file);
    if (o->cur.key) eina_stringshare_del(o->cur.key);
    if (o->engine_data)
-     obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
-					       o->engine_data);
+     {
+        obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 obj);
+        obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                                  o->engine_data);
+     }
    o->engine_data = NULL;
    o->magic = 0;
    EINA_LIST_FREE(o->pixel_updates, r)
@@ -2183,165 +2329,191 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
 	       }
 	     o->dirty_pixels = 0;
 	  }
-        obj->layer->evas->engine.func->image_scale_hint_set(output,
-                                                            o->engine_data,
-                                                            o->scale_hint);
-	o->engine_data = obj->layer->evas->engine.func->image_border_set(output, o->engine_data,
-									 o->cur.border.l, o->cur.border.r,
-									 o->cur.border.t, o->cur.border.b);
-	idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
-	idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
-	if (idw < 1.0) idw = 1.0;
-	if (idh < 1.0) idh = 1.0;
-	if (idx > 0.0) idx -= idw;
-	if (idy > 0.0) idy -= idh;
-	while ((int)idx < obj->cur.geometry.w)
-	  {
-	     Evas_Coord ydy;
-	     int dobreak_w = 0;
-
-	     ydy = idy;
-	     ix = idx;
-	     if ((o->cur.fill.w == obj->cur.geometry.w) &&
-		 (o->cur.fill.x == 0.0))
-	       {
-		  dobreak_w = 1;
-		  iw = obj->cur.geometry.w;
-	       }
-	     else
-	       iw = ((int)(idx + idw)) - ix;
-	     while ((int)idy < obj->cur.geometry.h)
-	       {
-		  int dobreak_h = 0;
-
-		  iy = idy;
-		  if ((o->cur.fill.h == obj->cur.geometry.h) &&
-		      (o->cur.fill.y == 0.0))
-		    {
-		       ih = obj->cur.geometry.h;
-		       dobreak_h = 1;
-		    }
-		  else
-		    ih = ((int)(idy + idh)) - iy;
-		  if ((o->cur.border.l == 0) &&
-		      (o->cur.border.r == 0) &&
-		      (o->cur.border.t == 0) &&
-		      (o->cur.border.b == 0) &&
-		      (o->cur.border.fill != 0))
-		    obj->layer->evas->engine.func->image_draw(output,
-							      context,
-							      surface,
-							      o->engine_data,
-							      0, 0,
-							      o->cur.image.w,
-							      o->cur.image.h,
-							      obj->cur.geometry.x + ix + x,
-							      obj->cur.geometry.y + iy + y,
-							      iw, ih,
-							      o->cur.smooth_scale);
-		  else
-		    {
-		       int inx, iny, inw, inh, outx, outy, outw, outh;
-		       int bl, br, bt, bb;
-		       int imw, imh, ox, oy;
-
-		       ox = obj->cur.geometry.x + ix + x;
-		       oy = obj->cur.geometry.y + iy + y;
-		       imw = o->cur.image.w;
-		       imh = o->cur.image.h;
-		       bl = o->cur.border.l;
-		       br = o->cur.border.r;
-		       bt = o->cur.border.t;
-		       bb = o->cur.border.b;
-		       if ((bl + br) > iw)
-			 {
-			    bl = iw / 2;
-			    br = iw - bl;
-			 }
-		       if ((bl + br) > imw)
-			 {
-			    bl = imw / 2;
-			    br = imw - bl;
-			 }
-		       if ((bt + bb) > ih)
-			 {
-			    bt = ih / 2;
-			    bb = ih - bt;
-			 }
-		       if ((bt + bb) > imh)
-			 {
-			    bt = imh / 2;
-			    bb = imh - bt;
-			 }
-
-		       inx = 0; iny = 0;
-		       inw = bl; inh = bt;
-		       outx = ox; outy = oy;
-		       outw = bl; outh = bt;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-		       inx = bl; iny = 0;
-		       inw = imw - bl - br; inh = bt;
-		       outx = ox + bl; outy = oy;
-		       outw = iw - bl - br; outh = bt;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-		       inx = imw - br; iny = 0;
-		       inw = br; inh = bt;
-		       outx = ox + iw - br; outy = oy;
-		       outw = br; outh = bt;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-
-		       inx = 0; iny = bt;
-		       inw = bl; inh = imh - bt - bb;
-		       outx = ox; outy = oy + bt;
-		       outw = bl; outh = ih - bt - bb;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-		       if (o->cur.border.fill > EVAS_BORDER_FILL_NONE)
-			 {
-			    inx = bl; iny = bt;
-			    inw = imw - bl - br; inh = imh - bt - bb;
-			    outx = ox + bl; outy = oy + bt;
-			    outw = iw - bl - br; outh = ih - bt - bb;
-                            if ((o->cur.border.fill == EVAS_BORDER_FILL_SOLID) &&
-                                (obj->cur.cache.clip.a == 255) &&
-                                (obj->cur.render_op == EVAS_RENDER_BLEND))
+        if ((obj->cur.map) && (obj->cur.map->count == 4) && (obj->cur.usemap))
+          {
+	     const Evas_Map_Point *p, *p_end;
+             RGBA_Map_Point pts[4], *pt;
+
+	     p = obj->cur.map->points;
+	     p_end = p + 4;
+	     pt = pts;
+
+             // draw geom +x +y
+             for (; p < p_end; p++, pt++)
+               {
+                  pt->x = (p->x + x) << FP;
+                  pt->y = (p->y + y) << FP;
+                  pt->z = (p->z)     << FP;
+                  pt->u = p->u * FP1;
+                  pt->v = p->v * FP1;
+                  pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
+              }
+             obj->layer->evas->engine.func->image_map4_draw
+               (output, context, surface, o->engine_data, pts,
+                o->cur.smooth_scale | obj->cur.map->smooth, 0);
+          }
+        else
+          {
+             obj->layer->evas->engine.func->image_scale_hint_set(output,
+                                                                 o->engine_data,
+                                                                 o->scale_hint);
+             o->engine_data = obj->layer->evas->engine.func->image_border_set(output, o->engine_data,
+                                                                              o->cur.border.l, o->cur.border.r,
+                                                                              o->cur.border.t, o->cur.border.b);
+             idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
+             idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
+             if (idw < 1) idw = 1;
+             if (idh < 1) idh = 1;
+             if (idx > 0) idx -= idw;
+             if (idy > 0) idy -= idh;
+             while ((int)idx < obj->cur.geometry.w)
+               {
+                  Evas_Coord ydy;
+                  int dobreak_w = 0;
+                  
+                  ydy = idy;
+                  ix = idx;
+                  if ((o->cur.fill.w == obj->cur.geometry.w) &&
+                      (o->cur.fill.x == 0))
+                    {
+                       dobreak_w = 1;
+                       iw = obj->cur.geometry.w;
+                    }
+                  else
+                    iw = ((int)(idx + idw)) - ix;
+                  while ((int)idy < obj->cur.geometry.h)
+                    {
+                       int dobreak_h = 0;
+                       
+                       iy = idy;
+                       if ((o->cur.fill.h == obj->cur.geometry.h) &&
+                           (o->cur.fill.y == 0))
+                         {
+                            ih = obj->cur.geometry.h;
+                            dobreak_h = 1;
+                         }
+                       else
+                         ih = ((int)(idy + idh)) - iy;
+                       if ((o->cur.border.l == 0) &&
+                           (o->cur.border.r == 0) &&
+                           (o->cur.border.t == 0) &&
+                           (o->cur.border.b == 0) &&
+                           (o->cur.border.fill != 0))
+                         obj->layer->evas->engine.func->image_draw(output,
+                                                                   context,
+                                                                   surface,
+                                                                   o->engine_data,
+                                                                   0, 0,
+                                                                   o->cur.image.w,
+                                                                   o->cur.image.h,
+                                                                   obj->cur.geometry.x + ix + x,
+                                                                   obj->cur.geometry.y + iy + y,
+                                                                   iw, ih,
+                                                                   o->cur.smooth_scale);
+                       else
+                         {
+                            int inx, iny, inw, inh, outx, outy, outw, outh;
+                            int bl, br, bt, bb;
+                            int imw, imh, ox, oy;
+                            
+                            ox = obj->cur.geometry.x + ix + x;
+                            oy = obj->cur.geometry.y + iy + y;
+                            imw = o->cur.image.w;
+                            imh = o->cur.image.h;
+                            bl = o->cur.border.l;
+                            br = o->cur.border.r;
+                            bt = o->cur.border.t;
+                            bb = o->cur.border.b;
+                            if ((bl + br) > iw)
                               {
-                                 obj->layer->evas->engine.func->context_render_op_set(output, context,
-                                                                                      EVAS_RENDER_COPY);
-                                 obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-                                 obj->layer->evas->engine.func->context_render_op_set(output, context,
-                                                                                      obj->cur.render_op);
+                                 bl = iw / 2;
+                                 br = iw - bl;
                               }
-                            else
-                              obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-			 }
-		       inx = imw - br; iny = bt;
-		       inw = br; inh = imh - bt - bb;
-		       outx = ox + iw - br; outy = oy + bt;
-		       outw = br; outh = ih - bt - bb;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-
-		       inx = 0; iny = imh - bb;
-		       inw = bl; inh = bb;
-		       outx = ox; outy = oy + ih - bb;
-		       outw = bl; outh = bb;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-		       inx = bl; iny = imh - bb;
-		       inw = imw - bl - br; inh = bb;
-		       outx = ox + bl; outy = oy + ih - bb;
-		       outw = iw - bl - br; outh = bb;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-		       inx = imw - br; iny = imh - bb;
-		       inw = br; inh = bb;
-		       outx = ox + iw - br; outy = oy + ih - bb;
-		       outw = br; outh = bb;
-		       obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
-		    }
-		  idy += idh;
-		  if (dobreak_h) break;
-	       }
-	     idx += idw;
-	     idy = ydy;
-	     if (dobreak_w) break;
+                            if ((bl + br) > imw)
+                              {
+                                 bl = imw / 2;
+                                 br = imw - bl;
+                              }
+                            if ((bt + bb) > ih)
+                              {
+                                 bt = ih / 2;
+                                 bb = ih - bt;
+                              }
+                            if ((bt + bb) > imh)
+                              {
+                                 bt = imh / 2;
+                                 bb = imh - bt;
+                              }
+                            
+                            inx = 0; iny = 0;
+                            inw = bl; inh = bt;
+                            outx = ox; outy = oy;
+                            outw = bl; outh = bt;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            inx = bl; iny = 0;
+                            inw = imw - bl - br; inh = bt;
+                            outx = ox + bl; outy = oy;
+                            outw = iw - bl - br; outh = bt;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            inx = imw - br; iny = 0;
+                            inw = br; inh = bt;
+                            outx = ox + iw - br; outy = oy;
+                            outw = br; outh = bt;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            
+                            inx = 0; iny = bt;
+                            inw = bl; inh = imh - bt - bb;
+                            outx = ox; outy = oy + bt;
+                            outw = bl; outh = ih - bt - bb;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            if (o->cur.border.fill > EVAS_BORDER_FILL_NONE)
+                              {
+                                 inx = bl; iny = bt;
+                                 inw = imw - bl - br; inh = imh - bt - bb;
+                                 outx = ox + bl; outy = oy + bt;
+                                 outw = iw - bl - br; outh = ih - bt - bb;
+                                 if ((o->cur.border.fill == EVAS_BORDER_FILL_SOLID) &&
+                                     (obj->cur.cache.clip.a == 255) &&
+                                     (obj->cur.render_op == EVAS_RENDER_BLEND))
+                                   {
+                                      obj->layer->evas->engine.func->context_render_op_set(output, context,
+                                                                                           EVAS_RENDER_COPY);
+                                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                                      obj->layer->evas->engine.func->context_render_op_set(output, context,
+                                                                                           obj->cur.render_op);
+                                   }
+                                 else
+                                   obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                              }
+                            inx = imw - br; iny = bt;
+                            inw = br; inh = imh - bt - bb;
+                            outx = ox + iw - br; outy = oy + bt;
+                            outw = br; outh = ih - bt - bb;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            
+                            inx = 0; iny = imh - bb;
+                            inw = bl; inh = bb;
+                            outx = ox; outy = oy + ih - bb;
+                            outw = bl; outh = bb;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            inx = bl; iny = imh - bb;
+                            inw = imw - bl - br; inh = bb;
+                            outx = ox + bl; outy = oy + ih - bb;
+                            outw = iw - bl - br; outh = bb;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                            inx = imw - br; iny = imh - bb;
+                            inw = br; inh = bb;
+                            outx = ox + iw - br; outy = oy + ih - bb;
+                            outw = br; outh = bb;
+                            obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                         }
+                       idy += idh;
+                       if (dobreak_h) break;
+                    }
+                  idx += idw;
+                  idy = ydy;
+                  if (dobreak_w) break;
+               }
 	  }
      }
 }
@@ -2364,9 +2536,8 @@ evas_object_image_render_pre(Evas_Object *obj)
 
    if ((o->cur.fill.w < 1) || (o->cur.fill.h < 1))
      {
-	fprintf(stderr,
-		"ERROR: evas image: %p has invalid fill size: %dx%d. Ignored\n",
-		obj, o->cur.fill.w, o->cur.fill.h);
+       ERR("%p has invalid fill size: %dx%d. Ignored",
+	     obj, o->cur.fill.w, o->cur.fill.h);
 	return;
      }
 
@@ -2386,6 +2557,12 @@ evas_object_image_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	if (!o->pixel_updates) goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* it's not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
@@ -2565,11 +2742,13 @@ evas_object_image_render_pre(Evas_Object *obj)
    /* aren't fully opaque and we are visible */
    if (evas_object_is_visible(obj) &&
        evas_object_is_opaque(obj))
-     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
-							    obj->cur.cache.clip.x,
-							    obj->cur.cache.clip.y,
-							    obj->cur.cache.clip.w,
-							    obj->cur.cache.clip.h);
+     {
+         obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
+                                                               obj->cur.cache.clip.x,
+                                                               obj->cur.cache.clip.y,
+                                                               obj->cur.cache.clip.w,
+                                                               obj->cur.cache.clip.h);
+     }
    done:
    evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 }
@@ -2638,11 +2817,9 @@ evas_object_image_is_opaque(Evas_Object *obj)
 	(o->cur.border.b != 0)) &&
        (!o->cur.border.fill)) return 0;
    if (!o->engine_data) return 0;
-   if (obj->cur.render_op == EVAS_RENDER_COPY)
-	return 1;
+   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
+   if (obj->cur.render_op == EVAS_RENDER_COPY) return 1;
    if (o->cur.has_alpha) return 0;
-   if (obj->cur.render_op != EVAS_RENDER_BLEND)
-	return 0;
    return 1;
 }
 
@@ -2662,11 +2839,10 @@ evas_object_image_was_opaque(Evas_Object *obj)
 	(o->prev.border.b != 0)) &&
        (!o->prev.border.fill)) return 0;
    if (!o->engine_data) return 0;
-   if (obj->prev.render_op == EVAS_RENDER_COPY)
-	return 1;
+   if (obj->prev.usemap) return 0;
+   if (obj->prev.render_op == EVAS_RENDER_COPY) return 1;
    if (o->prev.has_alpha) return 0;
-   if (obj->prev.render_op != EVAS_RENDER_BLEND)
-	return 0;
+   if (obj->prev.render_op != EVAS_RENDER_BLEND) return 0;
    return 1;
 }
 
@@ -2682,99 +2858,107 @@ evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
 
    x -= obj->cur.cache.clip.x;
    y -= obj->cur.cache.clip.y;
-   w = obj->cur.geometry.w;
-   h = obj->cur.geometry.h;
+   w = obj->cur.cache.clip.w;
+   h = obj->cur.cache.clip.h;
    iw = o->cur.image.w;
    ih = o->cur.image.h;
 
    if ((x < 0) || (y < 0) || (x >= w) || (y >= h)) return 0;
    if (!o->cur.has_alpha) return 1;
 
-   w = o->cur.fill.w;
-   h = o->cur.fill.h;
-   x -= o->cur.fill.x;
-   y -= o->cur.fill.y;
-   x %= w;
-   y %= h;
-   
-   if (x < 0) x += w;
-   if (y < 0) y += h;
-   
-   if (o->cur.border.fill != EVAS_BORDER_FILL_DEFAULT)
+   if (obj->cur.map)
      {
-        if ((x > o->cur.border.l) && (x < (w - o->cur.border.r)) &&
-            (y > o->cur.border.t) && (y < (h - o->cur.border.b)))
-          {
-             if (o->cur.border.fill == EVAS_BORDER_FILL_SOLID) return 1;
-             return 0;
-          }
-     }
-   if (x < o->cur.border.l)
-     {
-        if (y < o->cur.border.t)
-          {
-             // nothing. x & y stay as-is
-          }
-        else if (y > (h - o->cur.border.b))
-          {
-             y = ih - (h - y);
-          }
-        else if ((o->cur.border.t + o->cur.border.b) < ih)
-          {
-             y = ((y - o->cur.border.t) * ih) / (ih - o->cur.border.t - o->cur.border.b);
-          }
-        else
-          return 1;
-     }
-   else if (x > (w - o->cur.border.r))
-     {
-        x = iw - (w - x);
-        if (y < o->cur.border.t)
-          {
-             // nothing. x & y stay as-is
-          }
-        else if (y > (h - o->cur.border.b))
-          {
-             y = ih - (h - y);
-          }
-        else if ((o->cur.border.t + o->cur.border.b) < ih)
-          {
-             y = ((y - o->cur.border.t) * ih) / (ih - o->cur.border.t - o->cur.border.b);
-          }
-        else
-          return 1;
+        x = obj->cur.map->mx;
+        y = obj->cur.map->my;
      }
    else
      {
-        if ((o->cur.border.l + o->cur.border.r) < iw)
+        w = o->cur.fill.w;
+        h = o->cur.fill.h;
+        x -= o->cur.fill.x;
+        y -= o->cur.fill.y;
+        x %= w;
+        y %= h;
+        
+        if (x < 0) x += w;
+        if (y < 0) y += h;
+        
+        if (o->cur.border.fill != EVAS_BORDER_FILL_DEFAULT)
           {
-             x = ((x - o->cur.border.l) * iw) / (iw - o->cur.border.l - o->cur.border.r);
+             if ((x > o->cur.border.l) && (x < (w - o->cur.border.r)) &&
+                 (y > o->cur.border.t) && (y < (h - o->cur.border.b)))
+               {
+                  if (o->cur.border.fill == EVAS_BORDER_FILL_SOLID) return 1;
+                  return 0;
+               }
           }
-        else
-          x = o->cur.border.l;
-        if (y < o->cur.border.t)
+        if (x < o->cur.border.l)
           {
-             // nothing. x & y stay as-is
+             if (y < o->cur.border.t)
+               {
+                  // nothing. x & y stay as-is
+               }
+             else if (y > (h - o->cur.border.b))
+               {
+                  y = ih - (h - y);
+               }
+             else if ((o->cur.border.t + o->cur.border.b) < ih)
+               {
+                  y = ((y - o->cur.border.t) * ih) / (ih - o->cur.border.t - o->cur.border.b);
+               }
+             else
+               return 1;
           }
-        else if (y > (h - o->cur.border.b))
+        else if (x > (w - o->cur.border.r))
           {
-             y = ih - (h - y);
+             x = iw - (w - x);
+             if (y < o->cur.border.t)
+               {
+                  // nothing. x & y stay as-is
+               }
+             else if (y > (h - o->cur.border.b))
+               {
+                  y = ih - (h - y);
+               }
+             else if ((o->cur.border.t + o->cur.border.b) < ih)
+               {
+                  y = ((y - o->cur.border.t) * ih) / (ih - o->cur.border.t - o->cur.border.b);
+               }
+             else
+               return 1;
           }
-        else if ((o->cur.border.t + o->cur.border.b) < ih)
+        else
           {
-             y = ((y - o->cur.border.t) * ih) / (ih - o->cur.border.t - o->cur.border.b);
+             if ((o->cur.border.l + o->cur.border.r) < iw)
+               {
+                  x = ((x - o->cur.border.l) * iw) / (iw - o->cur.border.l - o->cur.border.r);
+               }
+             else
+               x = o->cur.border.l;
+             if (y < o->cur.border.t)
+               {
+                  // nothing. x & y stay as-is
+               }
+             else if (y > (h - o->cur.border.b))
+               {
+                  y = ih - (h - y);
+               }
+             else if ((o->cur.border.t + o->cur.border.b) < ih)
+               {
+                  y = ((y - o->cur.border.t) * ih) / (ih - o->cur.border.t - o->cur.border.b);
+               }
+             else
+               return 1;
           }
-        else
-          return 1;
      }
-
+   
    if (x < 0) x = 0;
    if (y < 0) y = 0;
    if (x >= iw) x = iw - 1;
    if (y >= ih) y = ih - 1;
    
    stride = o->cur.image.stride;
-
+   
    o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
 								  o->engine_data,
 								  0,
@@ -2805,13 +2989,14 @@ static int
 evas_object_image_has_opaque_rect(Evas_Object *obj)
 {
    Evas_Object_Image *o;
-   
+
    o = (Evas_Object_Image *)(obj->object_data);
+   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
    if (((o->cur.border.l | o->cur.border.r | o->cur.border.t | o->cur.border.b) != 0) &&
        (o->cur.border.fill == EVAS_BORDER_FILL_SOLID) &&
        (obj->cur.render_op == EVAS_RENDER_BLEND) &&
        (obj->cur.cache.clip.a == 255) &&
-       (o->cur.fill.x == 0) && 
+       (o->cur.fill.x == 0) &&
        (o->cur.fill.y == 0) &&
        (o->cur.fill.w == obj->cur.geometry.w) &&
        (o->cur.fill.h == obj->cur.geometry.h)
@@ -2823,7 +3008,7 @@ static int
 evas_object_image_get_opaque_rect(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
 {
    Evas_Object_Image *o;
-   
+
    o = (Evas_Object_Image *)(obj->object_data);
    *x = obj->cur.geometry.x + o->cur.border.l;
    *y = obj->cur.geometry.y + o->cur.border.t;
@@ -2834,6 +3019,12 @@ evas_object_image_get_opaque_rect(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y
    return 1;
 }
 
+static int
+evas_object_image_can_map(Evas_Object *obj)
+{
+   return 1;
+}
+
 static void *
 evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace)
 {
diff --git a/src/lib/canvas/evas_object_intercept.c b/src/lib/canvas/evas_object_intercept.c
index d724dd9..b1195de 100644
--- a/src/lib/canvas/evas_object_intercept.c
+++ b/src/lib/canvas/evas_object_intercept.c
@@ -240,9 +240,16 @@ evas_object_intercept_call_clip_unset(Evas_Object *obj)
 /* public calls */
 
 /**
- * To be documented.
+ * Set the callback function that intercepts a show event of a object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object pointer.
+ * @param func The given function to be the callback function.
+ * @param data The data passed to the callback fucntion.
+ *
+ * This function sets a callback function to intercepts a show event
+ * of a canvas object.
+ *
+ * @see evas_object_intercept_show_callback_del().
  *
  */
 EAPI void
@@ -261,9 +268,16 @@ evas_object_intercept_show_callback_add(Evas_Object *obj, void (*func) (void *da
 }
 
 /**
- * To be documented.
+ * Unset the callback function that intercepts a show event of a
+ * object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object pointer.
+ * @param func The given callback function.
+ *
+ * This function sets a callback function to intercepts a show event
+ * of a canvas object.
+ *
+ * @see evas_object_intercept_show_callback_add().
  *
  */
 EAPI void *
@@ -285,9 +299,16 @@ evas_object_intercept_show_callback_del(Evas_Object *obj, void (*func) (void *da
 }
 
 /**
- * To be documented.
+ * Set the callback function that intercepts a hide event of a object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object pointer.
+ * @param func The given function to be the callback function.
+ * @param data The data passed to the callback fucntion.
+ *
+ * This function sets a callback function to intercepts a hide event
+ * of a canvas object.
+ *
+ * @see evas_object_intercept_hide_callback_del().
  *
  */
 EAPI void
@@ -305,9 +326,16 @@ evas_object_intercept_hide_callback_add(Evas_Object *obj, void (*func) (void *da
 }
 
 /**
- * To be documented.
+ * Unset the callback function that intercepts a hide event of a
+ * object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object pointer.
+ * @param func The given callback function.
+ *
+ * This function sets a callback function to intercepts a hide event
+ * of a canvas object.
+ *
+ * @see evas_object_intercept_hide_callback_add().
  *
  */
 EAPI void *
@@ -329,9 +357,16 @@ evas_object_intercept_hide_callback_del(Evas_Object *obj, void (*func) (void *da
 }
 
 /**
- * To be documented.
+ * Set the callback function that intercepts a move event of a object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object pointer.
+ * @param func The given function to be the callback function.
+ * @param data The data passed to the callback fucntion.
+ *
+ * This function sets a callback function to intercepts a move event
+ * of a canvas object.
+ *
+ * @see evas_object_intercept_move_callback_del().
  *
  */
 EAPI void
@@ -349,9 +384,16 @@ evas_object_intercept_move_callback_add(Evas_Object *obj, void (*func) (void *da
 }
 
 /**
- * To be documented.
+ * Unset the callback function that intercepts a move event of a
+ * object.
  *
- * FIXME: To be fixed.
+ * @param obj The given canvas object pointer.
+ * @param func The given callback function.
+ *
+ * This function sets a callback function to intercepts a move event
+ * of a canvas object.
+ *
+ * @see evas_object_intercept_move_callback_add().
  *
  */
 EAPI void *
diff --git a/src/lib/canvas/evas_object_line.c b/src/lib/canvas/evas_object_line.c
index 6b210cb..138ad20 100644
--- a/src/lib/canvas/evas_object_line.c
+++ b/src/lib/canvas/evas_object_line.c
@@ -65,6 +65,7 @@ static const Evas_Object_Func object_func =
      evas_object_line_coords_recalc,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -155,8 +156,8 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
      }
    obj->cur.geometry.x = min_x;
    obj->cur.geometry.y = min_y;
-   obj->cur.geometry.w = max_x - min_x + 2.0;
-   obj->cur.geometry.h = max_y - min_y + 2.0;
+   obj->cur.geometry.w = max_x - min_x + 2;
+   obj->cur.geometry.h = max_y - min_y + 2;
 ////   obj->cur.cache.geometry.validity = 0;
    o->cur.x1 = x1 - min_x;
    o->cur.y1 = y1 - min_y;
@@ -203,18 +204,18 @@ evas_object_line_xy_get(const Evas_Object *obj, Evas_Coord *x1, Evas_Coord *y1,
    Evas_Object_Line *o;
 
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   if (x1) *x1 = 0.0;
-   if (y1) *y1 = 0.0;
-   if (x2) *x2 = 0.0;
-   if (y2) *y2 = 0.0;
+   if (x1) *x1 = 0;
+   if (y1) *y1 = 0;
+   if (x2) *x2 = 0;
+   if (y2) *y2 = 0;
    return;
    MAGIC_CHECK_END();
    o = (Evas_Object_Line *)(obj->object_data);
    MAGIC_CHECK(o, Evas_Object_Line, MAGIC_OBJ_LINE);
-   if (x1) *x1 = 0.0;
-   if (y1) *y1 = 0.0;
-   if (x2) *x2 = 0.0;
-   if (y2) *y2 = 0.0;
+   if (x1) *x1 = 0;
+   if (y1) *y1 = 0;
+   if (x2) *x2 = 0;
+   if (y2) *y2 = 0;
    return;
    MAGIC_CHECK_END();
    if (x1) *x1 = obj->cur.geometry.x + o->cur.x1;
@@ -260,10 +261,10 @@ evas_object_line_new(void)
    /* alloc obj private data */
    o = calloc(1, sizeof(Evas_Object_Line));
    o->magic = MAGIC_OBJ_LINE;
-   o->cur.x1 = 0.0;
-   o->cur.y1 = 0.0;
-   o->cur.x2 = 31.0;
-   o->cur.y2 = 31.0;
+   o->cur.x1 = 0;
+   o->cur.y1 = 0;
+   o->cur.x2 = 31;
+   o->cur.y2 = 31;
    o->prev = o->cur;
    return o;
 }
@@ -342,6 +343,12 @@ evas_object_line_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* it's not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
diff --git a/src/lib/canvas/evas_object_main.c b/src/lib/canvas/evas_object_main.c
index b21302f..9818370 100644
--- a/src/lib/canvas/evas_object_main.c
+++ b/src/lib/canvas/evas_object_main.c
@@ -26,11 +26,11 @@
 
 
 static Eina_Inlist *
-get_layer_objects_last(Evas_Layer *l)
+get_layer_objects(Evas_Layer *l)
 {
    if( !l || !l->objects ) return NULL;
 
-   return (EINA_INLIST_GET(l->objects))->last;
+   return (EINA_INLIST_GET(l->objects));
 }
 
 /* evas internal stuff */
@@ -82,14 +82,14 @@ void
 evas_object_change(Evas_Object *obj)
 {
    Eina_List *l;
-   Evas_Object *data;
+   Evas_Object *obj2;
 
    obj->layer->evas->changed = 1;
    if (obj->changed) return;
+//   obj->changed = 1;
    evas_render_object_recalc(obj);
    /* set changed flag on all objects this one clips too */
-   EINA_LIST_FOREACH(obj->clip.clipees, l, data)
-     evas_object_change(data);
+   EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) evas_object_change(obj2);
    if (obj->smart.parent) evas_object_change(obj->smart.parent);
 }
 
@@ -172,23 +172,35 @@ void
 evas_object_render_pre_prev_cur_add(Eina_Array *rects, Evas_Object *obj)
 {
    evas_add_rect(rects,
-		 obj->cur.geometry.x,
-		 obj->cur.geometry.y,
-		 obj->cur.geometry.w,
-		 obj->cur.geometry.h);
+                 obj->cur.cache.clip.x,
+                 obj->cur.cache.clip.y,
+                 obj->cur.cache.clip.w,
+                 obj->cur.cache.clip.h);
+   evas_add_rect(rects,
+                 obj->prev.cache.clip.x,
+                 obj->prev.cache.clip.y,
+                 obj->prev.cache.clip.w,
+                 obj->prev.cache.clip.h);
+/*        
+        evas_add_rect(rects,
+                      obj->cur.geometry.x,
+                      obj->cur.geometry.y,
+                      obj->cur.geometry.w,
+                      obj->cur.geometry.h);
 ////	    obj->cur.cache.geometry.x,
 ////	    obj->cur.cache.geometry.y,
 ////	    obj->cur.cache.geometry.w,
 ////	    obj->cur.cache.geometry.h);
-   evas_add_rect(rects,
-		 obj->prev.geometry.x,
-		 obj->prev.geometry.y,
-		 obj->prev.geometry.w,
-		 obj->prev.geometry.h);
+        evas_add_rect(rects,
+                      obj->prev.geometry.x,
+                      obj->prev.geometry.y,
+                      obj->prev.geometry.w,
+                      obj->prev.geometry.h);
 ////	    obj->prev.cache.geometry.x,
 ////	    obj->prev.cache.geometry.y,
 ////	    obj->prev.cache.geometry.w,
 ////	    obj->prev.cache.geometry.h);
+*/
 }
 
 void
@@ -196,11 +208,9 @@ evas_object_clip_changes_clean(Evas_Object *obj)
 {
    Eina_Rectangle *r;
 
-   EINA_LIST_FREE(obj->clip.changes, r)
-     eina_rectangle_free(r);
+   EINA_LIST_FREE(obj->clip.changes, r) eina_rectangle_free(r);
 }
 
-
 void
 evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v)
 {
@@ -383,6 +393,7 @@ evas_object_del(Evas_Object *obj)
    while (obj->clip.clipees) evas_object_clip_unset(obj->clip.clipees->data);
    if (obj->cur.clipper) evas_object_clip_unset(obj);
    if (obj->smart.smart) evas_object_smart_del(obj);
+   evas_object_map_set(obj, NULL);
    evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
    evas_object_smart_cleanup(obj);
    obj->delete_me = 1;
@@ -479,7 +490,7 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
    return;
    MAGIC_CHECK_END();
    if (obj->delete_me) return;
-   if (w < 0.0) w = 0.0; if (h < 0.0) h = 0.0;
+   if (w < 0) w = 0; if (h < 0) h = 0;
    if (evas_object_intercept_call_resize(obj, w, h)) return;
 #ifdef FORWARD_NOOP_RESIZES_TO_SMART_OBJS
    if (obj->smart.smart)
@@ -511,14 +522,18 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
 					      obj->layer->evas->pointer.x,
 					      obj->layer->evas->pointer.y, 1, 1);
      }
+
    obj->cur.geometry.w = w;
    obj->cur.geometry.h = h;
 ////   obj->cur.cache.geometry.validity = 0;
    evas_object_change(obj);
    evas_object_clip_dirty(obj);
-   evas_object_recalc_clippees(obj);
+   /* NB: evas_object_recalc_clippees was here previously ( < 08/07/2009) */
    if (obj->layer->evas->events_frozen <= 0)
      {
+        /* NB: If this creates glitches on screen then move to above position */
+        evas_object_recalc_clippees(obj);
+
 	//   if (obj->func->coords_recalc) obj->func->coords_recalc(obj);
 	if (!pass)
 	  {
@@ -583,7 +598,7 @@ static void
 _evas_object_size_hint_alloc(Evas_Object *obj)
 {
    if (obj->size_hints) return;
-   
+
    obj->size_hints = calloc(1, sizeof(Evas_Size_Hints));
    obj->size_hints->max.w = -1;
    obj->size_hints->max.h = -1;
@@ -1122,7 +1137,7 @@ evas_object_hide(Evas_Object *obj)
                   if (obj->mouse_in)
                     {
                        Evas_Event_Mouse_Out ev;
-                       
+
                        obj->mouse_in = 0;
                        ev.buttons = obj->layer->evas->pointer.button;
                        ev.output.x = obj->layer->evas->pointer.x;
@@ -1240,9 +1255,10 @@ evas_object_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
 }
 
 /**
- * Sets whether or not the given evas object is to be drawn anti_aliased.
+ * Sets whether or not the given evas object is to be drawn anti-aliased.
+ *
  * @param   obj The given evas object.
- * @param   anti_alias. 1 if the object is to be anti_aliased, 0 otherwise.
+ * @param   anti_alias 1 if the object is to be anti_aliased, 0 otherwise.
  * @ingroup Evas_Object_Group
  */
 EAPI void
@@ -1277,8 +1293,9 @@ evas_object_anti_alias_get(const Evas_Object *obj)
 
 /**
  * Sets the scaling factor for an evas object. Does not affect all objects.
+ *
  * @param   obj The given evas object.
- * @param   scale. The scaling factor. 1.0 == none.
+ * @param   scale The scaling factor. 1.0 == none.
  * @ingroup Evas_Object_Group
  */
 EAPI void
@@ -1300,6 +1317,7 @@ evas_object_scale_set(Evas_Object *obj, double scale)
  * Retrieves the scaling factor for the given evas object.
  * @param   obj The given evas object.
  * @return  The scaling factor.
+ *
  * @ingroup Evas_Object_Group
  */
 EAPI double
@@ -1314,8 +1332,10 @@ evas_object_scale_get(const Evas_Object *obj)
 
 /**
  * Sets the color_space to be used for linear interpolation of colors.
+ *
  * @param   obj The given evas object.
- * @param   color_space, one of EVAS_COLOR_SPACE_ARGB or EVAS_COLOR_SPACE_AHSV.
+ * @param   color_space one of EVAS_COLOR_SPACE_ARGB or EVAS_COLOR_SPACE_AHSV.
+ *
  * @ingroup Evas_Object_Group
  */
 EAPI void
@@ -1326,7 +1346,7 @@ evas_object_color_interpolation_set(Evas_Object *obj, int color_space)
    MAGIC_CHECK_END();
    if (obj->delete_me) return;
    if (obj->cur.interpolation_color_space == color_space)
-   	return;
+	return;
    obj->cur.interpolation_color_space = color_space;
    evas_object_change(obj);
 }
@@ -1362,7 +1382,7 @@ evas_object_render_op_set(Evas_Object *obj, Evas_Render_Op render_op)
    MAGIC_CHECK_END();
    if (obj->delete_me) return;
    if ((Evas_Render_Op)obj->cur.render_op == render_op)
-   	return;
+	return;
    obj->cur.render_op = render_op;
    evas_object_change(obj);
 }
@@ -1396,7 +1416,7 @@ evas_object_evas_get(const Evas_Object *obj)
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
    return NULL;
    MAGIC_CHECK_END();
-   if (obj->delete_me) return 0;
+   if (obj->delete_me) return NULL;
    return obj->layer->evas;
 }
 
@@ -1406,9 +1426,14 @@ evas_object_evas_get(const Evas_Object *obj)
  */
 
 /**
- * To be documented.
- *
- * FIXME: To be fixed.
+ * Retrieves the top object at the given position (x,y)
+ * @param   e The given evas object.
+ * @param   x The horizontal coordinate
+ * @param   y The vertical coordinate
+ * @param   include_pass_events_objects Boolean Flag to include or not
+ * pass events objects
+ * @param   include_hidden_objects Boolean Flag to include or not hidden objects
+ * @return  The evas object that is over all others objects at the given position.
  */
 EAPI Evas_Object *
 evas_object_top_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
@@ -1427,7 +1452,7 @@ evas_object_top_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool i
      {
 	Evas_Object *obj;
 
-	EINA_INLIST_REVERSE_FOREACH(get_layer_objects_last(lay), obj)
+	EINA_INLIST_REVERSE_FOREACH(get_layer_objects(lay), obj)
 	  {
 	     if (obj->delete_me) continue;
 	     if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
@@ -1442,9 +1467,10 @@ evas_object_top_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool i
 }
 
 /**
- * To be documented.
- *
- * FIXME: To be fixed.
+ * Retrieves the top object at mouse pointer position
+ * @param   e The given evas object.
+ * @return The evas object that is over all others objects at the
+ * pointer position.
  */
 EAPI Evas_Object *
 evas_object_top_at_pointer_get(const Evas *e)
@@ -1454,9 +1480,16 @@ evas_object_top_at_pointer_get(const Evas *e)
 }
 
 /**
- * To be documented.
+ * Retrieves the top object in the given rectangle region
+ * @param   e The given evas object.
+ * @param   x The horizontal coordinate.
+ * @param   y The vertical coordinate.
+ * @param   w The width size.
+ * @param   h The height size.
+ * @param   include_pass_events_objects Boolean Flag to include or not pass events objects
+ * @param   include_hidden_objects Boolean Flag to include or not hidden objects
+ * @return  The evas object that is over all others objects at the pointer position.
  *
- * FIXME: To be fixed.
  */
 EAPI Evas_Object *
 evas_object_top_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
@@ -1481,7 +1514,7 @@ evas_object_top_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas
      {
 	Evas_Object *obj;
 
-	EINA_INLIST_REVERSE_FOREACH(get_layer_objects_last(lay), obj)
+	EINA_INLIST_REVERSE_FOREACH(get_layer_objects(lay), obj)
 	  {
 	     if (obj->delete_me) continue;
 	     if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
@@ -1496,9 +1529,15 @@ evas_object_top_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas
 }
 
 /**
- * To be documented.
+ * Retrieves the objects at the given position
+ * @param   e The given evas object.
+ * @param   x The horizontal coordinate.
+ * @param   y The vertical coordinate.
+ * @param include_pass_events_objects Boolean Flag to include or not
+ * pass events objects
+ * @param   include_hidden_objects Boolean Flag to include or not hidden objects
+ * @return  The list of evas objects at the pointer position.
  *
- * FIXME: To be fixed.
  */
 EAPI Eina_List *
 evas_objects_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
@@ -1518,7 +1557,7 @@ evas_objects_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool incl
      {
 	Evas_Object *obj;
 
-	EINA_INLIST_REVERSE_FOREACH(get_layer_objects_last(lay), obj)
+	EINA_INLIST_REVERSE_FOREACH(get_layer_objects(lay), obj)
 	  {
 	     if (obj->delete_me) continue;
 	     if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
@@ -1537,6 +1576,18 @@ evas_objects_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool incl
  *
  * FIXME: To be fixed.
  */
+/**
+ * Retrieves the objects in the given rectangle region
+ * @param   e The given evas object.
+ * @param   x The horizontal coordinate.
+ * @param   y The vertical coordinate.
+ * @param   w The width size.
+ * @param   h The height size.
+ * @param   include_pass_events_objects Boolean Flag to include or not pass events objects
+ * @param   include_hidden_objects Boolean Flag to include or not hidden objects
+ * @return  The list of evas object in the rectangle region.
+ *
+ */
 EAPI Eina_List *
 evas_objects_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
 {
@@ -1561,7 +1612,7 @@ evas_objects_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Co
      {
 	Evas_Object *obj;
 
-	EINA_INLIST_REVERSE_FOREACH(get_layer_objects_last(lay), obj)
+	EINA_INLIST_REVERSE_FOREACH(get_layer_objects(lay), obj)
 	  {
 	     if (obj->delete_me) continue;
 	     if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
diff --git a/src/lib/canvas/evas_object_polygon.c b/src/lib/canvas/evas_object_polygon.c
index 92754a9..698316c 100644
--- a/src/lib/canvas/evas_object_polygon.c
+++ b/src/lib/canvas/evas_object_polygon.c
@@ -12,7 +12,7 @@ struct _Evas_Object_Polygon
 {
    DATA32            magic;
    Eina_List        *points;
-   
+
    void             *engine_data;
 
    char              changed : 1;
@@ -62,6 +62,7 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -137,23 +138,23 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
      {
 	obj->cur.geometry.x = p->x;
 	obj->cur.geometry.y = p->y;
-	obj->cur.geometry.w = 2.0;
-	obj->cur.geometry.h = 2.0;
+	obj->cur.geometry.w = 2;
+	obj->cur.geometry.h = 2;
      }
    else
      {
 	if (x < obj->cur.geometry.x) min_x = x;
 	else min_x = obj->cur.geometry.x;
-	if (x > (obj->cur.geometry.x + obj->cur.geometry.w - 2.0)) max_x = x;
-	else max_x = obj->cur.geometry.x + obj->cur.geometry.w - 2.0;
+	if (x > (obj->cur.geometry.x + obj->cur.geometry.w - 2)) max_x = x;
+	else max_x = obj->cur.geometry.x + obj->cur.geometry.w - 2;
 	if (y < obj->cur.geometry.y) min_y = y;
 	else min_y = obj->cur.geometry.y;
-	if (y > (obj->cur.geometry.y + obj->cur.geometry.h - 2.0)) max_y = y;
-	else max_y = obj->cur.geometry.y + obj->cur.geometry.h - 2.0;
+	if (y > (obj->cur.geometry.y + obj->cur.geometry.h - 2)) max_y = y;
+	else max_y = obj->cur.geometry.y + obj->cur.geometry.h - 2;
 	obj->cur.geometry.x = min_x;
 	obj->cur.geometry.y = min_y;
-	obj->cur.geometry.w = max_x - min_x + 2.0;
-	obj->cur.geometry.h = max_y - min_y + 2.0;
+	obj->cur.geometry.w = max_x - min_x + 2;
+	obj->cur.geometry.h = max_y - min_y + 2;
      }
    o->points = eina_list_append(o->points, p);
 
@@ -241,10 +242,10 @@ evas_object_polygon_init(Evas_Object *obj)
    obj->cur.color.g = 255;
    obj->cur.color.b = 255;
    obj->cur.color.a = 255;
-   obj->cur.geometry.x = 0.0;
-   obj->cur.geometry.y = 0.0;
-   obj->cur.geometry.w = 0.0;
-   obj->cur.geometry.h = 0.0;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
    obj->cur.layer = 0;
    /* set up object-specific settings */
    obj->prev = obj->cur;
@@ -357,6 +358,12 @@ evas_object_polygon_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* it's not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
diff --git a/src/lib/canvas/evas_object_rectangle.c b/src/lib/canvas/evas_object_rectangle.c
index 749a6ef..9e2dd42 100644
--- a/src/lib/canvas/evas_object_rectangle.c
+++ b/src/lib/canvas/evas_object_rectangle.c
@@ -59,6 +59,7 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -206,6 +207,12 @@ evas_object_rectangle_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* it's not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
@@ -261,7 +268,7 @@ evas_object_rectangle_render_pre(Evas_Object *obj)
    /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
    /* area so if there were updates for it they get wiped. don't do it if we */
    /* arent fully opaque and we are visible */
- /*   
+ /*
    if (evas_object_is_visible(obj) &&
        evas_object_is_opaque(obj) &&
        (!obj->clip.clipees))
@@ -293,6 +300,7 @@ evas_object_rectangle_is_opaque(Evas_Object *obj)
 {
    /* this returns 1 if the internal object data implies that the object is */
    /* currently fully opaque over the entire rectangle it occupies */
+   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
    if (obj->cur.render_op == EVAS_RENDER_COPY)
 	return 1;
    if (obj->cur.render_op != EVAS_RENDER_BLEND)
diff --git a/src/lib/canvas/evas_object_smart.c b/src/lib/canvas/evas_object_smart.c
index 836c08e..185bb97 100644
--- a/src/lib/canvas/evas_object_smart.c
+++ b/src/lib/canvas/evas_object_smart.c
@@ -59,6 +59,7 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
+     NULL,
      NULL
 };
 
@@ -101,7 +102,7 @@ evas_object_smart_data_set(Evas_Object *obj, void *data)
  * Retrieve user data stored on a smart object.
  *
  * @param obj The smart object
- * @return A pointer to data stored using evas_object_smart_data_set(), or 
+ * @return A pointer to data stored using evas_object_smart_data_set(), or
  *         NULL if none has been set.
  * @ingroup Evas_Smart_Object_Group
  */
@@ -148,7 +149,7 @@ evas_object_smart_smart_get(const Evas_Object *obj)
  * @param obj The member object
  * @param smart_obj The smart object
  *
- * Members will automatically be stacked and layered with the smart object. 
+ * Members will automatically be stacked and layered with the smart object.
  * The various stacking function will operate on members relative to the
  * other members instead of the entire canvas.
  *
@@ -174,26 +175,32 @@ evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj)
 
    if (obj->delete_me)
      {
-	printf("EVAS ERROR: Adding deleted object %p to smart obj %p\n", obj, smart_obj);
+        CRIT("Adding deleted object %p to smart obj %p", obj, smart_obj);
 	abort();
 	return;
      }
    if (smart_obj->delete_me)
      {
-	printf("EVAS ERROR: Adding object %p to deleted smart obj %p\n", obj, smart_obj);
+	CRIT("Adding object %p to deleted smart obj %p", obj, smart_obj);
+	abort();
+	return;
+     }
+   if (!smart_obj->layer)
+     {
+	CRIT("No evas surface associated with smart object (%p)", smart_obj);
 	abort();
 	return;
      }
    if (obj->layer && smart_obj->layer
        && obj->layer->evas != smart_obj->layer->evas)
      {
-	printf("EVAS ERROR: Adding object %p from Evas (%p) from another Evas (%p)\n", obj, obj->layer->evas, smart_obj->layer->evas);
+	CRIT("Adding object %p from Evas (%p) from another Evas (%p)", obj, obj->layer->evas, smart_obj->layer->evas);
 	abort();
 	return;
      }
 
    if (obj->smart.parent == smart_obj) return;
-   
+
    if (obj->smart.parent) evas_object_smart_member_del(obj);
 
    evas_object_release(obj, 1);
@@ -259,7 +266,7 @@ evas_object_smart_parent_get(const Evas_Object *obj)
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
    return NULL;
    MAGIC_CHECK_END();
-   
+
    return obj->smart.parent;
 }
 
@@ -275,7 +282,7 @@ evas_object_smart_members_get(const Evas_Object *obj)
    Evas_Object_Smart *o;
    Eina_List *members;
    Eina_Inlist *member;
-   
+
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
    return NULL;
    MAGIC_CHECK_END();
@@ -287,7 +294,7 @@ evas_object_smart_members_get(const Evas_Object *obj)
    members = NULL;
    for (member = o->contained; member; member = member->next)
       members = eina_list_append(members, member);
-   
+
    return members;
 }
 
@@ -426,6 +433,7 @@ evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event
    Evas_Object_Smart *o;
    Eina_List *l;
    Evas_Smart_Callback *cb;
+   const char *strshare;
 
    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
    return;
@@ -437,16 +445,18 @@ evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event
    if (!event) return;
    if (obj->delete_me) return;
    o->walking_list++;
+   strshare = eina_stringshare_add(event);
    EINA_LIST_FOREACH(o->callbacks, l, cb)
      {
 	if (!cb->delete_me)
 	  {
-	     if (!strcmp(cb->event, event))
+	     if (cb->event == strshare)
 	       cb->func(cb->func_data, obj, event_info);
 	  }
 	if (obj->delete_me)
 	  break;
      }
+   eina_stringshare_del(strshare);
    o->walking_list--;
    evas_object_smart_callbacks_clear(obj);
 }
@@ -535,7 +545,6 @@ evas_object_smart_need_recalculate_get(const Evas_Object *obj)
  * Call user provided calculate() and unset need_calculate.
  *
  * @param obj the smart object
- * @return if flag is set or not.
  *
  * @ingroup Evas_Smart_Object_Group
  */
@@ -559,6 +568,22 @@ evas_object_smart_calculate(Evas_Object *obj)
 }
 
 /**
+ * Call user provided calculate() and unset need_calculate on all objects.
+ *
+ * @param e The canvas to calculate all objects in
+ *
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void
+evas_smart_objects_calculate(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   evas_call_smarts_calculate(e);
+}
+
+/**
  * Call calculate() on all smart objects that need_recalculate.
  *
  * @internal
@@ -692,7 +717,7 @@ evas_object_smart_member_cache_invalidate(Evas_Object *obj)
    for (l = o->contained; l; l = l->next)
      {
 	Evas_Object *obj2;
-	
+
 	obj2 = (Evas_Object *)l;
 	evas_object_smart_member_cache_invalidate(obj2);
      }
@@ -794,6 +819,13 @@ static void
 evas_object_smart_render_pre(Evas_Object *obj)
 {
    if (obj->pre_render_done) return;
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
+   done:
    obj->pre_render_done = 1;
 }
 
diff --git a/src/lib/canvas/evas_object_smart_clipped.c b/src/lib/canvas/evas_object_smart_clipped.c
index 4eae6f5..8ece21a 100644
--- a/src/lib/canvas/evas_object_smart_clipped.c
+++ b/src/lib/canvas/evas_object_smart_clipped.c
@@ -72,8 +72,8 @@ evas_object_smart_clipped_smart_add(Evas_Object *obj)
    evas_object_smart_member_add(clipper, obj);
    cso->clipper = clipper;
    evas_object_color_set(cso->clipper, 255, 255, 255, 255);
-   evas_object_move(cso->clipper, -10000, -10000);
-   evas_object_resize(cso->clipper, 20000, 20000);
+   evas_object_move(cso->clipper, -100000, -100000);
+   evas_object_resize(cso->clipper, 200000, 200000);
    evas_object_pass_events_set(cso->clipper, 1);
    evas_object_hide(cso->clipper); /* show when have something clipped to it */
 
@@ -83,10 +83,11 @@ evas_object_smart_clipped_smart_add(Evas_Object *obj)
 static void
 evas_object_smart_clipped_smart_del(Evas_Object *obj)
 {
-   CSO_DATA_GET_OR_RETURN(obj, cso);
    Eina_List *lst, *itr;
    Evas_Object *data;
 
+   CSO_DATA_GET_OR_RETURN(obj, cso);
+
    if (cso->clipper)
      {
 	Evas_Object *clipper = cso->clipper;
diff --git a/src/lib/canvas/evas_object_table.c b/src/lib/canvas/evas_object_table.c
index cc78e64..44a8ee7 100644
--- a/src/lib/canvas/evas_object_table.c
+++ b/src/lib/canvas/evas_object_table.c
@@ -22,6 +22,8 @@ struct _Evas_Object_Table_Option
    } pad;
    Eina_Bool expand_h : 1; /* XXX required? */
    Eina_Bool expand_v : 1; /* XXX required? */
+   Eina_Bool fill_h : 1;
+   Eina_Bool fill_v : 1;
 };
 
 struct _Evas_Object_Table_Cache
@@ -91,9 +93,8 @@ struct _Evas_Object_Table_Accessor
   EVAS_OBJECT_TABLE_DATA_GET(o, ptr);					\
   if (!ptr)								\
     {									\
-       fprintf(stderr, "CRITICAL: no widget data for object %p (%s)\n",	\
-	       o, evas_object_type_get(o));				\
-       fflush(stderr);							\
+      CRIT("no widget data for object %p (%s)",		\
+	   o, evas_object_type_get(o));					\
        abort();								\
        return;								\
 }
@@ -102,9 +103,8 @@ struct _Evas_Object_Table_Accessor
   EVAS_OBJECT_TABLE_DATA_GET(o, ptr);					\
   if (!ptr)								\
     {									\
-       fprintf(stderr, "CRITICAL: no widget data for object %p (%s)\n",	\
+       CRIT("No widget data for object %p (%s)",	                \
 	       o, evas_object_type_get(o));				\
-       fflush(stderr);							\
        abort();								\
        return val;							\
     }
@@ -170,9 +170,8 @@ _evas_object_table_cache_alloc(int cols, int rows)
    cache = malloc(size);
    if (!cache)
      {
-	fprintf(stderr,
-		"ERROR: could not allocate table cache %dx%d (%d bytes): %s\n",
-		cols, rows, size, strerror(errno));
+	ERR("Could not allocate table cache %dx%d (%d bytes): %s",
+	      cols, rows, size, strerror(errno));
 	return NULL;
      }
 
@@ -279,16 +278,20 @@ _evas_object_table_calculate_cell(const Evas_Object_Table_Option *opt, Evas_Coor
      cw = opt->min.w;
    else if ((opt->max.w > -1) && (*w > opt->max.w))
      cw = opt->max.w;
-   else
+   else if (opt->fill_h)
      cw = *w;
+   else
+     cw = opt->min.w;
 
    *h -= opt->pad.t + opt->pad.b;
    if (*h < opt->min.h)
      ch = opt->min.h;
    else if ((opt->max.h > -1) && (*h > opt->max.h))
      ch = opt->max.h;
-   else
+   else if (opt->fill_v)
      ch = *h;
+   else
+     ch = opt->min.h;
 
    *x += opt->pad.l;
    if (cw != *w)
@@ -310,22 +313,21 @@ _evas_object_table_calculate_cell(const Evas_Object_Table_Option *opt, Evas_Coor
 /* { */
 /*    if (*align < 0.0) */
 /*      { */
-/* 	/\* assume expand and align to the center. */
-/* 	 * this is compatible with evas_object_box behavior and is the */
-/* 	 * same as weight > 0.0. */
-/* 	 *\/ */
-/* 	*align = 0.5; */
-/* 	return 0; */
+/*	/\* assume expand and align to the center. */
+/*	 * this is compatible with evas_object_box behavior and is the */
+/*	 * same as weight > 0.0. */
+/*	 *\/ */
+/*	*align = 0.5; */
+/*	return 0; */
 /*      } */
 /*    else if (min < 1) */
 /*      { */
-/* 	fprintf(stderr, */
-/* 		"WARNING: child %p [%s, %s] has no minimum width " */
-/* 		"and no %s expand (weight is not > 0.0). " */
-/* 		"Assuming weight > 0.0\n", */
-/* 		child, evas_object_type_get(child), evas_object_name_get(child), */
-/* 		axis_name); */
-/* 	return 0; */
+/*	WRN("Child %p [%s, %s] has no minimum width " */
+/*		"and no %s expand (weight is not > 0.0). " */
+/*		"Assuming weight > 0.0\n", */
+/*		child, evas_object_type_get(child), evas_object_name_get(child), */
+/*		axis_name); */
+/*	return 0; */
 /*      } */
 
 /*    return 1; */
@@ -373,13 +375,13 @@ _evas_object_table_calculate_hints_homogeneous(Evas_Object *o, Evas_Object_Table
 	     opt->expand_h = 1;
 	     expand_h = 1;
 	  }
-/* 	else if ((priv->homogeneous == EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE) && */
-/* 		 (!_evas_object_table_check_hints_homogeneous_table */
-/* 		  (child, &opt->align.h, opt->min.w, "horizontal"))) */
-/* 	  { */
-/* 	     opt->expand_h = 1; */
-/* 	     expand_h = 1; */
-/* 	  } */
+/*	else if ((priv->homogeneous == EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE) && */
+/*		 (!_evas_object_table_check_hints_homogeneous_table */
+/*		  (child, &opt->align.h, opt->min.w, "horizontal"))) */
+/*	  { */
+/*	     opt->expand_h = 1; */
+/*	     expand_h = 1; */
+/*	  } */
 
 
 	opt->expand_v = 0;
@@ -390,18 +392,26 @@ _evas_object_table_calculate_hints_homogeneous(Evas_Object *o, Evas_Object_Table
 	     opt->expand_v = 1;
 	     expand_v = 1;
 	  }
-/* 	else if ((priv->homogeneous == EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE) && */
-/* 		 (!_evas_object_table_check_hints_homogeneous_table */
-/* 		  (child, &opt->align.v, opt->min.h, "vertical"))) */
-/* 	  { */
-/* 	     opt->expand_v = 1; */
-/* 	     expand_v = 1; */
-/* 	  } */
-
+/*	else if ((priv->homogeneous == EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE) && */
+/*		 (!_evas_object_table_check_hints_homogeneous_table */
+/*		  (child, &opt->align.v, opt->min.h, "vertical"))) */
+/*	  { */
+/*	     opt->expand_v = 1; */
+/*	     expand_v = 1; */
+/*	  } */
+
+	opt->fill_h = 0;
 	if (opt->align.h < 0.0)
-	  opt->align.h = 0.5;
+	  {
+	     opt->align.h = 0.5;
+	     opt->fill_h = 1;
+	  }
+	opt->fill_v = 0;
 	if (opt->align.v < 0.0)
-	  opt->align.v = 0.5;
+	  {
+	     opt->align.v = 0.5;
+	     opt->fill_v = 1;
+	  }
 
 	/* greatest mininum values, with paddings */
 	if (minw < cell_minw)
@@ -419,16 +429,14 @@ _evas_object_table_calculate_hints_homogeneous(Evas_Object *o, Evas_Object_Table
      {
 	if (o_minw < 1)
 	  {
-	     fputs("ERROR: homogeneous table based on item size but no "
-		   "horizontal mininum size specified! Using expand.\n",
-		   stderr);
+	     ERR("homogeneous table based on item size but no "
+		   "horizontal mininum size specified! Using expand.");
 	     expand_h = 1;
 	  }
 	if (o_minh < 1)
 	  {
-	     fputs("ERROR: homogeneous table based on item size but no "
-		   "vertical mininum size specified! Using expand.\n",
-		   stderr);
+	     ERR("homogeneous table based on item size but no "
+		   "vertical mininum size specified! Using expand.");
 	     expand_v = 1;
 	  }
      }
@@ -629,10 +637,18 @@ _evas_object_table_calculate_hints_regular(Evas_Object *o, Evas_Object_Table_Dat
 	     ((opt->max.h > -1) && (opt->min.h < opt->max.h))))
 	  opt->expand_v = 1;
 
+	opt->fill_h = 0;
 	if (opt->align.h < 0.0)
-	  opt->align.h = 0.5;
+	  {
+	     opt->align.h = 0.5;
+	     opt->fill_h = 1;
+	  }
+	opt->fill_v = 0;
 	if (opt->align.v < 0.0)
-	  opt->align.v = 0.5;
+	  {
+	     opt->align.v = 0.5;
+	     opt->fill_v = 1;
+	  }
 
 	if (opt->expand_h)
 	  memset(c->expands.h + opt->col, 1, opt->colspan);
@@ -730,9 +746,8 @@ _evas_object_table_calculate_layout_regular(Evas_Object *o, Evas_Object_Table_Da
 	cols = malloc(size);
 	if (!cols)
 	  {
-	     fprintf(stderr,
-		     "ERROR: could not allocate temp columns (%d bytes): %s\n",
-		     size, strerror(errno));
+	     ERR("Could not allocate temp columns (%d bytes): %s",
+		   size, strerror(errno));
 	     return;
 	  }
 	memcpy(cols, c->sizes.h, size);
@@ -754,8 +769,7 @@ _evas_object_table_calculate_layout_regular(Evas_Object *o, Evas_Object_Table_Da
 	rows = malloc(size);
 	if (!rows)
 	  {
-	     fprintf(stderr,
-		     "ERROR: could not allocate temp rows (%d bytes): %s\n",
+	     ERR("could not allocate temp rows (%d bytes): %s",
 		     size, strerror(errno));
 	     goto end;
 	  }
@@ -812,7 +826,7 @@ _evas_object_table_smart_add(Evas_Object *o)
 	priv = calloc(1, sizeof(*priv));
 	if (!priv)
 	  {
-	     fputs("ERROR: could not allocate object private data.\n", stderr);
+	     ERR("could not allocate object private data.");
 	     return;
 	  }
 	evas_object_smart_data_set(o, priv);
@@ -870,8 +884,8 @@ _evas_object_table_smart_calculate(Evas_Object *o)
 
    if ((priv->size.cols < 1) || (priv->size.rows < 1))
      {
-	fprintf(stderr, "DBG: nothing to do: cols=%d, rows=%d\n",
-		priv->size.cols, priv->size.rows);
+	DBG("Nothing to do: cols=%d, rows=%d",
+	      priv->size.cols, priv->size.rows);
 	return;
      }
 
@@ -1084,8 +1098,10 @@ evas_object_table_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas
 }
 
 /**
- * Add a new child to table.
+ * Add a new child to a table object.
  *
+ * @param o The given table object.
+ * @param child The child object to add.
  * @param col relative-horizontal position to place child.
  * @param row relative-vertical position to place child.
  * @param colspan how many relative-horizontal position to use for this child.
@@ -1096,32 +1112,32 @@ evas_object_table_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas
 Eina_Bool
 evas_object_table_pack(Evas_Object *o, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan)
 {
-   EVAS_OBJECT_TABLE_DATA_GET_OR_RETURN_VAL(o, priv, 0);
    Evas_Object_Table_Option *opt;
 
+   EVAS_OBJECT_TABLE_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+
    if (rowspan < 1)
      {
-	fputs("ERROR: rowspan < 1\n", stderr);
+	ERR("rowspan < 1");
 	return EINA_FALSE;
      }
    if (colspan < 1)
      {
-	fputs("ERROR: colspan < 1\n", stderr);
+	ERR("colspan < 1");
 	return EINA_FALSE;
      }
 
    opt = _evas_object_table_option_get(child);
    if (opt)
      {
-	fputs("ERROR: cannot add object that is already part of a table!\n",
-	      stderr);
+	ERR("cannot add object that is already part of a table!");
 	return EINA_FALSE;
      }
 
    opt = malloc(sizeof(*opt));
    if (!opt)
      {
-	fputs("ERROR: could not allocate table option data.\n", stderr);
+	ERR("could not allocate table option data.");
 	return EINA_FALSE;
      }
 
@@ -1219,19 +1235,20 @@ _evas_object_table_remove_opt(Evas_Object_Table_Data *priv, Evas_Object_Table_Op
 Eina_Bool
 evas_object_table_unpack(Evas_Object *o, Evas_Object *child)
 {
-   EVAS_OBJECT_TABLE_DATA_GET_OR_RETURN_VAL(o, priv, 0);
    Evas_Object_Table_Option *opt;
 
+   EVAS_OBJECT_TABLE_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+
    if (o != evas_object_smart_parent_get(child))
      {
-	fputs("ERROR: cannot unpack child from incorrect table!\n", stderr);
+	ERR("cannot unpack child from incorrect table!");
 	return EINA_FALSE;
      }
 
    opt = _evas_object_table_option_del(child);
    if (!opt)
      {
-	fputs("ERROR: cannot unpack child with no packing option!\n", stderr);
+	ERR("cannot unpack child with no packing option!");
 	return EINA_FALSE;
      }
 
@@ -1246,8 +1263,9 @@ evas_object_table_unpack(Evas_Object *o, Evas_Object *child)
 }
 
 /**
- * Faster way to remove all child objects.
+ * Faster way to remove all child objects from a table object.
  *
+ * @param o The given table object.
  * @param clear if true, it will delete just removed children.
  */
 void
diff --git a/src/lib/canvas/evas_object_text.c b/src/lib/canvas/evas_object_text.c
index a9acd9a..9042060 100644
--- a/src/lib/canvas/evas_object_text.c
+++ b/src/lib/canvas/evas_object_text.c
@@ -31,7 +31,7 @@ struct _Evas_Object_Text
    float                max_ascent, max_descent;
 
    void                *engine_data;
-   
+
    char                 changed : 1;
 };
 
@@ -135,7 +135,7 @@ evas_object_text_font_source_set(Evas_Object *obj, const char *font_source)
    MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
    return;
    MAGIC_CHECK_END();
-   
+
    if ((o->cur.source) && (font_source) &&
        (!strcmp(o->cur.source, font_source)))
      return;
@@ -188,7 +188,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
    MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
    return;
    MAGIC_CHECK_END();
-   
+
    if ((o->cur.font) && (font) && (!strcmp(o->cur.font, font)))
      {
 	same_font = 1;
@@ -216,7 +216,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
 	o->prev.font = NULL;
      }
    o->cur.size = size;
-   o->engine_data = evas_font_load(obj->layer->evas, o->cur.font, o->cur.source, 
+   o->engine_data = evas_font_load(obj->layer->evas, o->cur.font, o->cur.source,
 				   (int)(((double)o->cur.size) * obj->cur.scale));
    evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
    if ((o->engine_data) && (o->cur.text))
@@ -284,7 +284,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
  * created with evas_object_text_add() to be queried. Be aware that the font
  * name string is still owned by Evas and should NOT have free() called on
  * it by the caller of the function.
- * 
+ *
  * @param obj	The evas text object to query for font information.
  * @param font	A pointer to the location to store the font name in (may be NULL).
  * @param size	A pointer to the location to store the font size in (may be NULL).
@@ -614,6 +614,40 @@ evas_object_text_char_pos_get(const Evas_Object *obj, int pos, Evas_Coord *cx, E
    return ret;
 }
 
+
+/**
+ * Returns the logical position of the last char in the text
+ * up to the pos given. this is NOT the position of the last char
+ * because of the possibilty of RTL in the text.
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_object_text_last_up_to_pos(const Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Text *o;
+   int inset;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return -1;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return -1;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return -1;
+   if (!o->cur.text) return -1;
+   inset =
+     ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text);
+   return ENFN->font_last_up_to_pos(ENDT,
+				       o->engine_data,
+				       o->cur.text,
+				       x + inset,
+				       y - o->max_ascent);	
+}
+
 /**
  * To be documented.
  *
@@ -933,8 +967,9 @@ evas_object_text_outline_color_get(const Evas_Object *obj, int *r, int *g, int *
 }
 
 /**
- * Gets the text style pad.
+ * Gets the text style pad of a text object.
  *
+ * @param obj The given text object.
  * @param l The left pad (or NULL).
  * @param r The right pad (or NULL).
  * @param t The top pad (or NULL).
@@ -1020,7 +1055,7 @@ evas_font_path_prepend(Evas *e, const char *path)
    MAGIC_CHECK(e, Evas, MAGIC_EVAS);
    return;
    MAGIC_CHECK_END();
-   
+
    if (!path) return;
    e->font_path = eina_list_prepend(e->font_path, eina_stringshare_add(path));
 }
@@ -1165,7 +1200,7 @@ evas_font_available_list(const Evas *e)
 
    return evas_font_dir_available_list(e);
 }
-   
+
 /**
  * To be documented.
  *
@@ -1174,12 +1209,12 @@ evas_font_available_list(const Evas *e)
  */
 EAPI void
 evas_font_available_list_free(Evas *e, Eina_List *available)
-{ 
+{
    MAGIC_CHECK(e, Evas, MAGIC_EVAS);
    return;
    MAGIC_CHECK_END();
 
-   return evas_font_dir_available_list_free(available); 
+   evas_font_dir_available_list_free(available);
 }
 
 /**
@@ -1316,7 +1351,7 @@ evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int
 	if (sr < 4) sr = 4;
 	if (sb < 4) sb = 4;
      }
-   
+
    if (l) *l = sl;
    if (r) *r = sr;
    if (t) *t = st;
@@ -1334,10 +1369,10 @@ evas_object_text_init(Evas_Object *obj)
    obj->cur.color.g = 255;
    obj->cur.color.b = 255;
    obj->cur.color.a = 255;
-   obj->cur.geometry.x = 0.0;
-   obj->cur.geometry.y = 0.0;
-   obj->cur.geometry.w = 0.0;
-   obj->cur.geometry.h = 0.0;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
    obj->cur.layer = 0;
    /* set up object-specific settings */
    obj->prev = obj->cur;
@@ -1432,13 +1467,13 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur
 
 #define COLOR_SET_AMUL(object, sub, col, amul) \
         if (obj->cur.clipper) \
-  	    ENFN->context_color_set(output, context, \
+	    ENFN->context_color_set(output, context, \
 				(((int)object->sub.col.r) * ((int)obj->cur.clipper->cur.cache.clip.r) * (amul)) / 65025, \
 				(((int)object->sub.col.g) * ((int)obj->cur.clipper->cur.cache.clip.g) * (amul)) / 65025, \
 				(((int)object->sub.col.b) * ((int)obj->cur.clipper->cur.cache.clip.b) * (amul)) / 65025, \
 				(((int)object->sub.col.a) * ((int)obj->cur.clipper->cur.cache.clip.a) * (amul)) / 65025); \
         else \
-  	    ENFN->context_color_set(output, context, \
+	    ENFN->context_color_set(output, context, \
 				(((int)object->sub.col.r) * (amul)) / 255, \
 				(((int)object->sub.col.g) * (amul)) / 255, \
 				(((int)object->sub.col.b) * (amul)) / 255, \
@@ -1602,6 +1637,12 @@ evas_object_text_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* its not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
@@ -1743,7 +1784,7 @@ evas_object_text_scale_update(Evas_Object *obj)
    Evas_Object_Text *o;
    int size;
    const char *font;
-   
+
    o = (Evas_Object_Text *)(obj->object_data);
    font = eina_stringshare_add(o->cur.font);
    size = o->cur.size;
@@ -1760,7 +1801,7 @@ _evas_object_text_rehint(Evas_Object *obj)
 {
    Evas_Object_Text *o;
    int is, was;
-   
+
    o = (Evas_Object_Text *)(obj->object_data);
    if (!o->engine_data) return;
    evas_font_load_hinting_set(obj->layer->evas, o->engine_data,
@@ -1774,7 +1815,7 @@ _evas_object_text_rehint(Evas_Object *obj)
      {
 	int w, h;
 	int l = 0, r = 0, t = 0, b = 0;
-	
+
 	ENFN->font_string_size_get(ENDT,
 				   o->engine_data,
 				   o->cur.text,
@@ -1787,7 +1828,7 @@ _evas_object_text_rehint(Evas_Object *obj)
    else
      {
 	int t = 0, b = 0;
-	
+
 	evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
 	obj->cur.geometry.w = 0;
 	obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
diff --git a/src/lib/canvas/evas_object_textblock.c b/src/lib/canvas/evas_object_textblock.c
index 07ae750..10148aa 100644
--- a/src/lib/canvas/evas_object_textblock.c
+++ b/src/lib/canvas/evas_object_textblock.c
@@ -93,6 +93,8 @@ struct _Evas_Object_Textblock_Format
       int               l, r;
    } margin;
    int                  tabstops;
+   int                  linesize;
+   double               linerelsize;
    unsigned char        style;
    unsigned char        wrap_word : 1;
    unsigned char        wrap_char : 1;
@@ -183,6 +185,7 @@ static const Evas_Object_Func object_func =
      evas_object_textblock_coords_recalc,
      evas_object_textblock_scale_update,
      NULL,
+     NULL,
      NULL
 };
 
@@ -231,7 +234,7 @@ _style_clear(Evas_Textblock_Style *ts)
    while (ts->tags)
      {
 	Evas_Object_Style_Tag *tag;
-	
+
 	tag = (Evas_Object_Style_Tag *)ts->tags;
 	ts->tags = (Evas_Object_Style_Tag *)eina_inlist_remove(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag));
 	free(tag->tag);
@@ -418,7 +421,7 @@ _nodes_clear(const Evas_Object *obj)
    while (o->nodes)
      {
 	Evas_Object_Textblock_Node *n;
-	
+
 	n = (Evas_Object_Textblock_Node *)o->nodes;
 	o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes), EINA_INLIST_GET(n));
 	if (n->text) free(n->text);
@@ -444,7 +447,7 @@ _line_free(const Evas_Object *obj, Evas_Object_Textblock_Line *ln)
    while (ln->items)
      {
 	Evas_Object_Textblock_Item *it;
-	
+
 	it = (Evas_Object_Textblock_Item *)ln->items;
 	ln->items = (Evas_Object_Textblock_Item *)eina_inlist_remove(EINA_INLIST_GET(ln->items), EINA_INLIST_GET(ln->items));
 	if (it->text) free(it->text);
@@ -454,7 +457,7 @@ _line_free(const Evas_Object *obj, Evas_Object_Textblock_Line *ln)
    while (ln->format_items)
      {
 	Evas_Object_Textblock_Format_Item *fi;
-	
+
 	fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
 	ln->format_items = (Evas_Object_Textblock_Format_Item *)eina_inlist_remove(EINA_INLIST_GET(ln->format_items),
 										   EINA_INLIST_GET(ln->format_items));
@@ -470,7 +473,7 @@ _lines_clear(const Evas_Object *obj, Evas_Object_Textblock_Line *lines)
    while (lines)
      {
 	Evas_Object_Textblock_Line *ln;
-	
+
 	ln = (Evas_Object_Textblock_Line *)lines;
 	lines = (Evas_Object_Textblock_Line *)eina_inlist_remove(EINA_INLIST_GET(lines), EINA_INLIST_GET(ln));
 	_line_free(obj, ln);
@@ -485,7 +488,7 @@ _nodes_adjacent_merge(const Evas_Object *obj, Evas_Object_Textblock_Node *n1)
    Eina_List *l;
    Evas_Textblock_Cursor *data;
    int plen;
-   
+
    if (n1->type != NODE_TEXT) return;
    o = (Evas_Object_Textblock *)(obj->object_data);
    n0 = (Evas_Object_Textblock_Node *)(EINA_INLIST_GET(n1))->prev;
@@ -799,7 +802,7 @@ _append_text_run(Evas_Object_Textblock *o, char *s, char *p)
    if ((s) && (p > s))
      {
 	char *ts;
-	
+
 	ts = alloca(p - s + 1);
 	strncpy(ts, s, p - s);
 	ts[p - s] = 0;
@@ -814,7 +817,7 @@ _prepend_text_run(Evas_Object_Textblock *o, char *s, char *p)
    if ((s) && (p > s))
      {
 	char *ts;
-	
+
 	ts = alloca(p - s + 1);
 	strncpy(ts, s, p - s);
 	ts[p - s] = 0;
@@ -837,7 +840,7 @@ static void
 _format_color_parse(const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a)
 {
    int slen;
-   
+
    slen = strlen(str);
    *r = *g = *b = *a = 0;
 
@@ -904,6 +907,8 @@ static const char *strikethroughstr;
 static const char *backingstr;
 static const char *stylestr;
 static const char *tabstopsstr;
+static const char *linesizestr;
+static const char *linerelsizestr;
 
 static void
 _format_command_init(void)
@@ -931,6 +936,8 @@ _format_command_init(void)
    backingstr = eina_stringshare_add("backing");
    stylestr = eina_stringshare_add("style");
    tabstopsstr = eina_stringshare_add("tabstops");
+   linesizestr = eina_stringshare_add("linesize");
+   linerelsizestr = eina_stringshare_add("linerelsize");
 }
 
 static void
@@ -959,6 +966,8 @@ _format_command_shutdown(void)
    eina_stringshare_del(backingstr);
    eina_stringshare_del(stylestr);
    eina_stringshare_del(tabstopsstr);
+   eina_stringshare_del(linesizestr);
+   eina_stringshare_del(linerelsizestr);
 }
 
 static void
@@ -983,7 +992,7 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
    char *tmp_param;
 
    tmp_param = alloca(strlen(param) + 1);
-   
+
    _format_clean_param(tmp_param, param);
    if (cmd == fontstr)
      {
@@ -1011,7 +1020,7 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
    else if (cmd == font_sizestr)
      {
 	int v;
-	
+
 	v = atoi(tmp_param);
 	if (v != fmt->font.size)
 	  {
@@ -1074,7 +1083,7 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
 	else if (strchr(tmp_param, '%'))
 	  {
 	     char *ts, *p;
-	     
+
 	     ts = alloca(strlen(tmp_param) + 1);
 	     strcpy(ts, tmp_param);
 	     p = strchr(ts, '%');
@@ -1101,7 +1110,7 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
 	else if (strchr(tmp_param, '%'))
 	  {
 	     char *ts, *p;
-	     
+
 	     ts = alloca(strlen(tmp_param) + 1);
 	     strcpy(ts, tmp_param);
 	     p = strchr(ts, '%');
@@ -1219,7 +1228,27 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
 	fmt->tabstops = atoi(tmp_param);
 	if (fmt->tabstops < 1) fmt->tabstops = 1;
      }
-   
+   else if (cmd == linesizestr)
+     {
+        fmt->linesize = atoi(tmp_param);
+        fmt->linerelsize = 0.0;
+     }
+   else if (cmd == linerelsizestr)
+     {
+        if (strchr(tmp_param, '%'))
+          {
+	     char *ts, *p;
+
+	     ts = alloca(strlen(tmp_param) + 1);
+	     strcpy(ts, tmp_param);
+	     p = strchr(ts, '%');
+	     *p = 0;
+	     fmt->linerelsize = ((double)atoi(ts)) / 100.0;
+             fmt->linesize = 0;
+	     if (fmt->linerelsize < 0.0) fmt->linerelsize = 0.0;
+          }
+     }
+
    if (new_font)
      {
 	void *of;
@@ -1235,9 +1264,9 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
 	  }
 	else if (fmt->font.name)
 	  buf = strdup(fmt->font.name);
-	
-	fmt->font.font = evas_font_load(obj->layer->evas, 
-					buf, fmt->font.source, 
+
+	fmt->font.font = evas_font_load(obj->layer->evas,
+					buf, fmt->font.source,
 					(int)(((double)fmt->font.size) * obj->cur.scale));
 	if (buf) free(buf);
 	if (of) evas_font_free(obj->layer->evas, of);
@@ -1256,7 +1285,7 @@ _format_param_parse(char *item, const char **key, const char **val)
 {
    char *p;
    const char *k, *v;
-   
+
    p = strchr(item, '=');
    *p = '\0';
    k = eina_stringshare_add(item);
@@ -1272,7 +1301,7 @@ _format_parse(char **s)
 {
    char *p, *item;
    char *s1 = NULL, *s2 = NULL;
-   
+
    p = *s;
    if (*p == 0) return NULL;
    for (;;)
@@ -1308,7 +1337,7 @@ _format_fill(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, char *str)
 {
    char *s;
    char *item;
-   
+
    s = str;
 
    /* get rid of anything +s or -s off the start of the string */
@@ -1321,7 +1350,7 @@ _format_fill(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, char *str)
 	if (_format_is_param(item))
 	  {
 	     const char *key = NULL, *val = NULL;
-	     
+
 	     _format_param_parse(item, &key, &val);
 	     _format_command(obj, fmt, key, val);
 	     eina_stringshare_del(key);
@@ -1340,7 +1369,7 @@ _format_dup(Evas_Object *obj, Evas_Object_Textblock_Format *fmt)
 {
    Evas_Object_Textblock_Format *fmt2;
    char *buf = NULL;
-   
+
    fmt2 = calloc(1, sizeof(Evas_Object_Textblock_Format));
    memcpy(fmt2, fmt, sizeof(Evas_Object_Textblock_Format));
    fmt2->ref = 1;
@@ -1357,7 +1386,7 @@ _format_dup(Evas_Object *obj, Evas_Object_Textblock_Format *fmt)
      }
    else if (fmt2->font.name)
      buf = strdup(fmt2->font.name);
-   fmt2->font.font = evas_font_load(obj->layer->evas, 
+   fmt2->font.font = evas_font_load(obj->layer->evas,
 				    buf, fmt2->font.source,
 				    (int)(((double)fmt2->font.size) * obj->cur.scale));
    if (buf) free(buf);
@@ -1379,12 +1408,12 @@ struct _Ctxt
 {
    Evas_Object *obj;
    Evas_Object_Textblock *o;
-   
+
    Evas_Object_Textblock_Line *lines;
    Evas_Object_Textblock_Line *ln;
 
    Eina_List *format_stack;
-   
+
    int x, y;
    int w, h;
    int wmax, hmax;
@@ -1405,6 +1434,19 @@ _layout_format_ascent_descent_adjust(Ctxt *c, Evas_Object_Textblock_Format *fmt)
      {
 	ascent = c->ENFN->font_max_ascent_get(c->ENDT, fmt->font.font);
 	descent = c->ENFN->font_max_descent_get(c->ENDT, fmt->font.font);
+        if (fmt->linesize > 0)
+          {
+             if ((ascent + descent) < fmt->linesize)
+               {
+                  ascent = ((fmt->linesize * ascent) / (ascent + descent));
+                  descent = fmt->linesize - ascent;
+               }
+          }
+        else if (fmt->linerelsize > 0.0)
+          {
+             descent = ((ascent + descent) * fmt->linerelsize) - (ascent * fmt->linerelsize);
+             ascent = ascent * fmt->linerelsize;
+          }
 	if (c->maxascent < ascent) c->maxascent = ascent;
 	if (c->maxdescent < descent) c->maxdescent = descent;
      }
@@ -1441,6 +1483,8 @@ _layout_format_push(Ctxt *c, Evas_Object_Textblock_Format *fmt)
 	fmt->valign = -1.0;
 	fmt->style = EVAS_TEXT_STYLE_PLAIN;
 	fmt->tabstops = 32;
+        fmt->linesize = 0;
+        fmt->linerelsize = 0.0;
      }
    return fmt;
 }
@@ -1461,7 +1505,7 @@ static void
 _layout_format_value_handle(Ctxt *c, Evas_Object_Textblock_Format *fmt, char *item)
 {
    const char *key = NULL, *val = NULL;
-   
+
    _format_param_parse(item, &key, &val);
    if ((key) && (val)) _format_command(c->obj, fmt, key, val);
    if (key) eina_stringshare_del(key);
@@ -1507,7 +1551,7 @@ _layout_line_advance(Ctxt *c, Evas_Object_Textblock_Format *fmt)
      {
 	c->ln->x = c->marginl + c->o->style_pad.l +
 	  ((c->w - c->ln->w -
-	    c->o->style_pad.l - c->o->style_pad.r - 
+	    c->o->style_pad.l - c->o->style_pad.r -
 	    c->marginl - c->marginr) * c->align);
 	if ((c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
 	  c->wmax = c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
@@ -1525,7 +1569,7 @@ static Evas_Object_Textblock_Item *
 _layout_item_new(Ctxt *c __UNUSED__, Evas_Object_Textblock_Format *fmt, char *str)
 {
    Evas_Object_Textblock_Item *it;
-   
+
    it = calloc(1, sizeof(Evas_Object_Textblock_Item));
    it->format = fmt;
    it->format->ref++;
@@ -1536,17 +1580,16 @@ _layout_item_new(Ctxt *c __UNUSED__, Evas_Object_Textblock_Format *fmt, char *st
 static int
 _layout_text_cutoff_get(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Item *it)
 {
-   int cx, cy, cw, ch;
 
    if (fmt->font.font)
-     return c->ENFN->font_char_at_coords_get(c->ENDT, fmt->font.font, it->text,
-					     c->w - 
-					     c->o->style_pad.l - 
-					     c->o->style_pad.r - 
-					     c->marginl - 
+     return c->ENFN->font_last_up_to_pos(c->ENDT, fmt->font.font, it->text,
+					     c->w -
+					     c->o->style_pad.l -
+					     c->o->style_pad.r -
+					     c->marginl -
 					     c->marginr -
 					     c->x,
-					     0, &cx, &cy, &cw, &ch);
+					     0);
    return -1;
 }
 
@@ -1554,7 +1597,7 @@ static void
 _layout_item_text_cutoff(Ctxt *c __UNUSED__, Evas_Object_Textblock_Item *it, int cut)
 {
    char *ts;
-   
+
    ts = it->text;
    ts[cut] = 0;
    it->text = strdup(ts);
@@ -1565,7 +1608,7 @@ static int
 _layout_word_start(char *str, int start)
 {
    int p, tp, chr = 0;
-   
+
    p = start;
    chr = evas_common_font_utf8_get_next((unsigned char *)(str), &p);
    if (_is_white(chr))
@@ -1586,7 +1629,6 @@ _layout_word_start(char *str, int start)
 	if (_is_white(chr)) break;
 	tp = p;
      }
-   p = tp;
    if (p < 0) p = 0;
    if ((p >= 0) && (_is_white(chr)))
      evas_common_font_utf8_get_next((unsigned char *)(str), &p);
@@ -1597,7 +1639,7 @@ static int
 _layout_ends_with_space(char *str)
 {
    int p, chr;
-   
+
    p = evas_common_font_utf8_get_last((unsigned char *)(str), strlen(str));
    if (p < 0) return 0;
    chr = evas_common_font_utf8_get_next((unsigned char *)(str), &p);
@@ -1608,7 +1650,7 @@ static int
 _layout_strip_trailing_whitespace(Ctxt *c, Evas_Object_Textblock_Format *fmt __UNUSED__, Evas_Object_Textblock_Item *it)
 {
    int p, tp, chr, adv, tw, th;
-   
+
    p = evas_common_font_utf8_get_last((unsigned char *)(it->text), strlen(it->text));
    tp = p;
    if (p >= 0)
@@ -1651,7 +1693,7 @@ static char *
 _layout_next_char_jump(Ctxt *c, Evas_Object_Textblock_Item *it, char *str)
 {
    int index;
-   
+
    index = 0;
    evas_common_font_utf8_get_next((unsigned char *)str, &index);
    if (index >= 0)
@@ -1679,7 +1721,7 @@ static int
 _layout_word_end(char *str, int p)
 {
    int ch, tp;
-   
+
    tp = p;
    ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
    while ((!_is_white(ch)) && (tp >= 0) && (ch != 0))
@@ -1695,7 +1737,7 @@ static int
 _layout_word_next(char *str, int p)
 {
    int ch, tp;
-   
+
    tp = p;
    ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
    while ((!_is_white(ch)) && (tp >= 0) && (ch != 0))
@@ -1828,7 +1870,7 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
 	/* if this is the first line item and it starts with spaces - remove them */
 	wrap = 0;
 	white_stripped = 0;
-/*	
+/*
 	if (!c->ln->items)
 	  {
 	     twrap = wrap;
@@ -1847,10 +1889,10 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
 	tw = th = 0;
 	if (fmt->font.font)
 	  c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, it->text, &tw, &th);
-	if ((c->w >= 0) && 
-	    ((fmt->wrap_word) || (fmt->wrap_char)) && 
-	    ((c->x + tw) > 
-	     (c->w - c->o->style_pad.l - c->o->style_pad.r - 
+	if ((c->w >= 0) &&
+	    ((fmt->wrap_word) || (fmt->wrap_char)) &&
+	    ((c->x + tw) >
+	     (c->w - c->o->style_pad.l - c->o->style_pad.r -
 	      c->marginl - c->marginr)))
 	  {
 	     wrap = _layout_text_cutoff_get(c, fmt, it);
@@ -1873,7 +1915,10 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
 			      {
 				 _layout_item_text_cutoff(c, it, wrap);
 				 twrap = wrap;
-				 ch = evas_common_font_utf8_get_next((unsigned char *)str, &twrap);
+				 /*we don't want to move next, that's why it's
+				  * commented out.
+				  * ch = evas_common_font_utf8_get_next((unsigned char *)str, &twrap);
+				  */
 				 str = str + twrap;
 			      }
 			    /* intersects a word */
@@ -1910,7 +1955,7 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
 			    /* wrap now is the index of the word START */
 			    index = wrap;
 			    ch = evas_common_font_utf8_get_next((unsigned char *)str, &index);
-			    if (!_is_white(ch) && 
+			    if (!_is_white(ch) &&
 				(!_layout_last_item_ends_in_whitespace(c)))
 			      {
 				 _layout_walk_back_to_item_word_redo(c, it);
@@ -1956,7 +2001,7 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
 		       if (wrap < 0) wrap = 0;
 		       index = wrap;
 		       ch = evas_common_font_utf8_get_next((unsigned char *)str, &index);
-		       if (!_is_white(ch) && 
+		       if (!_is_white(ch) &&
 			   (!_layout_last_item_ends_in_whitespace(c)))
 			 {
 			    _layout_walk_back_to_item_word_redo(c, it);
@@ -2034,7 +2079,7 @@ static Evas_Object_Textblock_Format_Item *
 _layout_format_item_add(Ctxt *c, Evas_Object_Textblock_Node *n, char *item)
 {
    Evas_Object_Textblock_Format_Item *fi;
-   
+
    fi = calloc(1, sizeof(Evas_Object_Textblock_Format_Item));
    fi->item = eina_stringshare_add(item);
    fi->source_node = n;
@@ -2095,7 +2140,7 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
 	  {
 	     char *s;
 	     char *item;
-	     
+
 	     s = n->text;
 	     if (s[0] == '+')
 	       {
@@ -2118,21 +2163,21 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
 		       if ((!strcmp(item, "\n")) || (!strcmp(item, "\\n")))
 			 {
 			    Evas_Object_Textblock_Format_Item *fi;
-			    
+
 			    fi = _layout_format_item_add(c, n, item);
 			    fi->x = c->x;
 			    fi->w = 0;
 			    _layout_line_advance(c, fmt);
 			 }
 		       else if ((!strcmp(item, "\t")) || (!strcmp(item, "\\t")))
-			 { 
+			 {
 			    Evas_Object_Textblock_Format_Item *fi;
 			    int x2;
-			    
+
 			    x2 = (fmt->tabstops * ((c->x + fmt->tabstops) / fmt->tabstops));
 			    if (x2 >
-				(c->w - c->o->style_pad.l - 
-				 c->o->style_pad.r - 
+				(c->w - c->o->style_pad.l -
+				 c->o->style_pad.r -
 				 c->marginl - c->marginr))
 			      {
 				 _layout_line_advance(c, fmt);
@@ -2141,7 +2186,7 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
 			    if (c->ln->items)
 			      {
 				 Evas_Object_Textblock_Item *it;
-				 
+
 				 it = (Evas_Object_Textblock_Item *)(EINA_INLIST_GET(c->ln->items))->last;
 				 _layout_strip_trailing_whitespace(c, fmt, it);
 			      }
@@ -2200,14 +2245,14 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
 	removes = eina_list_remove_list(removes, removes);
 	_line_free(obj, ln);
      }
-     
+
    if (w_ret) *w_ret = c->wmax;
    if (h_ret) *h_ret = c->hmax;
    if ((o->style_pad.l != style_pad_l) || (o->style_pad.r != style_pad_r) ||
        (o->style_pad.t != style_pad_t) || (o->style_pad.b != style_pad_b))
      {
 	Evas_Object_Textblock_Line *lines;
-	
+
 	lines = c->lines;
 	c->lines = NULL;
 	o->style_pad.l = style_pad_l;
@@ -2234,13 +2279,13 @@ _relayout(const Evas_Object *obj)
 {
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Line *lines;
-   
+
    o = (Evas_Object_Textblock *)(obj->object_data);
    lines = o->lines;
    o->lines = NULL;
    o->formatted.valid = 0;
    o->native.valid = 0;
-   _layout(obj, 
+   _layout(obj,
 	   0,
 	   obj->cur.geometry.w, obj->cur.geometry.h,
 	   &o->formatted.w, &o->formatted.h);
@@ -2264,7 +2309,7 @@ _find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node *n, in
    if ((eol) && (n->type == NODE_TEXT))
      {
         int pos2 = pos;
-        
+
         evas_common_font_utf8_get_prev(n->text, &pos2);
         if (pos2 < pos) pos = pos2;
      }
@@ -2273,7 +2318,7 @@ _find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node *n, in
 	Evas_Object_Textblock_Format_Item *fit;
 	Evas_Object_Textblock_Item *it;
         Evas_Object_Textblock_Line *lnn;
-        
+
         lnn = (Evas_Object_Textblock_Line *)(((Eina_Inlist *)ln)->next);
 	EINA_INLIST_FOREACH(ln->items, it)
 	  {
@@ -2281,10 +2326,10 @@ _find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node *n, in
 	       {
                   Evas_Object_Textblock_Item *itn;
                   int p;
-                  
+
                   itn = (Evas_Object_Textblock_Item *)(((Eina_Inlist *)it)->next);
                   p = (int)(it->source_pos + strlen(it->text));
-		  if ((p > pos) || 
+		  if ((p > pos) ||
                       ((p == pos) && (!lnn) &&
                        ((!itn)  |
                         ((itn) && (itn->source_node != n)))))
@@ -2336,7 +2381,7 @@ _find_layout_line_num(const Evas_Object *obj, int line)
 {
    Evas_Object_Textblock_Line *ln;
    Evas_Object_Textblock *o;
-   
+
    o = (Evas_Object_Textblock *)(obj->object_data);
    EINA_INLIST_FOREACH(o->lines, ln)
      {
@@ -2372,15 +2417,14 @@ EAPI Evas_Textblock_Style *
 evas_textblock_style_new(void)
 {
    Evas_Textblock_Style *ts;
-   
+
    ts = calloc(1, sizeof(Evas_Textblock_Style));
    return ts;
 }
 
 /**
  * Destroys a textblock style.
- * @param The textblock style to free.
- * @return Returns no value.
+ * @param ts The textblock style to free.
  */
 EAPI void
 evas_textblock_style_free(Evas_Textblock_Style *ts)
@@ -2421,16 +2465,16 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
 	     evas_object_textblock_text_markup_get(obj);
 	  }
      }
-   
+
    _style_clear(ts);
    if (text) ts->style_text = strdup(text);
-   
+
    if (ts->style_text)
      {
 	// format MUST be KEY='VALUE'[KEY='VALUE']...
 	char *p;
 	char *key_start, *key_stop, *val_start, *val_stop;
-	
+
 	key_start = key_stop = val_start = val_stop = NULL;
 	p = ts->style_text;
 	while (*p)
@@ -2459,7 +2503,7 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
 	       {
 		  char *tags, *replaces;
 		  Evas_Object_Style_Tag *tag;
-		  
+
 		  tags = malloc(key_stop - key_start + 1);
 		  if (tags)
 		    {
@@ -2467,7 +2511,7 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
 		       strncpy(tags, key_start, key_stop - key_start);
 		       tags[key_stop - key_start] = 0;
 		    }
-		  
+
 		  replaces = malloc(val_stop - val_start + 1);
 		  if (replaces)
 		    {
@@ -2508,16 +2552,16 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
 	     p++;
 	  }
      }
-   
+
    EINA_LIST_FOREACH(ts->objects, l, obj)
      {
 	Evas_Object_Textblock *o;
-	
+
 	o = (Evas_Object_Textblock *)(obj->object_data);
 	if (o->markup_text)
 	  {
 	     char *m;
-	     
+
 	     m = strdup(o->markup_text);
 	     if (m)
 	       {
@@ -2565,7 +2609,7 @@ evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
    if (o->style)
      {
 	Evas_Textblock_Style *old_ts;
-	
+
 	old_ts = o->style;
 	old_ts->objects = eina_list_remove(old_ts->objects, obj);
 	if ((old_ts->delete_me) && (!old_ts->objects))
@@ -2597,9 +2641,10 @@ evas_object_textblock_style_get(const Evas_Object *obj)
 }
 
 /**
- * to be documented.
- * @param obj  to be documented.
- * @return to be documented.
+ * @brief Change the charset in use inside the given textblock object.
+ *
+ * @param obj The given textblock object.
+ * @param ch The charset name.
  */
 EAPI void
 evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch)
@@ -2651,7 +2696,7 @@ _is_eq_and_advance(const char *s, const char *s_end,
 	     return 0;
 	  }
      }
-   
+
    if (*p_m < m_end)
      _advance_after_end_of_string(p_m);
 
@@ -2670,9 +2715,11 @@ _escaped_char_match(const char *s, int *adv)
      {
 	const char *escape;
 	int match;
-	
+
 	escape = map_itr;
 	_advance_after_end_of_string(&map_itr);
+	if (map_itr >= map_end) break;
+
 	mc = map_itr;
 	sc = s;
 	match = 1;
@@ -2713,7 +2760,7 @@ _escaped_char_get(const char *s, const char *s_end)
 
 /**
  * to be documented.
- * @param obj  to be documented.
+ * @param escape to be documented.
  * @return to be documented.
  */
 EAPI const char *
@@ -2725,7 +2772,8 @@ evas_textblock_escape_string_get(const char *escape)
 
 /**
  * to be documented.
- * @param obj  to be documented.
+ * @param escape_start to be documented.
+ * @param escape_end to be documented.
  * @return to be documented.
  */
 EAPI const char *
@@ -2736,7 +2784,8 @@ evas_textblock_escape_string_range_get(const char *escape_start, const char *esc
 
 /**
  * to be documented.
- * @param obj  to be documented.
+ * @param string to be documented.
+ * @param len_ret to be documented.
  * @return to be documented.
  */
 EAPI const char *
@@ -2751,7 +2800,7 @@ _append_escaped_char(Evas_Textblock_Cursor *cur, const char *s,
 		     const char *s_end)
 {
    const char *escape;
-   
+
    escape = _escaped_char_get(s, s_end);
    if (escape)
      evas_textblock_cursor_text_append(cur, escape);
@@ -2762,7 +2811,7 @@ _prepend_escaped_char(Evas_Textblock_Cursor *cur, const char *s,
 		     const char *s_end)
 {
    const char *escape;
-   
+
    escape = _escaped_char_get(s, s_end);
    if (escape)
      evas_textblock_cursor_text_prepend(cur, escape);
@@ -2770,7 +2819,7 @@ _prepend_escaped_char(Evas_Textblock_Cursor *cur, const char *s,
 
 /**
  * to be documented.
- * @param ts  to be documented.
+ * @param obj  to be documented.
  * @param text to be documented.
  * @return Return no value.
  */
@@ -2801,20 +2850,20 @@ evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text)
      {
 	char *s, *p;
 	char *tag_start, *tag_end, *esc_start, *esc_end;
-	
+
 	tag_start = tag_end = esc_start = esc_end = NULL;
 	p = (char *)text;
 	s = p;
 	for (;;)
 	  {
-	     if ((*p == 0) || 
-		 (tag_end) || (esc_end) || 
+	     if ((*p == 0) ||
+		 (tag_end) || (esc_end) ||
 		 (tag_start) || (esc_start))
 	       {
 		  if (tag_end)
 		    {
 		       char *ttag, *match;
-		       
+
 		       ttag = malloc(tag_end - tag_start);
 		       if (ttag)
 			 {
@@ -2826,7 +2875,7 @@ evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text)
 			    else
 			      {
 				 char *ttag2;
-				 
+
 				 ttag2 = malloc(strlen(ttag) + 2 + 1);
 				 if (ttag2)
 				   {
@@ -2912,7 +2961,7 @@ evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text)
 
 /**
  * to be documented.
- * @param ts  to be documented.
+ * @param cur  to be documented.
  * @param text to be documented.
  * @return Return no value.
  */
@@ -2920,7 +2969,7 @@ EAPI void
 evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char *text)
 {
    Evas_Object_Textblock *o;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    if (!cur->node) return;
@@ -2938,20 +2987,20 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char
      {
 	char *s, *p;
 	char *tag_start, *tag_end, *esc_start, *esc_end;
-	
+
 	tag_start = tag_end = esc_start = esc_end = NULL;
 	p = (char *)text;
 	s = p;
 	for (;;)
 	  {
-	     if ((*p == 0) || 
-		 (tag_end) || (esc_end) || 
+	     if ((*p == 0) ||
+		 (tag_end) || (esc_end) ||
 		 (tag_start) || (esc_start))
 	       {
 		  if (tag_end)
 		    {
 		       char *ttag, *match;
-		       
+
 		       ttag = malloc(tag_end - tag_start);
 		       if (ttag)
 			 {
@@ -2963,7 +3012,7 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char
 			    else
 			      {
 				 char *ttag2;
-				 
+
 				 ttag2 = malloc(strlen(ttag) + 2 + 1);
 				 if (ttag2)
 				   {
@@ -3050,7 +3099,7 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj)
    Evas_Object_Textblock_Node *n;
    char *txt = NULL;
    int txt_len = 0, txt_alloc = 0;
-   
+
    TB_HEAD_RETURN(NULL);
    if (o->markup_text) return(o->markup_text);
    EINA_INLIST_FOREACH(o->nodes, n)
@@ -3069,8 +3118,8 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj)
 		  char *s;
 		  int push = 0;
 		  int pop = 0;
-		  
-		  // FIXME: need to escape	
+
+		  // FIXME: need to escape
 		  s = n->text;
 		  if (*s == '+') push = 1;
 		  if (*s == '-') pop = 1;
@@ -3084,12 +3133,12 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj)
 	else if ((n->type == NODE_TEXT) && (n->text))
 	  {
 	     const char *p = n->text;
-	     
+
 	     while (*p)
 	       {
 		  const char *escape;
 		  int adv;
-		  
+
 		  escape = _escaped_char_match(p, &adv);
 		  if (escape)
 		    {
@@ -3099,7 +3148,7 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj)
 		  else
 		    {
 		       char str[2];
-		       
+
 		       str[0] = *p;
 		       str[1] = 0;
 		       txt = _strbuf_append(txt, str, &txt_len, &txt_alloc);
@@ -3134,7 +3183,7 @@ EAPI Evas_Textblock_Cursor *
 evas_object_textblock_cursor_new(Evas_Object *obj)
 {
    Evas_Textblock_Cursor *cur;
-   
+
    TB_HEAD_RETURN(NULL);
    cur = calloc(1, sizeof(Evas_Textblock_Cursor));
    cur->obj = obj;
@@ -3144,7 +3193,7 @@ evas_object_textblock_cursor_new(Evas_Object *obj)
    o->cursors = eina_list_append(o->cursors, cur);
    return cur;
 }
-  
+
 /**
  * to be documented.
  * @param cur  to be documented.
@@ -3171,7 +3220,7 @@ EAPI void
 evas_textblock_cursor_node_first(Evas_Textblock_Cursor *cur)
 {
    Evas_Object_Textblock *o;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    cur->node = o->nodes;
@@ -3188,7 +3237,7 @@ EAPI void
 evas_textblock_cursor_node_last(Evas_Textblock_Cursor *cur)
 {
    Evas_Object_Textblock *o;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    if (o->nodes)
@@ -3254,8 +3303,7 @@ EAPI Eina_Bool
 evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur)
 {
    int index, ch;
-   int at_start_of_line = 0;
-   
+
    if (!cur) return EINA_FALSE;
    if (!cur->node) return EINA_FALSE;
    if (cur->node->type == NODE_FORMAT) return EINA_FALSE;
@@ -3267,12 +3315,12 @@ evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur)
         Evas_Object_Textblock_Line *ln = NULL;
         Evas_Object_Textblock_Item *it = NULL;
         int pos;
-        
+
 	_find_layout_item_line_match(cur->obj, cur->node, cur->pos, cur->eol, &ln, &it);
         pos = cur->pos - it->source_pos;
         if (pos <= 0) index -= pos;
      }
-   
+
    ch = evas_common_font_utf8_get_next((unsigned char *)(cur->node->text), &index);
    if ((ch == 0) || (index < 0)) return EINA_FALSE;
    if (cur->node->text[index] == 0) return EINA_FALSE;
@@ -3292,22 +3340,22 @@ evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur)
    int index;
    int at_end_of_line = 0;
    int at_start_of_line = 0;
-   
+
    if (!cur) return EINA_FALSE;
    if (!cur->node) return EINA_FALSE;
    if (cur->node->type == NODE_FORMAT) return EINA_FALSE;
    if (!cur->node->text) return EINA_FALSE;
    index = cur->pos;
    if (index == 0) return EINA_FALSE;
-   
+
    // XXX: FIXME: determine at_end_of_line and at_start_of_line
-  
+
    if (cur->node->type == NODE_TEXT)
      {
         Evas_Object_Textblock_Line *ln = NULL;
         Evas_Object_Textblock_Item *it = NULL;
         int pos;
-        
+
 	_find_layout_item_line_match(cur->obj, cur->node, cur->pos, cur->eol, &ln, &it);
         if (it)
           {
@@ -3316,13 +3364,13 @@ evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur)
              if (it->text)
                {
                   int plast;
-                  
+
                   plast = evas_common_font_utf8_get_last(it->text, strlen(it->text));
                   if ((index - it->source_pos) == plast) at_end_of_line = 1;
                }
           }
      }
-   
+
    if ((cur->eol) && (at_end_of_line))
      {
         cur->eol = 0;
@@ -3360,7 +3408,7 @@ EAPI void
 evas_textblock_cursor_char_last(Evas_Textblock_Cursor *cur)
 {
    int index;
-   
+
    if (!cur) return;
    if (!cur->node) return;
    if (cur->node->type == NODE_FORMAT)
@@ -3386,7 +3434,7 @@ evas_textblock_cursor_line_first(Evas_Textblock_Cursor *cur)
    Evas_Object_Textblock_Line *ln = NULL;
    Evas_Object_Textblock_Item *it = NULL;
    Evas_Object_Textblock_Format_Item *fi = NULL;
-   
+
    if (!cur) return;
    if (!cur->node) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
@@ -3428,7 +3476,7 @@ evas_textblock_cursor_line_last(Evas_Textblock_Cursor *cur)
    Evas_Object_Textblock_Line *ln = NULL;
    Evas_Object_Textblock_Item *it = NULL;
    Evas_Object_Textblock_Format_Item *fi = NULL;
-   
+
    if (!cur) return;
    if (!cur->node) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
@@ -3455,7 +3503,7 @@ evas_textblock_cursor_line_last(Evas_Textblock_Cursor *cur)
    if (it)
      {
 	int index;
-	
+
 	cur->pos = it->source_pos;
 	cur->node = it->source_node;
 	index = evas_common_font_utf8_get_last((unsigned char *)it->text, strlen(it->text));
@@ -3484,8 +3532,7 @@ evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur)
 /**
  * to be documented.
  * @param cur to be documented.
- * @param int to be documented.
- * @return Returns no value.
+ * @param pos to be documented.
  */
 EAPI void
 evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int pos)
@@ -3502,7 +3549,7 @@ evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int pos)
 /**
  * to be documented.
  * @param cur to be documented.
- * @param int to be documented.
+ * @param line to be documented.
  * @return to be documented.
  */
 EAPI Eina_Bool
@@ -3512,7 +3559,7 @@ evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line)
    Evas_Object_Textblock_Line *ln;
    Evas_Object_Textblock_Item *it;
    Evas_Object_Textblock_Format_Item *fi;
-   
+
    if (!cur) return EINA_FALSE;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    if (!o->formatted.valid) _relayout(cur->obj);
@@ -3552,7 +3599,7 @@ EAPI int
 evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2)
 {
    Eina_Inlist *l1, *l2;
-   
+
    if (!cur1) return 0;
    if (!cur2) return 0;
    if (cur1->obj != cur2->obj) return 0;
@@ -3609,7 +3656,7 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text)
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n, *nrel;
    int index, ch;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
      {
@@ -3661,7 +3708,7 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text)
      n->text = _strbuf_append(n->text, (char *)text, &(n->len), &(n->alloc));
    else
      n->text = _strbuf_insert(n->text, (char *)text, cur->pos, &(n->len), &(n->alloc));
-// XXX: This makes no sense?   
+// XXX: This makes no sense?
    cur->pos += strlen(text);
    o->formatted.valid = 0;
    o->native.valid = 0;
@@ -3686,7 +3733,7 @@ evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text)
 {
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n, *nrel;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
      {
@@ -3709,7 +3756,7 @@ evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text)
 	       {
 		  if (cur->node == data->node)
 		    {
- 		       if (data->node &&
+		       if (data->node &&
 			   (data->node->type == NODE_TEXT) &&
 			   (data->pos >= cur->pos))
 			 data->pos += strlen(text);
@@ -3759,7 +3806,7 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
 {
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n, *nc, *n2;
-   
+
    if (!cur) return;
    if ((!format) || (format[0] == 0)) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
@@ -3783,7 +3830,7 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
      {
 	int index, ch = 0;
 	char *ts;
-	
+
 	index = cur->pos;
 	if (nc->text)
 	  {
@@ -3802,7 +3849,7 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
 	     o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_append_relative(EINA_INLIST_GET(o->nodes),
 										  EINA_INLIST_GET(n2),
 										  EINA_INLIST_GET(n));
-	     
+
 	     *(nc->text + cur->pos) = 0;
 	     nc->len = cur->pos;
 	     ts = realloc(nc->text, nc->len + 1);
@@ -3814,7 +3861,7 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
 	  }
      }
    cur->node = n;
-// XXX: This makes no sense   
+// XXX: This makes no sense
    cur->pos = 0;
    o->formatted.valid = 0;
    o->native.valid = 0;
@@ -3838,7 +3885,7 @@ evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *for
 {
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n, *nc, *n2;
-   
+
    if (!cur) return;
    if ((!format) || (format[0] == 0)) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
@@ -3865,9 +3912,9 @@ evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *for
    else if (nc->type == NODE_TEXT)
      {
 	char *ts;
-	
+
 	if (cur->pos == 0)
- 	  o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_prepend_relative(EINA_INLIST_GET(o->nodes),
+	  o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_prepend_relative(EINA_INLIST_GET(o->nodes),
 										EINA_INLIST_GET(n),
 										EINA_INLIST_GET(nc));
 	else
@@ -3882,7 +3929,7 @@ evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *for
 	     o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_append_relative(EINA_INLIST_GET(o->nodes),
 										  EINA_INLIST_GET(n2),
 										  EINA_INLIST_GET(n));
-	     
+
 	     *(nc->text + cur->pos) = 0;
 	     nc->len = cur->pos;
 	     ts = realloc(nc->text, nc->len + 1);
@@ -3921,11 +3968,11 @@ evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur)
 {
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n, *n2;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    n = cur->node;
-   if ((n->text) && (!strcmp(n->text, "\n")) && 
+   if ((n->text) && (!strcmp(n->text, "\n")) &&
        (!(EINA_INLIST_GET(n))->next)) return;
    n2 = (Evas_Object_Textblock_Node *)((EINA_INLIST_GET(n))->next);
    if (n2)
@@ -3967,13 +4014,13 @@ evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur)
 	       }
 	  }
      }
-   
+
    o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes), EINA_INLIST_GET(n));
    if (n->text) free(n->text);
    free(n);
-   
+
    if (n2) _nodes_adjacent_merge(cur->obj, n2);
-   
+
    o->formatted.valid = 0;
    o->native.valid = 0;
    o->changed = 1;
@@ -3996,7 +4043,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n, *n2;
    int chr, index, ppos;
-   
+
    if (!cur) return;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    n = cur->node;
@@ -4029,7 +4076,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
 	     evas_textblock_cursor_char_last(cur);
 	  }
      }
-   
+
      {
 	Eina_List *l;
 	Evas_Textblock_Cursor *data;
@@ -4054,7 +4101,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
 	       }
 	  }
      }
-   
+
    o->formatted.valid = 0;
    o->native.valid = 0;
    o->changed = 1;
@@ -4078,7 +4125,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node *n1, *n2, *n, *tn;
    int chr, index;
-   
+
    if (!cur1) return;
    if (!cur2) return;
    if (cur1->obj != cur2->obj) return;
@@ -4086,7 +4133,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
    if (evas_textblock_cursor_compare(cur1, cur2) > 0)
      {
 	Evas_Textblock_Cursor *tc;
-	
+
 	tc = cur1;
 	cur1 = cur2;
 	cur2 = tc;
@@ -4191,7 +4238,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
 	     n = removes->data;
 	     if (n->type == NODE_TEXT)
 	       {
-    		  o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes), EINA_INLIST_GET(n));
+		  o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes), EINA_INLIST_GET(n));
 		  if (n->text) free(n->text);
 		  free(n);
 	       }
@@ -4282,7 +4329,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
 				   }
 			      }
 			 }
-  		       o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes),
+		       o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes),
 										   EINA_INLIST_GET(n));
 		       if (n->text) free(n->text);
 		       free(n);
@@ -4290,7 +4337,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
 	       }
 	     else
 	       {
-  		  o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes),
+		  o->nodes = (Evas_Object_Textblock_Node *)eina_inlist_remove(EINA_INLIST_GET(o->nodes),
 									      EINA_INLIST_GET(n2));
 		  if (n2->text) free(n2->text);
 		  free(n2);
@@ -4302,7 +4349,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
 	cur2->node = tcur.node;
 	cur2->pos = tcur.pos;
      }
-   
+
    /* FIXME: adjust cursors that are affected by the change */
    /* this is temporary just avoiding segv's - it sets all other cursors to
     * the same pos as cur1 and cur2
@@ -4325,7 +4372,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
      }
    if (cur1->node) _nodes_adjacent_merge(cur1->obj, cur1->node);
    if (cur2->node) _nodes_adjacent_merge(cur2->obj, cur2->node);
-   
+
    o->formatted.valid = 0;
    o->native.valid = 0;
    o->changed = 1;
@@ -4397,7 +4444,7 @@ EAPI Eina_Bool
 evas_textblock_cursor_node_format_is_visible_get(const Evas_Textblock_Cursor *cur)
 {
    Evas_Object_Textblock_Node *n;
-   
+
    if (!cur) return EINA_FALSE;
    n = cur->node;
    if (!n) return EINA_FALSE;
@@ -4407,7 +4454,7 @@ evas_textblock_cursor_node_format_is_visible_get(const Evas_Textblock_Cursor *cu
 	char *s;
 	char *item;
 	int visible = 0;
-	
+
 	s = n->text;
 	if (s[0] == '+' || s[0] == '-')
 	  {
@@ -4599,7 +4646,7 @@ evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
    Evas_Object_Textblock_Format_Item *fi = NULL;
    int x = 0, y = 0, w = 0, h = 0;
    int pos, ret;
-   
+
    if (!cur) return -1;
    if (!cur->node)
      {
@@ -4626,7 +4673,7 @@ evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
         if (cur->eol)
           {
              int pos2;
-             
+
              pos2 = pos;
              evas_common_font_utf8_get_next((unsigned char *)(it->text), &pos2);
              if (pos2 > pos) pos = pos2;
@@ -4690,7 +4737,7 @@ evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
    Evas_Object_Textblock_Item *it = NULL;
    Evas_Object_Textblock_Format_Item *fi = NULL;
    int x, y, w, h;
-   
+
    if (!cur) return -1;
    if (!cur->node) return -1;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
@@ -4725,7 +4772,7 @@ evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, E
    Evas_Object_Textblock_Line *ln;
    Evas_Object_Textblock_Item *it = NULL, *it_break = NULL;
    Evas_Object_Textblock_Format_Item *fi = NULL;
-   
+
    if (!cur) return EINA_FALSE;
    o = (Evas_Object_Textblock *)(cur->obj->object_data);
    if (!o->formatted.valid) _relayout(cur->obj);
@@ -4827,14 +4874,14 @@ evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, cons
    Evas_Coord cx, cy, cw, ch, lx, ly, lw, lh;
    Evas_Textblock_Rectangle *tr;
    int i, line, line2;
-   
+
    if (!cur1) return NULL;
    if (!cur2) return NULL;
    if (cur1->obj != cur2->obj) return NULL;
    if (evas_textblock_cursor_compare(cur1, cur2) > 0)
      {
 	const Evas_Textblock_Cursor *tc;
-	
+
 	tc = cur1;
 	cur1 = cur2;
 	cur2 = tc;
@@ -4942,7 +4989,7 @@ EAPI Eina_Bool
 evas_object_textblock_line_number_geometry_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
 {
    Evas_Object_Textblock_Line *ln;
-   
+
    TB_HEAD_RETURN(0);
    ln = _find_layout_line_num(obj, line);
    if (!ln) return EINA_FALSE;
@@ -5021,7 +5068,7 @@ evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Eva
    TB_HEAD();
    if (!o->native.valid)
      {
-	_layout(obj, 
+	_layout(obj,
 		1,
 		-1, -1,
 		&o->native.w, &o->native.h);
@@ -5107,7 +5154,7 @@ evas_object_textblock_free(Evas_Object *obj)
    while (o->cursors)
      {
 	Evas_Textblock_Cursor *cur;
-	
+
 	cur = (Evas_Textblock_Cursor *)o->cursors->data;
 	o->cursors = eina_list_remove_list(o->cursors, o->cursors);
 	free(cur);
@@ -5192,7 +5239,7 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 #define ITEM_WALK_LINE_SKIP_DROP() \
    if ((ln->y + ln->h) <= 0) continue; \
    if (ln->y > obj->cur.geometry.h) break
-   
+
    pback = 0;
    /* backing */
    ITEM_WALK();
@@ -5213,21 +5260,18 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 	    (it->format->color.backing.b != b) ||
 	    (it->format->color.backing.a != a))
      {
-	if ((it->format->backing) && (!pback))
-	  {
-	     backx = it->x;
-	     r = it->format->color.backing.r;
-	     g = it->format->color.backing.g;
-	     b = it->format->color.backing.b;
-	     a = it->format->color.backing.a;
-	  }
-	x2 = it->x + it->w;
-	if (!it->format->backing)
-	  {
-	     x2 = it->x;
-	     pback = 0;
-	  }
-	if (x2 > backx)
+        if ((it->format->backing) && (!pback) && (!(EINA_INLIST_GET(it))->next))
+          {
+             r = it->format->color.backing.r;
+             g = it->format->color.backing.g;
+             b = it->format->color.backing.b;
+             a = it->format->color.backing.a;
+             pback = 1;
+             backx = it->x;
+          }
+        if (!it->format->backing) x2 = it->x;
+        else x2 = it->x + it->w;
+	if ((pback) && (x2 > backx))
 	  {
 	     ENFN->context_color_set(output,
 				     context,
@@ -5245,7 +5289,7 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 				  x2 - backx,
 				  ln->h);
 	  }
-	if (it->format->backing) pback = 1;
+        pback = it->format->backing;
 	backx = it->x;
 	r = it->format->color.backing.r;
 	g = it->format->color.backing.g;
@@ -5253,7 +5297,7 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 	a = it->format->color.backing.a;
      }
    ITEM_WALK_END();
-   
+
    /* shadows */
    ITEM_WALK();
    ITEM_WALK_LINE_SKIP_DROP();
@@ -5298,7 +5342,7 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 	  }
      }
    ITEM_WALK_END();
-   
+
    /* glows */
    ITEM_WALK();
    ITEM_WALK_LINE_SKIP_DROP();
@@ -5322,7 +5366,7 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 	DRAW_TEXT(0, 1);
      }
    ITEM_WALK_END();
-   
+
    /* outlines */
    ITEM_WALK();
    ITEM_WALK_LINE_SKIP_DROP();
@@ -5351,7 +5395,7 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
 	  }
      }
    ITEM_WALK_END();
-   
+
    /* normal text */
    ITEM_WALK();
    ITEM_WALK_LINE_SKIP_DROP();
@@ -5549,7 +5593,7 @@ evas_object_textblock_render_pre(Evas_Object *obj)
 	o->lines = NULL;
 	o->formatted.valid = 0;
 	o->native.valid = 0;
-	_layout(obj, 
+	_layout(obj,
 		0,
 		obj->cur.geometry.w, obj->cur.geometry.h,
 		&o->formatted.w, &o->formatted.h);
@@ -5588,6 +5632,12 @@ evas_object_textblock_render_pre(Evas_Object *obj)
 	evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
 	goto done;
      }
+   if ((obj->cur.map != obj->prev.map) ||
+       (obj->cur.usemap != obj->prev.usemap))
+     {
+	evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+        goto done;
+     }
    /* it's not visible - we accounted for it appearing or not so just abort */
    if (!is_v) goto done;
    /* clipper changed this is in addition to anything else for obj */
diff --git a/src/lib/canvas/evas_rectangle.c b/src/lib/canvas/evas_rectangle.c
index d4d986f..217acc5 100644
--- a/src/lib/canvas/evas_rectangle.c
+++ b/src/lib/canvas/evas_rectangle.c
@@ -73,26 +73,26 @@ evas_rects_return_difference_rects(Eina_Array *rects, int x, int y, int w, int h
 		    }
 	       }
 	  }
-/* 	if (tmp.count > 0) */
-/* 	  { */
-/* 	     unsigned int i; */
+/*	if (tmp.count > 0) */
+/*	  { */
+/*	     unsigned int i; */
 
-/* 	     for (i = 0; i < tmp.count; ++i) */
-/* 	       { */
-/* 		  if ((tmp.array[i].w > 0) && (tmp.array[i].h > 0)) */
-/* 		    { */
-/* 		       int intsec1, intsec2; */
+/*	     for (i = 0; i < tmp.count; ++i) */
+/*	       { */
+/*		  if ((tmp.array[i].w > 0) && (tmp.array[i].h > 0)) */
+/*		    { */
+/*		       int intsec1, intsec2; */
 
-/* 		       intsec1 = (RECTS_INTERSECT(tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h, x, y, w, h)); */
-/* 		       intsec2 = (RECTS_INTERSECT(tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h, xx, yy, ww, hh)); */
-/* 		       if (intsec1 ^ intsec2) */
-/* 			 { */
-/* 			    evas_add_rect(rects, tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h); */
-/* 			 } */
-/* 		    } */
-/* 	       } */
-/* 	     free(tmp.array); */
-/* 	  } */
+/*		       intsec1 = (RECTS_INTERSECT(tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h, x, y, w, h)); */
+/*		       intsec2 = (RECTS_INTERSECT(tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h, xx, yy, ww, hh)); */
+/*		       if (intsec1 ^ intsec2) */
+/*			 { */
+/*			    evas_add_rect(rects, tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h); */
+/*			 } */
+/*		    } */
+/*	       } */
+/*	     free(tmp.array); */
+/*	  } */
 
      }
 }
diff --git a/src/lib/canvas/evas_render.c b/src/lib/canvas/evas_render.c
index 5171159..9766d69 100644
--- a/src/lib/canvas/evas_render.c
+++ b/src/lib/canvas/evas_render.c
@@ -1,13 +1,57 @@
 #include "evas_common.h"
 #include "evas_private.h"
 
+// debug rendering
+//#define REND_DGB 1
+
+#ifdef REND_DGB
+static FILE *dbf = NULL;
+
+static void
+rend_dbg(const char *txt)
+{
+   if (!dbf)
+     {
+        dbf = fopen("EVAS-RENDER-DEBUG.log", "w");
+        if (!dbf) return;
+     }
+   fputs(txt, dbf);
+   fflush(dbf);
+}
+#define RD(args...) \
+   { \
+      char __tmpbuf[4096]; \
+      \
+      snprintf(__tmpbuf, sizeof(__tmpbuf), ##args); \
+      rend_dbg(__tmpbuf); \
+   }
+#define RDI(xxxx) \
+   { \
+      char __tmpbuf[4096]; int __tmpi; \
+      for (__tmpi = 0; __tmpi < xxxx; __tmpi++) \
+        __tmpbuf[__tmpi] = ' '; \
+      __tmpbuf[__tmpi] = 0; \
+      rend_dbg(__tmpbuf); \
+   }
+#else
+#define RD(args...)
+#define RDI(x)
+#endif
+
 static Eina_List *
 evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char do_draw);
 
 /**
- * To be documented.
+ * Add a damage rectangle.
+ *
+ * @param e The given canvas pointer.
+ * @param x The rectangle's left position.
+ * @param y The rectangle's top position.
+ * @param w The rectangle's width.
+ * @param h The rectangle's height.
  *
- * FIXME: To be fixed.
+ * This is the function by which one tells evas that a part of the
+ * canvas has to be repainted.
  *
  */
 EAPI void
@@ -25,9 +69,19 @@ evas_damage_rectangle_add(Evas *e, int x, int y, int w, int h)
 }
 
 /**
- * To be documented.
+ * Add an obscured region.
+ *
+ * @param e The given canvas pointer.
+ * @param x The rectangle's left position.
+ * @param y The rectangle's top position
+ * @param w The rectangle's width.
+ * @param h The rectangle's height.
+ *
+ * This is the function by which one tells evas that a part of the
+ * canvas has not to be repainted. To make this region one that have
+ * to be repainted, call the function evas_obscured_clear().
  *
- * FIXME: To be fixed.
+ * @see evas_obscured_clear().
  *
  */
 EAPI void
@@ -44,9 +98,14 @@ evas_obscured_rectangle_add(Evas *e, int x, int y, int w, int h)
 }
 
 /**
- * To be documented.
+ * Remove all obscured region rectangles from the canvas.
  *
- * FIXME: To be fixed.
+ * @param e The given canvas pointer.
+ *
+ * This function removes all the rectangles from the obscured list of
+ * the canvas. It takes obscured areas added with
+ * evas_obscured_rectangle_add() and makes it a region that have to be
+ * repainted.
  *
  */
 EAPI void
@@ -58,76 +117,211 @@ evas_obscured_clear(Evas *e)
    return;
    MAGIC_CHECK_END();
    EINA_LIST_FREE(e->obscures, r)
-     eina_rectangle_free(r);
+     {
+        eina_rectangle_free(r);
+     }
+}
+
+static Eina_Bool
+_evas_render_has_map(Evas_Object *obj)
+{
+   return ((!((obj->func->can_map) && (obj->func->can_map(obj)))) &&
+           ((obj->cur.map) && (obj->cur.usemap)));
+}
+
+static Eina_Bool
+_evas_render_had_map(Evas_Object *obj)
+{
+   return ((!obj->cur.map) && (obj->prev.usemap));
+}
+
+static Eina_Bool
+_evas_render_is_relevant(Evas_Object *obj)
+{
+   return ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+           (evas_object_was_visible(obj) && (!obj->prev.have_clipees)));
+}
+
+static Eina_Bool
+_evas_render_can_render(Evas_Object *obj)
+{
+   return (evas_object_is_visible(obj) && (!obj->cur.have_clipees));
+}
+
+static void
+_evas_render_prev_cur_clip_cache_add(Evas *e, Evas_Object *obj)
+{
+   e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                           obj->prev.cache.clip.x,
+                                           obj->prev.cache.clip.y,
+                                           obj->prev.cache.clip.w,
+                                           obj->prev.cache.clip.h);
+   e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                           obj->cur.cache.clip.x,
+                                           obj->cur.cache.clip.y,
+                                           obj->cur.cache.clip.w,
+                                           obj->cur.cache.clip.h);
 }
 
 static void
-_evas_render_phase1_direct(Evas *e, Eina_Array *render_objects)
+_evas_render_cur_clip_cache_del(Evas *e, Evas_Object *obj)
+{
+   e->engine.func->output_redraws_rect_del(e->engine.data.output,
+                                           obj->cur.cache.clip.x,
+                                           obj->cur.cache.clip.y,
+                                           obj->cur.cache.clip.w,
+                                           obj->cur.cache.clip.h);
+}
+
+static void
+_evas_render_phase1_direct(Evas *e, 
+                           Eina_Array *active_objects, 
+                           Eina_Array *restack_objects, 
+                           Eina_Array *delete_objects, 
+                           Eina_Array *render_objects)
 {
    unsigned int i;
 
-   for (i = 0; i < render_objects->count; ++i)
+   RD("  [--- PHASE 1 DIRECT\n");
+   for (i = 0; i < render_objects->count; i++)
      {
 	Evas_Object *obj;
 
 	obj = eina_array_data_get(render_objects, i);
-	if (obj->changed) obj->func->render_pre(obj);
+        RD("    OBJ [%p] changed %i\n", obj, obj->changed);
+	if (obj->changed)
+          {
+             evas_object_clip_recalc(obj);
+             obj->func->render_pre(obj);
+             if (obj->pre_render_done)
+               {
+                  if ((obj->smart.smart) && _evas_render_has_map(obj))
+                    {
+                       RD("    has map + smart\n");
+                       _evas_render_prev_cur_clip_cache_add(e, obj);
+                    }
+               }
+             else if (_evas_render_had_map(obj))
+               {
+                  RD("    no pre-render done\n");
+                  _evas_render_prev_cur_clip_cache_add(e, obj);
+               }
+          }
 	else
 	  {
 	     if (obj->smart.smart)
-	       obj->func->render_pre(obj);
-	     else
-	       if (obj->rect_del)
-		 {
-		    e->engine.func->output_redraws_rect_del(e->engine.data.output,
-							    obj->cur.cache.clip.x,
-							    obj->cur.cache.clip.y,
-							    obj->cur.cache.clip.w,
-							    obj->cur.cache.clip.h);
-		 }
+               {
+//                  obj->func->render_pre(obj);
+               }
+	     else if (obj->rect_del)
+               {
+                  RD("    rect del\n");
+                  _evas_render_cur_clip_cache_del(e, obj);
+               }
 	  }
      }
+   RD("  ---]\n");
 }
 
 static Eina_Bool
-_evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Eina_Array *active_objects, Eina_Array *restack_objects, Eina_Array *delete_objects, Eina_Array *render_objects, int restack)
+_evas_render_phase1_object_process(Evas *e, Evas_Object *obj, 
+                                   Eina_Array *active_objects, 
+                                   Eina_Array *restack_objects, 
+                                   Eina_Array *delete_objects, 
+                                   Eina_Array *render_objects, 
+                                   int restack, int map
+#ifdef REND_DGB
+                                   , int level
+#endif
+                                   )
 {
    Eina_Bool clean_them = EINA_FALSE;
+   Evas_Object *obj2;
    int is_active;
 
    obj->rect_del = 0;
    obj->render_pre = 0;
 
-/* if (obj->cur.cache.clip.dirty) */
-   evas_object_clip_recalc(obj);
    /* because of clip objects - delete 2 cycles later */
-   if (obj->delete_me == 2)
-     eina_array_push(delete_objects, obj);
+   if (obj->delete_me == 2) eina_array_push(delete_objects, obj);
    else if (obj->delete_me != 0) obj->delete_me++;
    /* If the object will be removed, we should not cache anything during this run. */
-   if (obj->delete_me != 0)
-     clean_them = EINA_TRUE;
+   if (obj->delete_me != 0) clean_them = EINA_TRUE;
 
    /* build active object list */
+   evas_object_clip_recalc(obj);
    is_active = evas_object_is_active(obj);
-
    obj->is_active = is_active;
+   
+   RDI(level);
+   RD("    [--- PROCESS [%p] '%s' active = %i, del = %i | %i %i %ix%i\n", obj, obj->type, is_active, obj->delete_me, obj->cur.geometry.x, obj->cur.geometry.y, obj->cur.geometry.w, obj->cur.geometry.h);
    if ((is_active) || (obj->delete_me != 0))
      eina_array_push(active_objects, obj);
-   if (restack)
+
+#ifdef REND_DGB
+   if (!is_active)
+     {
+        RDI(level);
+        RD("     [%p] vis: %i, cache.clip.vis: %i cache.clip.a: %i [%p]\n", obj, obj->cur.visible, obj->cur.cache.clip.visible, obj->cur.cache.clip.a, obj->func->is_visible);
+     }
+#endif   
+   
+   if (_evas_render_has_map(obj)) map = 1;
+   
+   if ((restack) && (!map))
      {
 	if (!obj->changed)
-	  eina_array_push(&e->pending_objects, obj);
+          {
+             eina_array_push(&e->pending_objects, obj);
+             obj->changed = 1;
+          }
 	obj->restack = 1;
-	obj->changed = 1;
 	clean_them = EINA_TRUE;
      }
+
+   if (map)
+     {
+        RDI(level);
+        RD("      obj mapped\n");
+        if (obj->changed)
+          {
+             evas_object_clip_recalc(obj);
+             if ((obj->restack) &&
+                 (is_active) && (!obj->clip.clipees) &&
+                 ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                  (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+               {
+                  eina_array_push(render_objects, obj);
+                  _evas_render_prev_cur_clip_cache_add(e, obj);
+                  obj->render_pre = 1;
+               }
+             else if ((is_active) && (!obj->clip.clipees) &&
+                      ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                       (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+               {
+                  eina_array_push(render_objects, obj);
+                  _evas_render_prev_cur_clip_cache_add(e, obj);
+                  obj->render_pre = 1;
+               }
+          }
+        return clean_them;
+     }
+   else if (_evas_render_had_map(obj))
+     {
+        RDI(level);
+        RD("      had map - restack objs\n");
+//        eina_array_push(restack_objects, obj);
+        _evas_render_prev_cur_clip_cache_add(e, obj);
+     }
+   
+   /* handle normal rendering. this object knows how to handle maps */
+   
    if (obj->changed)
      {
 	if (obj->smart.smart)
 	  {
-	     Evas_Object *obj2;
-
+             RDI(level);
+             RD("      changed + smart - render ok\n");
 	     eina_array_push(render_objects, obj);
 	     obj->render_pre = 1;
 	     EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
@@ -137,79 +331,148 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Eina_Array *active
 						     restack_objects,
 						     delete_objects,
 						     render_objects,
-						     obj->restack);
+						     obj->restack,
+                                                     map
+#ifdef REND_DGB
+                                                     , level + 1
+#endif                  
+                                                     );
 	       }
 	  }
 	else
 	  {
-	     if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
-		 ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
-		  (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
-               eina_array_push(restack_objects, obj);
-	     else if ((is_active) && (!obj->clip.clipees) &&
-		      ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
-		       (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
-	       {
-		  eina_array_push(render_objects, obj);
-		  obj->render_pre = 1;
-	       }
+	     if ((is_active) && (!obj->clip.clipees) &&
+                 _evas_render_is_relevant(obj))
+               {
+                  RDI(level);
+                  RD("      relevant + active\n");
+                  if (obj->restack)
+                    eina_array_push(restack_objects, obj);
+                  else
+                    {
+                       eina_array_push(render_objects, obj);
+                       obj->render_pre = 1;
+                    }
+               }
+             else
+               {
+                  RDI(level);
+                  RD("      skip - not smart, not active or clippees or not relevant\n");
+               }
 	  }
      }
    else
      {
+        RD("      not changed... [%i] -> (%i %i %p %i) [%i]\n", 
+           evas_object_is_visible(obj), 
+           obj->cur.visible, obj->cur.cache.clip.visible, obj->smart.smart, obj->cur.cache.clip.a,
+           evas_object_was_visible(obj));
 	if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
 	    ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
 	     (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
 	  {
 	     if (obj->smart.smart)
 	       {
-		  Evas_Object *obj2;
-
+                  RDI(level);
+                  RD("      smart + visible/was visible + not clip\n");
 		  eina_array_push(render_objects, obj);
 		  obj->render_pre = 1;
-		  EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+		  EINA_INLIST_FOREACH
+                    (evas_object_smart_members_get_direct(obj), obj2)
 		    {
 		       _evas_render_phase1_object_process(e, obj2,
 							  active_objects,
 							  restack_objects,
 							  delete_objects,
 							  render_objects,
-							  restack);
+							  restack, map
+#ifdef REND_DGB
+                                                          , level + 1
+#endif
+                                                          );
 		    }
 	       }
 	     else
 	       {
 		  if (evas_object_is_opaque(obj) &&
-		      evas_object_is_visible(obj))
+                      evas_object_is_visible(obj))
 		    {
+                       RDI(level);
+                       RD("      opaque + visible\n");
 		       eina_array_push(render_objects, obj);
 		       obj->rect_del = 1;
 		    }
+                  else if (evas_object_is_visible(obj))
+                    {
+                       RDI(level);
+                       RD("      visible\n");
+                       eina_array_push(render_objects, obj);
+                       obj->render_pre = 1;
+                    }
+                  else
+                    {
+                       RDI(level);
+                       RD("      skip\n");
+                    }
 	       }
 	  }
+/*        
+        else if (obj->smart.smart)
+          {
+             RDI(level);
+             RD("      smart + mot visible/was visible\n");
+             eina_array_push(render_objects, obj);
+             obj->render_pre = 1;
+             EINA_INLIST_FOREACH
+               (evas_object_smart_members_get_direct(obj), obj2)
+               {
+                  _evas_render_phase1_object_process(e, obj2,
+                                                     active_objects,
+                                                     restack_objects,
+                                                     delete_objects,
+                                                     render_objects,
+                                                     restack, map
+#ifdef REND_DGB
+                                                     , level + 1
+#endif
+                                                     );
+               }
+          }
+ */
      }
    if (!is_active) obj->restack = 0;
+   RDI(level);
+   RD("    ---]\n");
    return clean_them;
 }
 
 static Eina_Bool
-_evas_render_phase1_process(Evas *e, Eina_Array *active_objects, Eina_Array *restack_objects, Eina_Array *delete_objects, Eina_Array *render_objects)
+_evas_render_phase1_process(Evas *e, 
+                            Eina_Array *active_objects, 
+                            Eina_Array *restack_objects, 
+                            Eina_Array *delete_objects, 
+                            Eina_Array *render_objects)
 {
    Evas_Layer *lay;
    Eina_Bool clean_them = EINA_FALSE;
 
+   RD("  [--- PHASE 1\n");
    EINA_INLIST_FOREACH(e->layers, lay)
      {
 	Evas_Object *obj;
-
+        
 	EINA_INLIST_FOREACH(lay->objects, obj)
 	  {
-	     clean_them |= _evas_render_phase1_object_process(e, obj,
-							      active_objects, restack_objects,
-							      delete_objects, render_objects,
-							      0);
+	     clean_them |= _evas_render_phase1_object_process
+               (e, obj, active_objects, restack_objects, delete_objects, 
+                render_objects, 0, 0
+#ifdef REND_DGB
+                , 1
+#endif                
+                );
 	  }
      }
+   RD("  ---]\n");
 
    return clean_them;
 }
@@ -217,99 +480,304 @@ _evas_render_phase1_process(Evas *e, Eina_Array *active_objects, Eina_Array *res
 static void
 _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *e)
 {
-   unsigned int i;
+   int i;
 
    for (i = 0; i < pending_objects->count; ++i)
      {
 	Evas_Object *obj;
-	int ok = 0;
-	int is_active;
-
+	int is_active, ok = 0;
+        
 	obj = eina_array_data_get(pending_objects, i);
-
+        
 	if (!obj->layer) goto clean_stuff;
-
+        
 	evas_object_clip_recalc(obj);
 	is_active = evas_object_is_active(obj);
-
-	if (!is_active &&
-	    !obj->is_active &&
-	    !obj->render_pre &&
-	    !obj->rect_del)
+        
+	if ((!is_active) && (!obj->is_active) && (!obj->render_pre) && 
+            (!obj->rect_del))
 	  {
 	     ok = 1;
 	     goto clean_stuff;
 	  }
-
+        
 	if (obj->is_active == is_active)
 	  {
 	     if (obj->changed)
 	       {
 		  if (obj->smart.smart)
 		    {
-		       if (obj->render_pre
-			   || obj->rect_del)
-			 ok = 1;
+		       if (obj->render_pre || obj->rect_del) ok = 1;
 		    }
 		  else
 		    if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
 			((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
 			 (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
 		      {
-			 if (!(obj->render_pre
-			       || obj->rect_del))
-			   ok = 1;
+			 if (!(obj->render_pre || obj->rect_del)) ok = 1;
 		      }
-		    else
-		      if (is_active && (!obj->clip.clipees) &&
-			  ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
-			   (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
-			{
-			   if (obj->render_pre
-			       || obj->rect_del)
-			     ok = 1;
-			}
+                  else
+                    if (is_active && (!obj->clip.clipees) &&
+                        ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                         (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+                      {
+                         if (obj->render_pre || obj->rect_del) ok = 1;
+                      }
 	       }
 	     else
 	       {
 		  if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
 		      (!obj->cur.have_clipees || (evas_object_was_visible(obj) && (!obj->prev.have_clipees)))
 		      && evas_object_is_opaque(obj) && evas_object_is_visible(obj))
-		    if (obj->rect_del || obj->smart.smart)
-		      {
-			 ok = 1;
-		      }
+                    {
+                       if (obj->rect_del || obj->smart.smart) ok = 1;
+                    }
 	       }
 	  }
-
-     clean_stuff:
+        
+        clean_stuff:
 	if (!ok)
 	  {
 	     eina_array_clean(&e->active_objects);
 	     eina_array_clean(&e->render_objects);
-
 	     eina_array_clean(&e->restack_objects);
 	     eina_array_clean(&e->delete_objects);
-
 	     e->invalidate = 1;
-
 	     return ;
 	  }
      }
 }
 
-Eina_Bool pending_change(void *data, __UNUSED__ void *gdata)
+Eina_Bool
+pending_change(void *data, void *gdata __UNUSED__)
 {
    Evas_Object *obj;
 
    obj = data;
    if (obj->delete_me) return EINA_FALSE;
-   if (!obj->layer) obj->changed = 0;
+   if (obj->pre_render_done)
+     {
+   RD("  OBJ [%p] pending change %i -> 0, pre %i\n", obj, obj->changed, obj->pre_render_done);
+   obj->pre_render_done = 0;
+//// FIXME: this wipes out changes
+   obj->changed = 0;
+     }
    return obj->changed ? EINA_TRUE : EINA_FALSE;
 }
 
+static void
+evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, 
+                   int off_x, int off_y, int mapped
+#ifdef REND_DGB
+                   , int level
+#endif                   
+                   )
+{
+   void *ctx;
+   Evas_Object *obj2;
+
+   evas_object_clip_recalc(obj);
+   RDI(level); 
+   RD("      { evas_render_mapped(%p, %p,   %p, %p,   %i, %i,   %i,   %i)\n", e, obj, context, surface, off_x, off_y, mapped, level);
+   if (mapped)
+     {
+        if ((!evas_object_is_visible(obj)) || (obj->clip.clipees) ||
+            (obj->cur.have_clipees))
+          {
+             RDI(level); 
+             RD("      }\n");
+             return;
+          }
+     }
+   else if (!(((evas_object_is_active(obj) && (!obj->clip.clipees) &&
+                ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)))))
+              )) 
+     {
+        RDI(level); 
+        RD("      }\n");
+        return;
+     }
+   
+   // set render_pre - for child objs that may not have gotten it.
+   obj->pre_render_done = 1;
+   
+   if (_evas_render_has_map(obj))
+     {
+        const Evas_Map_Point *p, *p_end;
+        RGBA_Map_Point pts[4], *pt;
+        int sw, sh;
+        int changed = 0;
+        
+        sw = obj->cur.geometry.w;
+        sh = obj->cur.geometry.h;
+        RDI(level); 
+        RD("        mapped obj: %ix%i\n", sw, sh);
+        if ((sw <= 0) || (sh <= 0))
+          {
+             RDI(level); 
+             RD("      }\n");
+             return;
+          }
+             
+        p = obj->cur.map->points;
+        p_end = p + 4;
+        pt = pts;
+        for (; p < p_end; p++, pt++)
+          {
+             pt->x = (p->x + off_x) << FP;
+             pt->y = (p->y + off_y) << FP;
+             pt->z = (p->z)         << FP;
+             pt->u = p->u * FP1;
+             pt->v = p->v * FP1;
+             pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
+          }
+        
+        if (obj->cur.map->surface)
+          {
+             if ((obj->cur.map->surface_w != sw) ||
+                 (obj->cur.map->surface_h != sh))
+               {
+                  RDI(level); 
+                  RD("        new surf: %ix%i\n", sw, sh);
+                  obj->layer->evas->engine.func->image_map_surface_free
+                    (e->engine.data.output, obj->cur.map->surface);
+                  obj->cur.map->surface = NULL;
+               }
+          }
+        if (!obj->cur.map->surface)
+          {
+             obj->cur.map->surface_w = sw;
+             obj->cur.map->surface_h = sh;
+             
+             obj->cur.map->surface =
+               obj->layer->evas->engine.func->image_map_surface_new
+               (e->engine.data.output, obj->cur.map->surface_w,
+                obj->cur.map->surface_h, 
+                obj->cur.map->alpha);
+             RDI(level); 
+             RD("        fisrt surf: %ix%i\n", sw, sh);
+             changed = 1;
+          }
+        if (obj->smart.smart)
+          {
+             Evas_Object *obj2;
+             
+             EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+               {
+                  if (obj2->changed)
+                    {
+                       obj2->changed  = 0;
+                       changed = 1;
+                       break;
+                    }
+               }
+             obj->changed = 0;
+          }
+        else
+          {
+             changed = obj->changed;
+             obj->changed = 0;
+          }
+        
+        // clear surface before re-render
+        if ((changed) && (obj->cur.map->surface))
+          {
+             RDI(level); 
+             RD("        children redraw\n");
+             // FIXME: calculate "changes" within map surface and only clear
+             // and re-render those
+             if (obj->cur.map->alpha)
+               {
+                  ctx = e->engine.func->context_new(e->engine.data.output);
+                  e->engine.func->context_color_set
+                    (e->engine.data.output, ctx, 0, 0, 0, 0);
+                  e->engine.func->context_render_op_set
+                    (e->engine.data.output, ctx, EVAS_RENDER_COPY);
+                  e->engine.func->rectangle_draw(e->engine.data.output,
+                                                 ctx,
+                                                 obj->cur.map->surface,
+                                                 0, 0, 
+                                                 obj->cur.map->surface_w,
+                                                 obj->cur.map->surface_h);
+                  e->engine.func->context_free(e->engine.data.output, ctx);
+               }
+             ctx = e->engine.func->context_new(e->engine.data.output);
+             off_x = -obj->cur.geometry.x;
+             off_y = -obj->cur.geometry.y;
+             if (obj->smart.smart)
+               {
+                  EINA_INLIST_FOREACH
+                    (evas_object_smart_members_get_direct(obj), obj2)
+                    {
+                       evas_render_mapped(e, obj2, ctx, 
+                                          obj->cur.map->surface, 
+                                          off_x, off_y, 1
+#ifdef REND_DGB
+                                          , level + 1
+#endif
+                                          );
+                    }
+               }
+             else
+               obj->func->render(obj, e->engine.data.output, ctx,
+                                 obj->cur.map->surface, off_x, off_y);
+             e->engine.func->context_free(e->engine.data.output, ctx);
+          }
+
+        RDI(level); 
+        RD("        draw map4\n");
+        obj->layer->evas->engine.func->image_map4_draw
+          (e->engine.data.output, e->engine.data.context, surface, 
+           obj->cur.map->surface, pts, obj->cur.map->smooth, 0);
+        
+        // FIXME: needs to cache these maps and
+        // keep them only rendering updates
+//        obj->layer->evas->engine.func->image_map_surface_free
+//          (e->engine.data.output, obj->cur.map->surface);
+//        obj->cur.map->surface = NULL;
+     }
+   else
+     {
+        if (mapped)
+          {
+             RDI(level); 
+             RD("        draw child of mapped obj\n");
+             ctx = e->engine.func->context_new(e->engine.data.output);
+             if (obj->smart.smart)
+               {
+                  EINA_INLIST_FOREACH
+                    (evas_object_smart_members_get_direct(obj), obj2)
+                    {
+                       evas_render_mapped(e, obj2, ctx,
+                                          surface,
+                                          off_x, off_y, 1
+#ifdef REND_DGB
+                                          , level + 1
+#endif
+                                          );
+                    }
+               }
+             else
+               obj->func->render(obj, e->engine.data.output, ctx,
+                                 surface, off_x, off_y);
+             e->engine.func->context_free(e->engine.data.output, ctx);
+          }
+        else
+          {
+             RDI(level); 
+             RD("        draw normal obj\n");
+             obj->func->render(obj, e->engine.data.output, context, surface, 
+                               off_x, off_y);
+          }
+     }
+   RDI(level); 
+   RD("      }\n");
+}
+
 static Eina_List *
-evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char do_draw)
+evas_render_updates_internal(Evas *e,
+                             unsigned char make_updates,
+                             unsigned char do_draw)
 {
    Eina_List *updates = NULL;
    Eina_List *ll;
@@ -327,7 +795,9 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
    if (!e->changed) return NULL;
 
    evas_call_smarts_calculate(e);
-
+   
+   RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h);
+   
    /* Check if the modified object mean recalculating every thing */
    if (!e->invalidate)
      _evas_render_check_pending_objects(&e->pending_objects, e);
@@ -335,8 +805,8 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
    /* phase 1. add extra updates for changed objects */
    if (e->invalidate || e->render_objects.count <= 0)
      clean_them = _evas_render_phase1_process(e, &e->active_objects, &e->restack_objects, &e->delete_objects, &e->render_objects);
-
-   _evas_render_phase1_direct(e, &e->render_objects);
+   
+   _evas_render_phase1_direct(e, &e->active_objects, &e->restack_objects, &e->delete_objects, &e->render_objects);
 
    /* phase 2. force updates for restacks */
    for (i = 0; i < e->restack_objects.count; ++i)
@@ -345,16 +815,7 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 
 	obj = eina_array_data_get(&e->restack_objects, i);
 	obj->func->render_pre(obj);
-	e->engine.func->output_redraws_rect_add(e->engine.data.output,
-						obj->prev.cache.clip.x,
-						obj->prev.cache.clip.y,
-						obj->prev.cache.clip.w,
-						obj->prev.cache.clip.h);
-	e->engine.func->output_redraws_rect_add(e->engine.data.output,
-						obj->cur.cache.clip.x,
-						obj->cur.cache.clip.y,
-						obj->cur.cache.clip.w,
-						obj->cur.cache.clip.h);
+        _evas_render_prev_cur_clip_cache_add(e, obj);
      }
    eina_array_clean(&e->restack_objects);
    /* phase 3. add exposes */
@@ -381,12 +842,14 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
      }
    if ((e->output.w != e->viewport.w) || (e->output.h != e->viewport.h))
      {
-	printf("EVAS: error: viewport size != output size!\n");
+	ERR("viewport size != output size!");
      }
    /* phase 5. add obscures */
    EINA_LIST_FOREACH(e->obscures, ll, r)
+     {
         e->engine.func->output_redraws_rect_del(e->engine.data.output,
 					       r->x, r->y, r->w, r->h);
+     }
    /* build obscure objects list of active objects that obscure */
    for (i = 0; i < e->active_objects.count; ++i)
      {
@@ -402,7 +865,7 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
                      (!obj->delete_me) &&
                      (obj->cur.cache.clip.visible) &&
                      (!obj->smart.smart)))
-/* 	  obscuring_objects = eina_list_append(obscuring_objects, obj); */
+/*	  obscuring_objects = eina_list_append(obscuring_objects, obj); */
 	  eina_array_push(&e->obscuring_objects, obj);
      }
    /* save this list */
@@ -422,6 +885,7 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 	  {
 	     int off_x, off_y;
 
+             RD("  [--- UPDATE %i %i %ix%i\n", ux, uy, uw, uh);
 	     if (make_updates)
 	       {
 		  Eina_Rectangle *rect;
@@ -480,6 +944,9 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 	       }
 	     if (alpha)
 	       {
+		  e->engine.func->context_clip_set(e->engine.data.output,
+						   e->engine.data.context,
+						   ux, uy, uw, uh);
 		  e->engine.func->context_color_set(e->engine.data.output, e->engine.data.context, 0, 0, 0, 0);
 		  e->engine.func->context_multiplier_unset(e->engine.data.output, e->engine.data.context);
 		  e->engine.func->context_render_op_set(e->engine.data.output, e->engine.data.context, EVAS_RENDER_COPY);
@@ -490,7 +957,6 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 		  e->engine.func->context_cutout_clear(e->engine.data.output,
 						       e->engine.data.context);
 	       }
-
 	     /* render all object that intersect with rect */
              for (i = 0; i < e->active_objects.count; ++i)
 	       {
@@ -499,16 +965,19 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 		  obj = eina_array_data_get(&e->active_objects, i);
 
 		  /* if it's in our outpout rect and it doesn't clip anything */
-		  if (evas_object_is_in_output_rect(obj, ux, uy, uw, uh) &&
+                  RD("    OBJ: [%p] '%s' %i %i %ix%i\n", obj, obj->type, obj->cur.geometry.x, obj->cur.geometry.y, obj->cur.geometry.w, obj->cur.geometry.h);
+		  if ((evas_object_is_in_output_rect(obj, ux, uy, uw, uh) ||
+                       (obj->smart.smart)) &&
 		      (!obj->clip.clipees) &&
 		      (obj->cur.visible) &&
 		      (!obj->delete_me) &&
 		      (obj->cur.cache.clip.visible) &&
-		      (!obj->smart.smart) &&
+//		      (!obj->smart.smart) &&
 		      (obj->cur.color.a > 0))
 		    {
 		       int x, y, w, h;
 
+                       RD("      DRAW (vis: %i, a: %i, clipees: %p\n", obj->cur.visible, obj->cur.color.a, obj->clip.clipees);
 		       if ((e->temporary_objects.count > offset) &&
 			   (eina_array_data_get(&e->temporary_objects, offset) == obj))
 			 offset++;
@@ -518,7 +987,7 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 					  obj->cur.cache.clip.y + off_y,
 					  obj->cur.cache.clip.w,
 					  obj->cur.cache.clip.h);
-		       if ((w > 0) && (h > 0))
+		       if (((w > 0) && (h > 0)) || (obj->smart.smart))
 			 {
 			    e->engine.func->context_clip_set(e->engine.data.output,
 							     e->engine.data.context,
@@ -541,7 +1010,7 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
                                       if (obj2->func->get_opaque_rect)
                                         {
                                            Evas_Coord obx, oby, obw, obh;
-                                           
+
                                            obj2->func->get_opaque_rect
                                              (obj2, &obx, &oby, &obw, &obh);
                                            if ((obw > 0) && (obh > 0))
@@ -562,11 +1031,12 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
                                    }
 			      }
 #endif
-			    obj->func->render(obj,
-					      e->engine.data.output,
-					      e->engine.data.context,
-					      surface,
-					      off_x, off_y);
+                            evas_render_mapped(e, obj, e->engine.data.context,
+                                               surface, off_x, off_y, 0
+#ifdef REND_DGB
+                                               , 1
+#endif
+                                               );
 			    e->engine.func->context_cutout_clear(e->engine.data.output,
 								 e->engine.data.context);
 			 }
@@ -578,6 +1048,7 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 							     ux, uy, uw, uh);
 	     /* free obscuring objects list */
 	     eina_array_clean(&e->temporary_objects);
+             RD("  ---]\n");
 	  }
 	/* flush redraws */
 	e->engine.func->output_flush(e->engine.data.output);
@@ -591,12 +1062,22 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
 
 	obj = eina_array_data_get(&e->active_objects, i);
 	obj->pre_render_done = 0;
+        RD("    OBJ [%p] post... %i %i\n", obj, obj->changed, do_draw);
 	if ((obj->changed) && (do_draw))
 	  {
+             RD("    OBJ [%p] post... func1\n", obj);
 	     obj->func->render_post(obj);
 	     obj->restack = 0;
 	     obj->changed = 0;
 	  }
+        else if ((obj->cur.map != obj->prev.map) ||
+                 (obj->cur.usemap != obj->prev.usemap))
+          {
+             RD("    OBJ [%p] post... func2\n", obj);
+	     obj->func->render_post(obj);
+	     obj->restack = 0;
+	     obj->changed = 0;
+          }
 /* moved to other pre-process phase 1
 	if (obj->delete_me == 2)
 	  {
@@ -627,24 +1108,41 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
    e->output.changed = 0;
    e->invalidate = 0;
 
-   /* If their are some object to restack or some object to delete, it's useless to keep the render object list around. */
-   if (clean_them)
+   for (i = 0; i < e->render_objects.count; ++i)
+     {
+        Evas_Object *obj;
+        
+        obj = eina_array_data_get(&e->render_objects, i);
+        obj->pre_render_done = 0;
+     }
+   
+   /* If their are some object to restack or some object to delete, 
+    * it's useless to keep the render object list around. */
+//   if (clean_them)
+   if (1)
      {
 	eina_array_clean(&e->active_objects);
 	eina_array_clean(&e->render_objects);
-
+	eina_array_clean(&e->restack_objects);
+	eina_array_clean(&e->delete_objects);
+        eina_array_clean(&e->obscuring_objects);
 	e->invalidate = 1;
      }
 
    evas_module_clean();
 
+   RD("---]\n");
+   
    return updates;
 }
 
 /**
- * To be documented.
+ * Free the rectangles returned by evas_render_updates().
+ *
+ * @param updates The list of updated rectangles of the canvas.
  *
- * FIXME: To be fixed.
+ * This function removes the region from the render updates list. It
+ * makes the region doesn't be render updated anymore.
  *
  */
 EAPI void
@@ -657,9 +1155,13 @@ evas_render_updates_free(Eina_List *updates)
 }
 
 /**
- * To be documented.
+ * Force immediate renderization of the given canvas.
+ *
+ * @param e The given canvas pointer.
+ * @return A list of updated rectangles of the canvas.
  *
- * FIXME: To be fixed.
+ * This function forces an immediate renderization update of the given
+ * given canvas.
  *
  */
 EAPI Eina_List *
@@ -674,9 +1176,11 @@ evas_render_updates(Evas *e)
 }
 
 /**
- * To be documented.
+ * Force renderization of a region
  *
- * FIXME: To be fixed.
+ * @param e The given canvas pointer.
+ *
+ * This function forces renderization of the region given.
  *
  */
 EAPI void
@@ -691,9 +1195,16 @@ evas_render(Evas *e)
 }
 
 /**
- * To be documented.
+ * Update the canvas internal objects but not triggering immediate
+ * renderization.
+ *
+ * @param e The given canvas pointer.
  *
- * FIXME: To be fixed.
+ * This function updates the canvas internal objects not triggering
+ * renderization. To force renderization function evas_render() should
+ * be used.
+ *
+ * @see evas_render.
  *
  */
 EAPI void
@@ -708,9 +1219,11 @@ evas_norender(Evas *e)
 }
 
 /**
- * To be documented.
+ * Make the canvas discard internally cached data used for renderization
+ *
+ * @param e The given canvas pointer.
  *
- * FIXME: To be fixed.
+ * This function flushes the arrays of delete, active and render objects.
  *
  */
 EAPI void
@@ -760,14 +1273,11 @@ evas_render_object_recalc(Evas_Object *obj)
 
    if ((!obj->changed) && (obj->delete_me < 2))
      {
-	Evas	*e;
+	Evas *e;
 
 	e = obj->layer->evas;
-	if (!e || e->cleanup) return ;
-
-	if (!obj->changed)
-	  eina_array_push(&e->pending_objects, obj);
+	if ((!e) || (e->cleanup)) return;
+        eina_array_push(&e->pending_objects, obj);
 	obj->changed = 1;
      }
 }
-
diff --git a/src/lib/canvas/evas_smart.c b/src/lib/canvas/evas_smart.c
index 2b45e52..83309dc 100644
--- a/src/lib/canvas/evas_smart.c
+++ b/src/lib/canvas/evas_smart.c
@@ -22,7 +22,7 @@
  * provided callbacks. Callbacks that are unneeded (or marked DEPRECATED
  * below) should be set to NULL.
  *
- * Alternatively you can create an Evas_Smart_Class yourself and use 
+ * Alternatively you can create an Evas_Smart_Class yourself and use
  * evas_smart_class_new().
  *
  * @param name a unique name for the smart
@@ -33,8 +33,8 @@
  * @param func_lower DEPRECATED
  * @param func_stack_above DEPRECATED
  * @param func_stack_below DEPRECATED
- * @param func_move callback called when smart object is moved 
- * @param func_resize callback called when smart object is resized 
+ * @param func_move callback called when smart object is moved
+ * @param func_resize callback called when smart object is resized
  * @param func_show callback called when smart object is shown
  * @param func_hide callback called when smart object is hidden
  * @param func_color_set callback called when smart object has its color set
@@ -65,9 +65,9 @@ evas_smart_new(const char *name,
    Evas_Smart *s;
    Evas_Smart_Class *sc;
 
-   printf("----- WARNING. evas_smart_new() will be deprecated and removed soon\n"
-	  "----- Please use evas_smart_class_new() instead\n");
-   
+   WRN("----- WARNING. evas_smart_new() will be deprecated and removed soon"
+	  "----- Please use evas_smart_class_new() instead");
+
    if (!name) return NULL;
 
    s = evas_mem_calloc(sizeof(Evas_Smart));
@@ -123,7 +123,7 @@ evas_smart_free(Evas_Smart *s)
 /**
  * Creates an Evas_Smart from an Evas_Smart_Class.
  *
- * @param Evas_Smart_Class the smart class definition
+ * @param sc the smart class definition
  * @return an Evas_Smart
  */
 EAPI Evas_Smart *
@@ -135,7 +135,7 @@ evas_smart_class_new(const Evas_Smart_Class *sc)
 
    /* api does not match abi! for now refuse as we only have 1 version */
    if (sc->version != EVAS_SMART_CLASS_VERSION) return NULL;
-   
+
    s = evas_mem_calloc(sizeof(Evas_Smart));
    if (!s) return NULL;
 
@@ -162,14 +162,13 @@ evas_smart_class_get(const Evas_Smart *s)
 }
 
 /**
- * Get the data pointer set on an Evas_Smart.
+ * @brief Get the data pointer set on an Evas_Smart.
+ *
+ * @param s Evas_Smart
  *
- * This data pointer is set either as the final parameter to 
+ * This data pointer is set either as the final parameter to
  * evas_smart_new or as the data field in the Evas_Smart_Class passed
  * in to evas_smart_class_new
- *
- * @param Evas_Smart 
- *
  */
 EAPI void *
 evas_smart_data_get(const Evas_Smart *s)
diff --git a/src/lib/canvas/evas_stack.c b/src/lib/canvas/evas_stack.c
index 21c5fd9..b7fcb68 100644
--- a/src/lib/canvas/evas_stack.c
+++ b/src/lib/canvas/evas_stack.c
@@ -150,13 +150,13 @@ evas_object_lower(Evas_Object *obj)
 }
 
 /**
- * Stack @p obj immediately above @p above 
+ * Stack @p obj immediately above @p above
  *
  * If @p obj is a member of a smart object, then @p above must also be
  * a member of the same smart object.
  *
- * Similarly, if @p obj is not a member of smart object, @p above may 
- * not either. 
+ * Similarly, if @p obj is not a member of smart object, @p above may
+ * not either.
  *
  * @param obj the object to stack
  * @param above the object above which to stack
@@ -172,6 +172,7 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
    MAGIC_CHECK(above, Evas_Object, MAGIC_OBJ);
    return;
    MAGIC_CHECK_END();
+   if (obj == above) return;
    if (evas_object_intercept_call_stack_above(obj, above)) return;
    if (!above)
      {
@@ -187,21 +188,26 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
      {
 	if (obj->smart.parent != above->smart.parent)
 	  {
-//	     printf("BITCH! evas_object_stack_above(), %p not inside same smart as %p!\n", obj, above);
+	     ERR("BITCH! evas_object_stack_above(), %p not inside same smart as %p!", obj, above);
 	     return;
 	  }
 	evas_object_smart_member_stack_above(obj, above);
      }
    else
      {
-	if (above->smart.parent) return;
+	if (above->smart.parent)
+          {
+             ERR("BITCH! evas_object_stack_above(), %p stack above %p, but above has smart parent, obj does not\n", obj, above);
+             return;
+          }
 	if (obj->layer != above->layer)
 	  {
+             ERR("BITCH! evas_object_stack_above(), %p stack above %p, not matching layers\n", obj, above);
 	     return;
 	  }
 	if (obj->in_layer)
 	  {
- 	     obj->layer->objects = (Evas_Object *)eina_inlist_remove(EINA_INLIST_GET(obj->layer->objects),
+	     obj->layer->objects = (Evas_Object *)eina_inlist_remove(EINA_INLIST_GET(obj->layer->objects),
 								     EINA_INLIST_GET(obj));
 	     obj->layer->objects = (Evas_Object *)eina_inlist_append_relative(EINA_INLIST_GET(obj->layer->objects),
 									      EINA_INLIST_GET(obj),
@@ -238,13 +244,13 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
 }
 
 /**
- * Stack @p obj immediately below @p below 
+ * Stack @p obj immediately below @p below
  *
  * If @p obj is a member of a smart object, then @p below must also be
  * a member of the same smart object.
  *
- * Similarly, if @p obj is not a member of smart object, @p below may 
- * not either. 
+ * Similarly, if @p obj is not a member of smart object, @p below may
+ * not either.
  *
  * @param obj the object to stack
  * @param below the object below which to stack
@@ -260,6 +266,7 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
    MAGIC_CHECK(below, Evas_Object, MAGIC_OBJ);
    return;
    MAGIC_CHECK_END();
+   if (obj == below) return;
    if (evas_object_intercept_call_stack_below(obj, below)) return;
    if (!below)
      {
@@ -275,16 +282,21 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
      {
 	if (obj->smart.parent != below->smart.parent)
 	  {
-//	     printf("BITCH! evas_object_stack_below(), %p not inside same smart as %p!\n", obj, below);
+	     ERR("BITCH! evas_object_stack_below(), %p not inside same smart as %p!", obj, below);
 	     return;
 	  }
 	evas_object_smart_member_stack_below(obj, below);
      }
    else
      {
-	if (below->smart.parent) return;
+	if (below->smart.parent)
+          {
+             ERR("BITCH! evas_object_stack_below(), %p stack below %p, but below has smart parent, obj does not\n", obj, below);
+             return;
+          }
 	if (obj->layer != below->layer)
 	  {
+             ERR("BITCH! evas_object_stack_below(), %p stack below %p, not matching layers\n", obj, below);
 	     return;
 	  }
 	if (obj->in_layer)
@@ -408,7 +420,7 @@ evas_object_bottom_get(const Evas *e)
    if (e->layers)
      {
 	Evas_Object *obj;
-	
+
 	obj = e->layers->objects;
 	while (obj)
 	  {
diff --git a/src/lib/canvas/evas_stats.c b/src/lib/canvas/evas_stats.c
index 0b85ae2..7a1702b 100644
--- a/src/lib/canvas/evas_stats.c
+++ b/src/lib/canvas/evas_stats.c
@@ -25,20 +25,20 @@ evas_cserve_stats_get(Evas_Cserve_Stats *stats)
 {
 #ifdef EVAS_CSERVE
    Op_Getstats_Reply st;
-   
+
    if (!evas_cserve_raw_stats_get(&st)) return 0;
    if (!stats) return 1;
    stats->saved_memory = st.saved_memory;
-   stats->wasted_memory - st.wasted_memory;
-   stats->saved_memory_peak - st.saved_memory_peak;
-   stats->wasted_memory_peak - st.wasted_memory_peak;
-   stats->saved_time_image_header_load - st.saved_time_image_header_load;
-   stats->saved_time_image_data_load - st.saved_time_image_data_load;
+   stats->wasted_memory = st.wasted_memory;
+   stats->saved_memory_peak = st.saved_memory_peak;
+   stats->wasted_memory_peak = st.wasted_memory_peak;
+   stats->saved_time_image_header_load = st.saved_time_image_header_load;
+   stats->saved_time_image_data_load = st.saved_time_image_data_load;
    // may expand this in future
    return 1;
 #else
    return 0;
-#endif   
+#endif
 }
 
 EAPI Eina_Bool
@@ -49,7 +49,7 @@ evas_cserve_image_cache_contents_get(Evas_Cserve_Image_Cache *cache)
    Op_Getinfo_Item *itt;
    unsigned char *p;
    int i, j;
-   
+
    if (!(info = evas_cserve_raw_info_get())) return 0;
    if (!cache)
      {
@@ -68,9 +68,8 @@ evas_cserve_image_cache_contents_get(Evas_Cserve_Image_Cache *cache)
      {
         Evas_Cserve_Image *im;
         Op_Getinfo_Item it;
-        char *file, *key, buf[512];
-        struct tm *ltm;
-        
+        char *file, *key;
+
         itt = (Op_Getinfo_Item *)p;
         memcpy(&it, itt, sizeof(Op_Getinfo_Item));
         file = p + sizeof(Op_Getinfo_Item);
@@ -122,7 +121,7 @@ evas_cserve_image_cache_contents_get(Evas_Cserve_Image_Cache *cache)
    return 1;
 #else
    return 0;
-#endif   
+#endif
 }
 
 EAPI void
@@ -130,14 +129,14 @@ evas_cserve_image_cache_contents_clean(Evas_Cserve_Image_Cache *cache)
 {
 #ifdef EVAS_CSERVE
    Evas_Cserve_Image *im;
-   
+
    EINA_LIST_FREE(cache->images, im)
      {
         if (im->file) eina_stringshare_del(im->file);
         if (im->key) eina_stringshare_del(im->key);
         free(im);
      }
-#endif   
+#endif
 }
 
 EAPI Eina_Bool
@@ -145,7 +144,7 @@ evas_cserve_config_get(Evas_Cserve_Config *config)
 {
 #ifdef EVAS_CSERVE
    Op_Getconfig_Reply conf;
-   
+
    if (!evas_cserve_raw_config_get(&conf)) return 0;
    if (!config) return 1;
    config->cache_max_usage = conf.cache_max_usage;
@@ -154,7 +153,7 @@ evas_cserve_config_get(Evas_Cserve_Config *config)
    return 1;
 #else
    return 0;
-#endif   
+#endif
 }
 
 EAPI Eina_Bool
@@ -170,7 +169,7 @@ evas_cserve_config_set(Evas_Cserve_Config *config)
    return evas_cserve_raw_config_set(&conf);
 #else
    return 0;
-#endif   
+#endif
 }
 
 EAPI void
@@ -178,5 +177,5 @@ evas_cserve_disconnect(void)
 {
 #ifdef EVAS_CSERVE
    evas_cserve_discon();
-#endif   
+#endif
 }
diff --git a/src/lib/cserve/Makefile.in b/src/lib/cserve/Makefile.in
index f953ad2..68fdc46 100644
--- a/src/lib/cserve/Makefile.in
+++ b/src/lib/cserve/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -277,17 +277,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -324,8 +327,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -404,7 +407,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/cserve/evas_cs.h b/src/lib/cserve/evas_cs.h
index d23e028..ffbefd3 100644
--- a/src/lib/cserve/evas_cs.h
+++ b/src/lib/cserve/evas_cs.h
@@ -58,19 +58,24 @@ typedef struct _Mem Mem;
 struct _Server
 {
    char *socket_path;
-   int fd;
    Eina_List *clients;
    int (*func) (void *fdata, Server *s, Client *c, int opcode, int size, unsigned char *data);
    void *data;
    pid_t pid;
    int server_id;
-   int req_from, req_to;
+   // for channel 2;
+   struct {
+      int fd;
+      int req_from, req_to;
+   } ch[2];
+   void *main_handle;
 };
 
 struct _Client
 {
    Server *server;
    unsigned char *buf;
+   Client *client_main;
    int bufsize, bufalloc;
    int fd;
    unsigned char *inbuf;
@@ -121,6 +126,7 @@ typedef struct
 {
    pid_t pid;
    int server_id;
+   void *handle;
 } Op_Init;
 typedef struct
 {
@@ -128,6 +134,9 @@ typedef struct
       int    scale_down_by;
       double dpi;
       int    w, h;
+      struct {
+         int x, y, w, h;
+      } region;
    } lopt;
 } Op_Load; // +"file""key"
 typedef struct
diff --git a/src/lib/cserve/evas_cs_client.c b/src/lib/cserve/evas_cs_client.c
index c867af4..9c106b6 100644
--- a/src/lib/cserve/evas_cs_client.c
+++ b/src/lib/cserve/evas_cs_client.c
@@ -14,7 +14,7 @@ static int connect_num = 0;
 static int cserve_discon = 0;
 
 static void
-pipe_handler(int x, siginfo_t *info, void *data)
+pipe_handler(int x __UNUSED__, siginfo_t *info __UNUSED__, void *data __UNUSED__)
 {
 }
 
@@ -49,7 +49,8 @@ server_connect(void)
    
    s = calloc(1, sizeof(Server));
    if (!s) return NULL;
-   s->fd = -1;
+   s->ch[0].fd = -1;
+   s->ch[1].fd = -1;
    snprintf(buf, sizeof(buf), "/tmp/.evas-cserve-%x", getuid());
    s->socket_path = strdup(buf);
    if (!s->socket_path)
@@ -57,18 +58,30 @@ server_connect(void)
         free(s);
         return NULL;
      }
-   s->fd = socket(AF_UNIX, SOCK_STREAM, 0);
-   if (s->fd < 0) goto error;
-   if (fcntl(s->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
-   if (setsockopt(s->fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0)
+   s->ch[0].fd = socket(AF_UNIX, SOCK_STREAM, 0);
+   if (s->ch[0].fd < 0) goto error;
+   if (fcntl(s->ch[0].fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+   if (setsockopt(s->ch[0].fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0)
      goto error;
    socket_unix.sun_family = AF_UNIX;
    strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
    socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
-   if (connect(s->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) goto error;
+   if (connect(s->ch[0].fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) goto error;
+
+   s->ch[1].fd = socket(AF_UNIX, SOCK_STREAM, 0);
+   if (s->ch[1].fd < 0) goto error;
+   if (fcntl(s->ch[1].fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+   if (setsockopt(s->ch[1].fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0)
+     goto error;
+   socket_unix.sun_family = AF_UNIX;
+   strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
+   socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
+   if (connect(s->ch[1].fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) goto error;
+   
    return s;
    error:
-   if (s->fd >= 0) close(s->fd);
+   if (s->ch[0].fd >= 0) close(s->ch[0].fd);
+   if (s->ch[1].fd >= 0) close(s->ch[1].fd);
    free(s->socket_path);
    free(s);
    return NULL;
@@ -77,13 +90,14 @@ server_connect(void)
 static void
 server_disconnect(Server *s)
 {
-   close(s->fd);
+   close(s->ch[0].fd);
+   close(s->ch[1].fd);
    free(s->socket_path);
    free(s);
 }
 
 static int
-server_send(Server *s, int opcode, int size, unsigned char *data)
+server_send(Server *s, int channel, int opcode, int size, unsigned char *data)
 {
    int ints[3];
    int num;
@@ -91,9 +105,9 @@ server_send(Server *s, int opcode, int size, unsigned char *data)
    pipe_handle(1);
    ints[0] = size;
    ints[1] = opcode;
-   s->req_to++;
-   ints[2] = s->req_to;
-   num = write(s->fd, ints, (sizeof(int) * 3));
+   s->ch[channel].req_to++;
+   ints[2] = s->ch[channel].req_to;
+   num = write(s->ch[channel].fd, ints, (sizeof(int) * 3));
    if (num < 0)
      {
         pipe_handle(0);
@@ -101,7 +115,7 @@ server_send(Server *s, int opcode, int size, unsigned char *data)
         cserve = NULL;
         return 0;
      }
-   num = write(s->fd, data, size);
+   num = write(s->ch[channel].fd, data, size);
    if (num < 0)
      {
         pipe_handle(0);
@@ -114,12 +128,12 @@ server_send(Server *s, int opcode, int size, unsigned char *data)
 }
 
 static unsigned char *
-server_read(Server *s, int *opcode, int *size)
+server_read(Server *s, int channel, int *opcode, int *size)
 {
    int ints[3], num, left;
    unsigned char *data;
    
-   num = read(s->fd, ints, sizeof(int) * 3);
+   num = read(s->ch[channel].fd, ints, sizeof(int) * 3);
    if (num != (sizeof(int) * 3))
      {
         if (cserve) server_disconnect(cserve);
@@ -129,18 +143,18 @@ server_read(Server *s, int *opcode, int *size)
    *size = ints[0];
    *opcode = ints[1];
    if ((*size < 0) || (*size > (1024 * 1024))) return NULL;
-   if (ints[2] != (s->req_from + 1))
+   if (ints[2] != (s->ch[channel].req_from + 1))
      {
-        printf("EEK! sequence number mismatch from serer with pid: %i\n"
-               "---- num %i is not 1 more than %i\n"
+        ERR("EEK! sequence number mismatch from serer with pid: %i\n"
+               "---- num %i is not 1 more than %i"
                ,
-               s->pid, ints[2], s->req_from);
+               s->pid, ints[2], s->ch[channel].req_from);
         return NULL;
      }
-   s->req_from++;
+   s->ch[channel].req_from++;
    data = malloc(*size);
    if (!data) return NULL;
-   num = read(s->fd, data, *size);
+   num = read(s->ch[channel].fd, data, *size);
    if (num < 0)
      {
         free(data);
@@ -149,7 +163,7 @@ server_read(Server *s, int *opcode, int *size)
    left = *size - num;
    while (left > 0)
      {
-        num = read(s->fd, data + (*size - left), left);
+        num = read(s->ch[channel].fd, data + (*size - left), left);
         if (num < 0)
           {
              free(data);
@@ -169,16 +183,30 @@ server_init(Server *s)
    
    msg.pid = getpid();
    msg.server_id = 0;
-   if (!server_send(s, OP_INIT, sizeof(msg), (unsigned char *)(&msg)))
+   msg.handle = NULL;
+   if (!server_send(s, 0, OP_INIT, sizeof(msg), (unsigned char *)(&msg)))
      return 0;
-   rep = (Op_Init *)server_read(s, &opcode, &size);
+   rep = (Op_Init *)server_read(s, 0, &opcode, &size);
    if ((rep) && (opcode == OP_INIT) && (size == sizeof(Op_Init)))
      {
         s->pid = rep->pid;
         s->server_id = rep->server_id;
-        free(rep);
+        s->main_handle = rep->handle;
         connect_num++;
-        return 1;
+        msg.pid = getpid();
+        msg.server_id = 1;
+        msg.handle = rep->handle;
+        free(rep);
+        if (!server_send(s, 1, OP_INIT, sizeof(msg), (unsigned char *)(&msg)))
+          return 0;
+        rep = (Op_Init *)server_read(s, 1, &opcode, &size);
+        if ((rep) && (opcode == OP_INIT) && (size == sizeof(Op_Init)))
+          {
+             free(rep);
+             return 1;
+          }
+        if (rep) free(rep);
+        return 0;
      }
    if (rep) free(rep);
    return 0;
@@ -270,6 +298,10 @@ evas_cserve_image_load(Image_Entry *ie, const char *file, const char *key, RGBA_
    msg.lopt.dpi = lopt->dpi;
    msg.lopt.w = lopt->w;
    msg.lopt.h = lopt->h;
+   msg.lopt.region.x = lopt->region.x;
+   msg.lopt.region.y = lopt->region.y;
+   msg.lopt.region.w = lopt->region.w;
+   msg.lopt.region.h = lopt->region.h;
    if (file[0] != '/')
      {
         if (getcwd(wdb, sizeof(wdb)))
@@ -286,7 +318,7 @@ evas_cserve_image_load(Image_Entry *ie, const char *file, const char *key, RGBA_
    strcpy(buf + sizeof(msg), file);
    strcpy(buf + sizeof(msg) + flen, key);
    if (!buf) return 0;
-   if (!server_send(cserve, OP_LOAD, 
+   if (!server_send(cserve, ie->channel, OP_LOAD, 
                     sizeof(msg) + flen + klen,
                     buf))
      {
@@ -295,7 +327,7 @@ evas_cserve_image_load(Image_Entry *ie, const char *file, const char *key, RGBA_
      }
    free(buf);
    if (!cserve) return 0;
-   rep = (Op_Load_Reply *)server_read(cserve, &opcode, &size);
+   rep = (Op_Load_Reply *)server_read(cserve, ie->channel, &opcode, &size);
    if ((rep) && (opcode == OP_LOAD) && (size == sizeof(Op_Load_Reply)))
      {
         ie->w = rep->image.w;
@@ -332,10 +364,10 @@ evas_cserve_image_data_load(Image_Entry *ie)
    memset(&msg, 0, sizeof(msg));
    msg.handle = ie->data1;
    msg.server_id = cserve->server_id;
-   if (!server_send(cserve, OP_LOADDATA, sizeof(msg), (unsigned char *)(&msg)))
+   if (!server_send(cserve, ie->channel, OP_LOADDATA, sizeof(msg), (unsigned char *)(&msg)))
      return 0;
    if (!cserve) return 0;
-   rep = (Op_Loaddata_Reply *)server_read(cserve, &opcode, &size);
+   rep = (Op_Loaddata_Reply *)server_read(cserve, ie->channel, &opcode, &size);
    if ((rep) && (opcode == OP_LOADDATA) && (size == sizeof(Op_Loaddata_Reply)))
      {
         if (rep->mem.size <= 0)
@@ -369,7 +401,7 @@ evas_cserve_image_free(Image_Entry *ie)
         if (ie->connect_num == connect_num)
           {
              if (ie->server_id == cserve->server_id)
-               server_send(cserve, OP_UNLOAD, sizeof(msg), (unsigned char *)(&msg));
+               server_send(cserve, ie->channel, OP_UNLOAD, sizeof(msg), (unsigned char *)(&msg));
           }
      }
    ie->data1 = NULL;
@@ -385,7 +417,7 @@ evas_cserve_image_unload(Image_Entry *ie)
    else return;
    if (!cserve) return;
    if (ie->data1 == NULL) return;
-   if (ie->connect_num != connect_num) return 0;
+   if (ie->connect_num != connect_num) return;
    memset(&msg, 0, sizeof(msg));
    msg.handle = ie->data1;
    msg.server_id = cserve->server_id;
@@ -394,7 +426,7 @@ evas_cserve_image_unload(Image_Entry *ie)
    if (ie->connect_num == connect_num)
      {
         if (ie->server_id == cserve->server_id)
-          server_send(cserve, OP_UNLOADDATA, sizeof(msg), (unsigned char *)(&msg));
+          server_send(cserve, ie->channel, OP_UNLOADDATA, sizeof(msg), (unsigned char *)(&msg));
      }
 }
 
@@ -407,7 +439,7 @@ evas_cserve_image_useless(Image_Entry *ie)
    else return;
    if (!cserve) return;
    if (ie->data1 == NULL) return;
-   if (ie->connect_num != connect_num) return 0;
+   if (ie->connect_num != connect_num) return;
    memset(&msg, 0, sizeof(msg));
    msg.handle = ie->data1;
    msg.server_id = cserve->server_id;
@@ -416,7 +448,7 @@ evas_cserve_image_useless(Image_Entry *ie)
    if (ie->connect_num == connect_num)
      {
         if (ie->server_id == cserve->server_id)
-          server_send(cserve, OP_USELESSDATA, sizeof(msg), (unsigned char *)(&msg));
+          server_send(cserve, ie->channel, OP_USELESSDATA, sizeof(msg), (unsigned char *)(&msg));
      }
 }
 
@@ -429,8 +461,8 @@ evas_cserve_raw_config_get(Op_Getconfig_Reply *config)
    if (csrve_init > 0) server_reinit();
    else return 0;
    if (!cserve) return 0;
-   if (!server_send(cserve, OP_GETCONFIG, 0, NULL)) return 0;
-   rep = (Op_Getconfig_Reply *)server_read(cserve, &opcode, &size);
+   if (!server_send(cserve, 0, OP_GETCONFIG, 0, NULL)) return 0;
+   rep = (Op_Getconfig_Reply *)server_read(cserve, 0, &opcode, &size);
    if ((rep) && (opcode == OP_GETCONFIG) && (size == sizeof(Op_Getconfig_Reply)))
      {
         memcpy(config, rep, sizeof(Op_Getconfig_Reply));
@@ -447,7 +479,7 @@ evas_cserve_raw_config_set(Op_Setconfig *config)
    if (csrve_init > 0) server_reinit();
    else return 0;
    if (!cserve) return 0;
-   if (!server_send(cserve, OP_SETCONFIG, sizeof(Op_Setconfig), (unsigned char *)config)) return 0;
+   if (!server_send(cserve, 0, OP_SETCONFIG, sizeof(Op_Setconfig), (unsigned char *)config)) return 0;
    return 1;
 }
 
@@ -460,8 +492,8 @@ evas_cserve_raw_stats_get(Op_Getstats_Reply *stats)
    if (csrve_init > 0) server_reinit();
    else return 0;
    if (!cserve) return 0;
-   if (!server_send(cserve, OP_GETSTATS, 0, NULL)) return 0;
-   rep = (Op_Getstats_Reply *)server_read(cserve, &opcode, &size);
+   if (!server_send(cserve, 0, OP_GETSTATS, 0, NULL)) return 0;
+   rep = (Op_Getstats_Reply *)server_read(cserve, 0, &opcode, &size);
    if ((rep) && (opcode == OP_GETSTATS) && (size == sizeof(Op_Getstats_Reply)))
      {
         memcpy(stats, rep, sizeof(Op_Getstats_Reply));
@@ -481,8 +513,8 @@ evas_cserve_raw_info_get(void)
    if (csrve_init > 0) server_reinit();
    else return NULL;
    if (!cserve) return NULL;
-   if (!server_send(cserve, OP_GETINFO, 0, NULL)) return NULL;
-   rep = (Op_Getinfo_Reply *)server_read(cserve, &opcode, &size);
+   if (!server_send(cserve, 0, OP_GETINFO, 0, NULL)) return NULL;
+   rep = (Op_Getinfo_Reply *)server_read(cserve, 0, &opcode, &size);
    if ((rep) && (opcode == OP_GETINFO) && (size >= sizeof(Op_Getinfo_Reply)))
      {
         return rep;
diff --git a/src/lib/cserve/evas_cs_server.c b/src/lib/cserve/evas_cs_server.c
index 7d149fa..c3fb6df 100644
--- a/src/lib/cserve/evas_cs_server.c
+++ b/src/lib/cserve/evas_cs_server.c
@@ -18,7 +18,7 @@ evas_cserve_server_add(void)
    
    s = calloc(1, sizeof(Server));
    if (!s) return NULL;
-   s->fd = -1;
+   s->ch[0].fd = -1;
    snprintf(buf, sizeof(buf), "/tmp/.evas-cserve-%x", getuid());
    s->socket_path = strdup(buf);
    if (!s->socket_path)
@@ -28,34 +28,34 @@ evas_cserve_server_add(void)
      }
    pmode = umask(~(S_IRUSR | S_IWUSR));
    start:
-   s->fd = socket(AF_UNIX, SOCK_STREAM, 0);
-   if (s->fd < 0) goto error;
-   if (fcntl(s->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
-   if (fcntl(s->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+   s->ch[0].fd = socket(AF_UNIX, SOCK_STREAM, 0);
+   if (s->ch[0].fd < 0) goto error;
+   if (fcntl(s->ch[0].fd, F_SETFL, O_NONBLOCK) < 0) goto error;
+   if (fcntl(s->ch[0].fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
    lin.l_onoff = 1;
    lin.l_linger = 0;
-   if (setsockopt(s->fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger)) < 0)
+   if (setsockopt(s->ch[0].fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger)) < 0)
      goto error;
    socket_unix.sun_family = AF_UNIX;
    strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
    socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
-   if (bind(s->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0)
+   if (bind(s->ch[0].fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0)
      {
-        if ((connect(s->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) &&
+        if ((connect(s->ch[0].fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) &&
             (unlink(s->socket_path) >= 0))
           {
-             close(s->fd);
+             close(s->ch[0].fd);
              goto start;
           }
         else
           goto error;
      }
-   if (listen(s->fd, 4096) < 0) goto error;
+   if (listen(s->ch[0].fd, 4096) < 0) goto error;
    umask(pmode);
    return s;
    error:
    umask(pmode);
-   if (s->fd >= 0) close(s->fd);
+   if (s->ch[0].fd >= 0) close(s->ch[0].fd);
    free(s->socket_path);
    free(s);
    return NULL;
@@ -75,7 +75,7 @@ evas_cserve_server_del(Server *s)
         LKD(c->lock);
         free(c);
      }
-   close(s->fd);
+   close(s->ch[0].fd);
    unlink(s->socket_path);
    free(s->socket_path);
    free(s);
@@ -90,7 +90,7 @@ server_accept(Server *s)
    size_t size_in;
    
    size_in = sizeof(struct sockaddr_in);
-   new_fd = accept(s->fd, (struct sockaddr *)&incoming, (socklen_t *)&size_in);
+   new_fd = accept(s->ch[0].fd, (struct sockaddr *)&incoming, (socklen_t *)&size_in);
    if (new_fd < 0) return;
    fcntl(new_fd, F_SETFL, O_NONBLOCK);
    fcntl(new_fd, F_SETFD, FD_CLOEXEC);
@@ -225,8 +225,8 @@ server_parse(Server *s, Client *c)
    data = c->inbuf + (sizeof(int) * 3);
    if (ints[2] != (c->req_from + 1))
      {
-        printf("EEK! sequence number mismatch from client with pid: %i\n"
-               "---- num %i is not 1 more than %i\n"
+        ERR("EEK! sequence number mismatch from client with pid: %i\n"
+               "---- num %i is not 1 more than %i"
                ,
                c->pid, ints[2], c->req_from);
         return 0;
@@ -315,8 +315,8 @@ evas_cserve_server_wait(Server *s, int timeout)
    FD_ZERO(&rset);
    FD_ZERO(&wset);
    FD_ZERO(&xset);
-   FD_SET(s->fd, &rset);
-   if (s->fd > maxfd) maxfd = s->fd;
+   FD_SET(s->ch[0].fd, &rset);
+   if (s->ch[0].fd > maxfd) maxfd = s->ch[0].fd;
    EINA_LIST_FOREACH(s->clients, l, c)
      {
         FD_SET(c->fd, &rset);
@@ -360,7 +360,7 @@ evas_cserve_server_wait(Server *s, int timeout)
              if (c->dead) dead = eina_list_append(dead, c);
           }
      }
-   if (FD_ISSET(s->fd, &rset))
+   if (FD_ISSET(s->ch[0].fd, &rset))
      {
         server_accept(s);
      }
diff --git a/src/lib/engines/Makefile.in b/src/lib/engines/Makefile.in
index 3a6861c..28316a9 100644
--- a/src/lib/engines/Makefile.in
+++ b/src/lib/engines/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -269,17 +269,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -292,8 +295,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -399,7 +402,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/engines/common/Makefile.am b/src/lib/engines/common/Makefile.am
index 4b998bc..f8669ae 100644
--- a/src/lib/engines/common/Makefile.am
+++ b/src/lib/engines/common/Makefile.am
@@ -35,6 +35,7 @@ evas_convert_rgb_16.c \
 evas_convert_rgb_24.c \
 evas_convert_rgb_32.c \
 evas_convert_rgb_8.c \
+evas_convert_grypal_6.c \
 evas_convert_yuv.c \
 evas_cpu.c \
 evas_draw_main.c \
@@ -68,7 +69,9 @@ evas_regionbuf.c \
 evas_pipe.c \
 evas_intl_utils.c \
 evas_intl/evas_intl_arabic.c \
-evas_intl/evas_intl_arabic.h
+evas_intl/evas_intl_arabic.h \
+evas_map_image.c \
+evas_map_image.h
 
 EXTRA_DIST = \
 evas_blend.h \
@@ -78,6 +81,7 @@ evas_convert_colorspace.h \
 evas_convert_gry_1.h \
 evas_convert_gry_4.h \
 evas_convert_gry_8.h \
+evas_convert_grypal_6.h \
 evas_convert_main.h \
 evas_convert_rgb_16.h \
 evas_convert_rgb_24.h \
@@ -104,7 +108,10 @@ evas_scale_smooth_scaler_noscale.c \
 evas_scale_smooth_scaler_up.c \
 evas_scale_span.h \
 evas_pipe.h \
-evas_intl_utils.h
+evas_intl_utils.h \
+evas_map_image_internal.c \
+evas_map_image_core.c \
+evas_map_image_loop.c
 
 libevas_engine_common_la_DEPENDENCIES = \
 $(top_builddir)/config.h
diff --git a/src/lib/engines/common/Makefile.in b/src/lib/engines/common/Makefile.in
index 82c3f49..2d7754f 100644
--- a/src/lib/engines/common/Makefile.in
+++ b/src/lib/engines/common/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -61,9 +61,9 @@ am_libevas_engine_common_la_OBJECTS = evas_op_copy_main_.lo \
 	evas_convert_gry_8.lo evas_convert_main.lo \
 	evas_convert_rgb_16.lo evas_convert_rgb_24.lo \
 	evas_convert_rgb_32.lo evas_convert_rgb_8.lo \
-	evas_convert_yuv.lo evas_cpu.lo evas_draw_main.lo \
-	evas_font_draw.lo evas_font_load.lo evas_font_main.lo \
-	evas_font_query.lo evas_gradient_main.lo \
+	evas_convert_grypal_6.lo evas_convert_yuv.lo evas_cpu.lo \
+	evas_draw_main.lo evas_font_draw.lo evas_font_load.lo \
+	evas_font_main.lo evas_font_query.lo evas_gradient_main.lo \
 	evas_gradient_linear.lo evas_gradient_radial.lo \
 	evas_gradient_angular.lo evas_gradient_rectangular.lo \
 	evas_gradient_sinusoidal.lo evas_gradient2_main.lo \
@@ -73,7 +73,7 @@ am_libevas_engine_common_la_OBJECTS = evas_op_copy_main_.lo \
 	evas_polygon_main.lo evas_rectangle_main.lo evas_scale_main.lo \
 	evas_scale_sample.lo evas_scale_smooth.lo evas_scale_span.lo \
 	evas_tiler.lo evas_regionbuf.lo evas_pipe.lo \
-	evas_intl_utils.lo evas_intl_arabic.lo
+	evas_intl_utils.lo evas_intl_arabic.lo evas_map_image.lo
 libevas_engine_common_la_OBJECTS =  \
 	$(am_libevas_engine_common_la_OBJECTS)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
@@ -307,17 +307,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -355,6 +358,7 @@ evas_convert_rgb_16.c \
 evas_convert_rgb_24.c \
 evas_convert_rgb_32.c \
 evas_convert_rgb_8.c \
+evas_convert_grypal_6.c \
 evas_convert_yuv.c \
 evas_cpu.c \
 evas_draw_main.c \
@@ -388,7 +392,9 @@ evas_regionbuf.c \
 evas_pipe.c \
 evas_intl_utils.c \
 evas_intl/evas_intl_arabic.c \
-evas_intl/evas_intl_arabic.h
+evas_intl/evas_intl_arabic.h \
+evas_map_image.c \
+evas_map_image.h
 
 EXTRA_DIST = \
 evas_blend.h \
@@ -398,6 +404,7 @@ evas_convert_colorspace.h \
 evas_convert_gry_1.h \
 evas_convert_gry_4.h \
 evas_convert_gry_8.h \
+evas_convert_grypal_6.h \
 evas_convert_main.h \
 evas_convert_rgb_16.h \
 evas_convert_rgb_24.h \
@@ -424,7 +431,10 @@ evas_scale_smooth_scaler_noscale.c \
 evas_scale_smooth_scaler_up.c \
 evas_scale_span.h \
 evas_pipe.h \
-evas_intl_utils.h
+evas_intl_utils.h \
+evas_map_image_internal.c \
+evas_map_image_core.c \
+evas_map_image_loop.c
 
 libevas_engine_common_la_DEPENDENCIES = \
 $(top_builddir)/config.h
@@ -437,8 +447,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -487,6 +497,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_gry_1.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_gry_4.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_gry_8.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_grypal_6.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_main.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_rgb_16.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_convert_rgb_24.Plo at am__quote@
@@ -516,6 +527,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_intl_arabic.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_intl_utils.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_line_main.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_map_image.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_op_add_main_.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_op_blend_main_.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_op_copy_main_.Plo at am__quote@
@@ -641,7 +653,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/engines/common/evas_convert_gry_8.c b/src/lib/engines/common/evas_convert_gry_8.c
index a547114..7754c86 100644
--- a/src/lib/engines/common/evas_convert_gry_8.c
+++ b/src/lib/engines/common/evas_convert_gry_8.c
@@ -5,8 +5,37 @@
 #include "evas_common.h"
 #include "evas_convert_gry_8.h"
 
+#ifdef USE_DITHER_44
+extern const DATA8 _evas_dither_44[4][4];
+#endif
+#ifdef USE_DITHER_128128
+extern const DATA8 _evas_dither_128128[128][128];
+#endif
+
 #ifdef BUILD_CONVERT_8_GRY_1
-void evas_common_convert_rgba_to_8bpp_gry_256_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+void evas_common_convert_rgba_to_8bpp_gry_256_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA32 gry8;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = (R_VAL(src_ptr));
+   g = (G_VAL(src_ptr));
+   b = (B_VAL(src_ptr));
+
+   // Y = 0.299 * R + 0.587 * G + 0.114 * B;
+   gry8 = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
+
+   *dst_ptr = gry8;
+
+   CONVERT_LOOP_END_ROT_0();
+}
 #endif
 
 #ifdef BUILD_CONVERT_8_GRY_4
@@ -14,7 +43,34 @@ void evas_common_convert_rgba_to_8bpp_gry_64_dith      (DATA32 *src, DATA8 *dst,
 #endif
 
 #ifdef BUILD_CONVERT_8_GRY_16
-void evas_common_convert_rgba_to_8bpp_gry_16_dith      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+void evas_common_convert_rgba_to_8bpp_gry_16_dith      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA32 gry8;
+   DATA8 dith, dith2;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+
+   r = (R_VAL(src_ptr));
+   g = (G_VAL(src_ptr));
+   b = (B_VAL(src_ptr));
+
+   // Y = 0.299 * R + 0.587 * G + 0.114 * B;
+   gry8 = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
+
+   if (((gry8 - gry8 * 255 / 4) >= dith) && (gry8 < 0x07)) gry8++;
+
+   *dst_ptr = gry8;
+
+   CONVERT_LOOP_END_ROT_0();
+}
 #endif
 
 #ifdef BUILD_CONVERT_8_GRY_64
diff --git a/src/lib/engines/common/evas_convert_grypal_6.c b/src/lib/engines/common/evas_convert_grypal_6.c
new file mode 100644
index 0000000..8f8bb46
--- /dev/null
+++ b/src/lib/engines/common/evas_convert_grypal_6.c
@@ -0,0 +1,27 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_grypal_6.h"
+
+#ifdef BUILD_CONVERT_8_GRAYSCALE_64
+void evas_common_convert_rgba_to_8bpp_pal_gray64(DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal)
+{
+    DATA32 *src_ptr;
+    DATA8 *dst_ptr;
+    int x, y;
+    DATA8 Y;
+
+    dst_ptr = dst;
+    CONVERT_LOOP_START_ROT_0();
+
+    /* RGB -> YUV conversion */
+    Y = ((R_VAL(src_ptr) * 76) + 
+         (G_VAL(src_ptr) * 151) + 
+         (B_VAL(src_ptr) * 29)) >> 10;
+    *dst_ptr = pal[Y];
+
+    CONVERT_LOOP_END_ROT_0();
+}
+#endif
diff --git a/src/lib/engines/common/evas_convert_gry_1.h b/src/lib/engines/common/evas_convert_grypal_6.h
similarity index 50%
copy from src/lib/engines/common/evas_convert_gry_1.h
copy to src/lib/engines/common/evas_convert_grypal_6.h
index 81c99f6..38ccda8 100644
--- a/src/lib/engines/common/evas_convert_gry_1.h
+++ b/src/lib/engines/common/evas_convert_grypal_6.h
@@ -2,12 +2,9 @@
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
 
-#ifndef _EVAS_CONVERT_GRY_1_H
-#define _EVAS_CONVERT_GRY_1_H
+#ifndef _EVAS_CONVERT_GRY_4_H
+#define _EVAS_CONVERT_GRY_4_H
 
+void evas_common_convert_rgba_to_8bpp_pal_gray64               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
 
-void evas_common_convert_rgba_to_1bpp_gry_1_dith               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
-
-
-
-#endif /* _EVAS_CONVERT_GRY_1_H */
+#endif /* _EVAS_CONVERT_GRY_4_H */
diff --git a/src/lib/engines/common/evas_convert_main.c b/src/lib/engines/common/evas_convert_main.c
index 6271464..73790fd 100644
--- a/src/lib/engines/common/evas_convert_main.c
+++ b/src/lib/engines/common/evas_convert_main.c
@@ -7,9 +7,10 @@
 #include "evas_convert_rgb_16.h"
 #include "evas_convert_rgb_24.h"
 #include "evas_convert_rgb_32.h"
+#include "evas_convert_grypal_6.h"
+#include "evas_convert_gry_8.h"
 #include "evas_convert_yuv.h"
 
-#ifdef USE_DITHER_44
 const DATA8 _evas_dither_44[4][4] =
 {
      { 0,  8,  2, 10},
@@ -17,9 +18,7 @@ const DATA8 _evas_dither_44[4][4] =
      { 3, 11,  1,  9},
      {15,  7, 13,  5}
 };
-#endif
 
-#ifdef USE_DITHER_128128
 const DATA8 _evas_dither_128128[128][128] =
 {
      { 0, 41, 23, 5, 17, 39, 7, 15, 62, 23, 40, 51, 31, 47, 9, 32, 52, 27, 57, 25, 6, 61, 27, 52, 37, 7, 40, 63, 18, 36, 10, 42, 25, 62, 45, 34, 20, 42, 37, 14, 35, 29, 50, 10, 61, 2, 40, 8, 37, 12, 58, 22, 5, 41, 10, 39, 0, 60, 11, 46, 2, 55, 38, 17, 36, 59, 13, 54, 37, 56, 8, 29, 16, 13, 63, 22, 41, 55, 7, 20, 49, 14, 23, 55, 37, 23, 19, 36, 15, 49, 23, 63, 30, 14, 38, 27, 53, 13, 22, 41, 19, 31, 7, 19, 50, 30, 49, 16, 3, 32, 56, 40, 29, 34, 8, 48, 19, 45, 4, 51, 12, 46, 35, 49, 16, 42, 12, 62 },
@@ -151,7 +150,6 @@ const DATA8 _evas_dither_128128[128][128] =
      { 19, 42, 9, 48, 2, 44, 11, 37, 48, 20, 33, 16, 55, 35, 49, 15, 37, 20, 59, 16, 53, 22, 56, 31, 50, 11, 34, 54, 16, 51, 4, 49, 33, 53, 21, 28, 56, 24, 31, 9, 52, 16, 48, 24, 44, 13, 51, 20, 31, 49, 18, 6, 34, 2, 44, 14, 47, 8, 15, 43, 13, 41, 33, 52, 20, 61, 7, 51, 34, 62, 4, 20, 36, 33, 43, 8, 46, 13, 53, 17, 45, 42, 9, 31, 52, 11, 30, 56, 13, 59, 17, 44, 27, 6, 62, 11, 43, 17, 49, 38, 26, 2, 16, 27, 58, 21, 54, 18, 26, 5, 35, 61, 43, 27, 7, 39, 14, 58, 37, 55, 20, 33, 13, 40, 62, 10, 55, 5 },
      { 51, 14, 61, 29, 59, 20, 55, 31, 0, 49, 11, 60, 3, 26, 22, 56, 0, 40, 12, 43, 41, 8, 36, 0, 17, 57, 24, 2, 46, 26, 61, 18, 0, 38, 12, 59, 6, 49, 3, 57, 19, 63, 5, 33, 18, 54, 28, 56, 0, 43, 26, 46, 63, 27, 56, 22, 27, 54, 38, 28, 63, 24, 10, 45, 0, 31, 42, 21, 12, 25, 44, 49, 59, 6, 26, 50, 3, 34, 27, 59, 0, 35, 62, 16, 4, 58, 47, 0, 43, 24, 37, 2, 54, 20, 46, 31, 0, 56, 34, 5, 55, 45, 60, 37, 0, 40, 10, 38, 63, 46, 15, 20, 0, 53, 21, 62, 30, 11, 24, 27, 40, 0, 57, 26, 3, 45, 27, 35 }
 };
-#endif
 
 EAPI void
 evas_common_convert_init(void)
@@ -165,6 +163,14 @@ evas_common_convert_func_get(DATA8 *dest, int w, int h, int depth, DATA32 rmask,
      {
 	if (depth == 8)
 	  {
+#ifdef BUILD_CONVERT_8_GRY_1
+	     if (pal_mode == PAL_MODE_NONE)
+	       return evas_common_convert_rgba_to_8bpp_gry_256_dith;
+#endif
+#ifdef BUILD_CONVERT_8_GRY_16
+	     if (pal_mode == PAL_MODE_NONE)
+	       return evas_common_convert_rgba_to_8bpp_gry_16_dith;
+#endif
 #ifdef BUILD_CONVERT_8_RGB_332
 	     if (pal_mode == PAL_MODE_RGB332)
 	       return evas_common_convert_rgba_to_8bpp_rgb_332_dith;
@@ -193,6 +199,10 @@ evas_common_convert_func_get(DATA8 *dest, int w, int h, int depth, DATA32 rmask,
 	     if (pal_mode == PAL_MODE_RGB111)
 	       return evas_common_convert_rgba_to_8bpp_rgb_111_dith;
 #endif
+#ifdef BUILD_CONVERT_8_GRAYSCALE_64
+         if (pal_mode == PAL_MODE_GRAY64)
+            return evas_common_convert_rgba_to_8bpp_pal_gray64;
+#endif
 	  }
 	if (depth == 1)
 	  {
@@ -586,7 +596,7 @@ evas_common_convert_func_get(DATA8 *dest, int w, int h, int depth, DATA32 rmask,
 	       }
 #endif
 	  }
-	printf("depth = %i mode = %i\n", depth, pal_mode);
+	INF("depth = %i mode = %i", depth, pal_mode);
 	if (depth == 8)
 	  {
 #ifdef BUILD_CONVERT_8_RGB_332
diff --git a/src/lib/engines/common/evas_convert_rgb_16.c b/src/lib/engines/common/evas_convert_rgb_16.c
index 844fe38..143f150 100644
--- a/src/lib/engines/common/evas_convert_rgb_16.c
+++ b/src/lib/engines/common/evas_convert_rgb_16.c
@@ -715,7 +715,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst,
 
    dst_ptr = (DATA16 *)dst;
 
-   fprintf(stderr, "evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180\n");
+   ERR("evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180");
 
    CONVERT_LOOP_START_ROT_180();
 
diff --git a/src/lib/engines/common/evas_cpu.c b/src/lib/engines/common/evas_cpu.c
index 68a3821..b0797f3 100644
--- a/src/lib/engines/common/evas_cpu.c
+++ b/src/lib/engines/common/evas_cpu.c
@@ -3,7 +3,6 @@
  */
 
 #include "evas_common.h"
-
 #if defined BUILD_MMX || defined BUILD_SSE
 #include "evas_mmx.h"
 #endif
@@ -222,7 +221,7 @@ evas_common_cpu_can_do(int *mmx, int *sse, int *sse2)
 	if (cpu_feature_mask & CPU_FEATURE_MMX2) do_sse = 1;
 	if (cpu_feature_mask & CPU_FEATURE_SSE) do_sse = 1;
      }
-//   printf("%i %i %i\n", do_mmx, do_sse, do_sse2);
+//   INF("%i %i %i", do_mmx, do_sse, do_sse2);
    *mmx = do_mmx;
    *sse = do_sse;
    *sse2 = do_sse2;
@@ -245,30 +244,3 @@ evas_common_cpu_end_opt(void)
 {
 }
 #endif
-
-EAPI int
-evas_common_cpu_count(void)
-{
-#ifdef BUILD_PTHREAD
-   cpu_set_t cpu;
-   int i;
-   static int cpus = 0;
-
-   if (cpus != 0) return cpus;
-
-   CPU_ZERO(&cpu);
-   if (sched_getaffinity(0, sizeof(cpu), &cpu) != 0)
-     {
-	printf("[Evas] could not get cpu affinity: %s\n", strerror(errno));
-	return 1;
-     }
-   for (i = 0; i < TH_MAX; i++)
-     {
-	if (CPU_ISSET(i, &cpu)) cpus = i + 1;
-	else break;
-     }
-   return cpus;
-#else
-   return 1;
-#endif
-}
diff --git a/src/lib/engines/common/evas_draw_main.c b/src/lib/engines/common/evas_draw_main.c
index 3c2962b..2fbce2d 100644
--- a/src/lib/engines/common/evas_draw_main.c
+++ b/src/lib/engines/common/evas_draw_main.c
@@ -30,18 +30,17 @@ evas_common_draw_context_cutouts_add(Cutout_Rects* rects,
 {
    Cutout_Rect* rect;
 
-   if (rects->max < (rects->active + 1))
+   rects->active++;
+   if (rects->max < rects->active)
      {
-	rects->max += 32;
+	rects->max += 1024;
 	rects->rects = realloc(rects->rects, sizeof(Cutout_Rect) * rects->max);
      }
-
-   rect = rects->rects + rects->active;
+   rect = rects->rects + rects->active - 1;
    rect->x = x;
    rect->y = y;
    rect->w = w;
    rect->h = h;
-   rects->active++;
 
    return rect;
 }
@@ -187,8 +186,34 @@ evas_common_draw_context_add_cutout(RGBA_Draw_Context *dc, int x, int y, int w,
 {
    if (dc->clip.use)
      {
+#if 1 // this is a bit faster
+        int xa1, xa2, xb1, xb2;
+        
+        xa1 = x;
+        xa2 = xa1 + w - 1;
+        xb1 = dc->clip.x;
+        if (xa2 < xb1) return;
+        xb2 = xb1 + dc->clip.w - 1;
+        if (xa1 >= xb2) return;
+        if (xa2 > xb2) xa2 = xb2; 
+        if (xb1 > xa1) xa1 = xb1;
+        x = xa1;
+        w = xa2 - xa1 + 1;
+        
+        xa1 = y;
+        xa2 = xa1 + h - 1;
+        xb1 = dc->clip.y;
+        if (xa2 < xb1) return;
+        xb2 = xb1 + dc->clip.h - 1; 
+        if (xa1 >= xb2) return;
+        if (xa2 > xb2) xa2 = xb2; 
+        if (xb1 > xa1) xa1 = xb1;
+        y = xa1;
+        h = xa2 - xa1 + 1;
+#else        
         RECTS_CLIP_TO_RECT(x, y, w, h,
 			   dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+#endif        
 	if ((w < 1) || (h < 1)) return;
      }
    evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h);
diff --git a/src/lib/engines/common/evas_font_draw.c b/src/lib/engines/common/evas_font_draw.c
index 9f531f0..684c0fa 100644
--- a/src/lib/engines/common/evas_font_draw.c
+++ b/src/lib/engines/common/evas_font_draw.c
@@ -2,12 +2,8 @@
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
 
-/* Internationalization (RTL and Arabic contextualizing)
- * was added by Tom Hacohen (tom at stosb.com)
- */
-
-
 #include "evas_common.h"
+#include "evas_private.h"
 #include "evas_blend_private.h"
 
 #include "evas_intl_utils.h" /*defines INTERNATIONAL_SUPPORT if possible */
@@ -55,6 +51,8 @@ evas_common_font_int_cache_glyph_get(RGBA_Font_Int *fi, FT_UInt index)
    fg->glyph_out = (FT_BitmapGlyph)fg->glyph;
    fg->index = hindex;
 
+   fg->fi = fi;
+   
    eina_hash_direct_add(fi->glyphs, &fg->index, fg);
    return fg;
 }
@@ -181,13 +179,14 @@ evas_common_font_glyph_search(RGBA_Font *fn, RGBA_Font_Int **fi_ret, int gl)
 
 
 static void
-evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const char *text,
+evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const char *in_text,
                                RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w, int ext_h, RGBA_Font_Int *fi,
                                int im_w, int im_h __UNUSED__, int use_kerning
                                )
 {
    int pen_x, pen_y;
    int chr;
+   const char *text = in_text;
    FT_Face pface = NULL;
    FT_UInt prev_index;
    DATA32 *im;
@@ -195,18 +194,17 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
    int char_index = 0; /* the index of the current char */
 
 #ifdef INTERNATIONAL_SUPPORT
-   int bidi_err = 0;
+   int len = 0;
    /*FIXME: should get the direction by parmater */
-   FriBidiCharType direction = FRIBIDI_TYPE_ON;
-   FriBidiLevel *level_list;
+   EvasIntlParType direction = FRIBIDI_TYPE_ON;
+   EvasIntlLevel *level_list;
 
    /* change the text to visual ordering and update the level list
     * for as minimum impact on the code as possible just use text as an
     * holder, will change in the future.*/
-   {
-      char *tmp = evas_intl_utf8_to_visual(text, &bidi_err, &direction, &level_list);
-      text = (tmp) ? tmp : text;
-   }
+   char *visual_text = evas_intl_utf8_to_visual(in_text, &len, &direction, NULL, NULL, &level_list);
+   text = (visual_text) ? visual_text : in_text;
+   
 #endif
 
    pen_x = x;
@@ -221,6 +219,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
 	int gl, kern;
 
 	gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+
 	if (gl == 0) break;
 	index = evas_common_font_glyph_search(fn, &fi, gl);
 	/* hmmm kerning means i can't sanely do my own cached metric tables! */
@@ -394,11 +393,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
 	  prev_index = index;
      }
 #ifdef INTERNATIONAL_SUPPORT
-   if (bidi_err >= 0)
-     {
-	free(level_list);
-	free(text);
-     }
+   if (level_list) free(level_list);
+   if (visual_text) free(visual_text);
 #endif
 }
 
diff --git a/src/lib/engines/common/evas_font_load.c b/src/lib/engines/common/evas_font_load.c
index 93d6543..f571f94 100644
--- a/src/lib/engines/common/evas_font_load.c
+++ b/src/lib/engines/common/evas_font_load.c
@@ -20,8 +20,8 @@ static Eina_Bool font_modify_cache_cb(const Eina_Hash *hash, const void *key, vo
 static Eina_Bool font_flush_free_glyph_cb(const Eina_Hash *hash, const void *key, void *data, void *fdata);
 
 static int
-_evas_font_cache_int_cmp(const RGBA_Font_Int *k1, int k1_length,
-			 const RGBA_Font_Int *k2, int k2_length)
+_evas_font_cache_int_cmp(const RGBA_Font_Int *k1, int k1_length __UNUSED__,
+			 const RGBA_Font_Int *k2, int k2_length __UNUSED__)
 {
    /* RGBA_Font_Source->name is a stringshare */
    if (k1->src->name == k2->src->name)
@@ -30,7 +30,7 @@ _evas_font_cache_int_cmp(const RGBA_Font_Int *k1, int k1_length,
 }
 
 static int
-_evas_font_cache_int_hash(const RGBA_Font_Int *key, int key_length)
+_evas_font_cache_int_hash(const RGBA_Font_Int *key, int key_length __UNUSED__)
 {
    int hash;
 
@@ -356,6 +356,8 @@ evas_common_font_int_load_init(RGBA_Font_Int *fi)
 EAPI RGBA_Font_Int *
 evas_common_font_int_load_complete(RGBA_Font_Int *fi)
 {
+   int val, dv;
+   int ret;
    int error;
 
    error = FT_New_Size(fi->src->ft.face, &(fi->ft.size));
@@ -402,6 +404,28 @@ evas_common_font_int_load_complete(RGBA_Font_Int *fi)
      }
    fi->src->current_size = fi->size;
 
+   fi->max_h = 0;
+   
+   val = (int)fi->src->ft.face->bbox.yMax;
+   if (fi->src->ft.face->units_per_EM != 0)
+     {
+        dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+        ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+     }
+   else
+     ret = val;
+   fi->max_h += ret;
+   
+   val = -(int)fi->src->ft.face->bbox.yMin;
+   if (fi->src->ft.face->units_per_EM != 0)
+     {
+        dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+        ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+     }
+   else
+     ret = val;
+   fi->max_h += ret;
+   
    return fi;
 }
 
diff --git a/src/lib/engines/common/evas_font_main.c b/src/lib/engines/common/evas_font_main.c
index ee8bf34..86ab64c 100644
--- a/src/lib/engines/common/evas_font_main.c
+++ b/src/lib/engines/common/evas_font_main.c
@@ -3,7 +3,7 @@
  */
 
 #include "evas_common.h"
-
+#include "evas_private.h"
 FT_Library      evas_ft_lib = 0;
 static int      initialised = 0;
 
@@ -136,9 +136,11 @@ evas_common_font_utf8_get_next(const unsigned char *buf, int *iindex)
    int index = *iindex, len, r;
    unsigned char d, d2, d3, d4;
 
-   d = buf[index++];
-   if (!d)
+   /* if this char is the null terminator, exit */
+   if (!buf[index])
      return 0;
+     
+   d = buf[index++];
 
    while (buf[index] && ((buf[index] & 0xc0) == 0x80))
      index++;
@@ -194,12 +196,15 @@ evas_common_font_utf8_get_prev(const unsigned char *buf, int *iindex)
     * Returns 0 to indicate there is no prev char
     */
 
+   int r;
    int index = *iindex;
-   if (index <= 0)
+   /* although when index == 0 there's no previous char, we still want to get
+    * the current char */
+   if (index < 0) 
      return 0;
 
    /* First obtain the codepoint at iindex */
-   int r = evas_common_font_utf8_get_next(buf, &index);
+   r = evas_common_font_utf8_get_next(buf, &index);
 
    /* Next advance iindex to previous codepoint */
    index = *iindex;
diff --git a/src/lib/engines/common/evas_font_query.c b/src/lib/engines/common/evas_font_query.c
index cd26915..43cec87 100644
--- a/src/lib/engines/common/evas_font_query.c
+++ b/src/lib/engines/common/evas_font_query.c
@@ -1,5 +1,7 @@
 #include "evas_common.h"
 
+#include "evas_intl_utils.h" /*defines INTERNATIONAL_SUPPORT if possible */
+
 EAPI int
 evas_common_font_query_kerning(RGBA_Font_Int* fi,
 			       FT_UInt prev, FT_UInt index,
@@ -147,11 +149,11 @@ evas_common_font_query_inset(RGBA_Font *fn, const char *text)
    fg = evas_common_font_int_cache_glyph_get(fi, index);
    if (!fg) return 0;
 /*
-   printf("fg->glyph_out->left = %i\n"
+   INF("fg->glyph_out->left = %i\n"
 	  "fi->src->ft.face->glyph->bitmap_left = %i\n"
 	  "fi->src->ft.face->glyph->metrics.horiBearingX = %i\n"
 	  "fi->src->ft.face->glyph->metrics.horiBearingY = %i\n"
-	  "fi->src->ft.face->glyph->metrics.horiAdvance = %i\n"
+	  "fi->src->ft.face->glyph->metrics.horiAdvance = %i"
 	  ,
 	  (int)fg->glyph_out->left,
 	  (int)fi->src->ft.face->glyph->bitmap_left,
@@ -218,17 +220,30 @@ evas_common_font_query_advance(RGBA_Font *fn, const char *text, int *h_adv, int
 
 /* x y w h for char at char pos */
 EAPI int
-evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int *cx, int *cy, int *cw, int *ch)
+evas_common_font_query_char_coords(RGBA_Font *fn, const char *in_text, int pos, int *cx, int *cy, int *cw, int *ch)
 {
    int use_kerning;
    int pen_x, pen_y;
    int prev_chr_end;
    int chr;
    int asc, desc;
+   int char_index = 0; /* the index of the current char */
+   int position;
+   const char *text = in_text;
+   int ret_val = 0;
    FT_UInt prev_index;
    RGBA_Font_Int *fi;
    FT_Face pface = NULL;
 
+#ifdef INTERNATIONAL_SUPPORT
+   int len = 0;
+   EvasIntlParType direction = FRIBIDI_TYPE_ON;
+   EvasIntlLevel *level_list = NULL;
+   EvasIntlStrIndex *visual_to_logical = NULL;
+   char *visual_text = evas_intl_utf8_to_visual(in_text, &len, &direction, &visual_to_logical, NULL, &level_list);
+   text = (visual_text) ? visual_text : in_text;
+#endif
+
    fi = fn->fonts->data;
 
    pen_x = 0;
@@ -239,7 +254,26 @@ evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int
    prev_chr_end = 0;
    asc = evas_common_font_max_ascent_get(fn);
    desc = evas_common_font_max_descent_get(fn);
-   for (chr = 0; text[chr];)
+
+   /* find the actual index, not the byte position */
+   for (position = 0 , chr = 0 ; in_text[chr] && chr < pos ; position++) {
+      evas_common_font_utf8_get_next((unsigned char *)in_text, &chr);
+   }
+   /* if we couldn't reach the correct position for some reason,
+    * return with an error */
+   if (chr != pos) {
+      ret_val = 0;
+      goto end;
+   }
+     
+#ifdef INTERNATIONAL_SUPPORT 
+   /* if it's an in string position (not end), get logical position */
+   if (position < len)
+      position = evas_intl_position_visual_to_logical(visual_to_logical, position);
+#endif
+
+
+   for (char_index = 0, chr = 0; text[chr]; char_index++)
      {
 	int pchr;
 	FT_UInt index;
@@ -256,9 +290,24 @@ evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int
 	/* grrr - this means font face sharing is kinda... not an option if */
 	/* you want performance */
 	if ((use_kerning) && (prev_index) && (index) &&
-	    (pface == fi->src->ft.face))
-	  if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
-	    pen_x += kern;
+	     (pface == fi->src->ft.face))
+	   {
+#ifdef INTERNATIONAL_SUPPORT
+	      /* if it's rtl, the kerning matching should be reversed, i.e prev
+	       * index is now the index and the other way around. */
+	      if (evas_intl_is_rtl_char(level_list, char_index))
+		{
+		   if (evas_common_font_query_kerning(fi, index, prev_index, &kern))
+		      pen_x += kern;
+		}
+	      else
+#endif
+              {
+
+	           if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+	              pen_x += kern;
+	      }
+           }
 
 	pface = fi->src->ft.face;
 	fg = evas_common_font_int_cache_glyph_get(fi, index);
@@ -280,34 +329,56 @@ evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int
 	     chr_w += (chr_x - prev_chr_end);
 	     chr_x = prev_chr_end;
 	  }
-	if (pchr == pos)
+	/* we need to see if the char at the visual position is the char wanted */
+	if (char_index == position)
 	  {
 	     if (cx) *cx = chr_x;
 	     if (cy) *cy = -asc;
 	     if (cw) *cw = chr_w;
 	     if (ch) *ch = asc + desc;
-	     return 1;
+	     ret_val = 1;
+	     goto end;
 	  }
 	prev_chr_end = chr_x + chr_w;
 	pen_x += fg->glyph->advance.x >> 16;
 	prev_index = index;
      }
-   return 0;
+end:
+
+#ifdef INTERNATIONAL_SUPPORT
+   if (level_list) free(level_list);
+   if (visual_to_logical) free(visual_to_logical);
+   if (visual_text) free(visual_text);
+#endif
+
+   return ret_val;
 }
 
 /* char pos of text at xy pos */
 EAPI int
-evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y, int *cx, int *cy, int *cw, int *ch)
+evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *in_text, int x, int y, int *cx, int *cy, int *cw, int *ch)
 {
    int use_kerning;
    int pen_x, pen_y;
    int prev_chr_end;
    int chr;
    int asc, desc;
+   int char_index = 0; /* the index of the current char */
+   const char *text = in_text;
+   int ret_val = -1;
    FT_UInt prev_index;
    RGBA_Font_Int *fi;
    FT_Face pface = NULL;
 
+#ifdef INTERNATIONAL_SUPPORT
+   int len = 0;
+   EvasIntlParType direction = FRIBIDI_TYPE_ON;
+   EvasIntlLevel *level_list = NULL;
+   EvasIntlStrIndex *visual_to_logical = NULL;
+   char *visual_text = evas_intl_utf8_to_visual(in_text, &len, &direction, NULL, &visual_to_logical, &level_list);
+   text = (visual_text) ? visual_text : in_text;
+#endif
+
    fi = fn->fonts->data;
 
    pen_x = 0;
@@ -318,7 +389,8 @@ evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y
    prev_chr_end = 0;
    asc = evas_common_font_max_ascent_get(fn);
    desc = evas_common_font_max_descent_get(fn);
-   for (chr = 0; text[chr];)
+   
+   for (char_index = 0, chr = 0; text[chr]; char_index++)
      {
 	int pchr;
 	FT_UInt index;
@@ -335,9 +407,24 @@ evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y
 	/* grrr - this means font face sharing is kinda... not an option if */
 	/* you want performance */
 	if ((use_kerning) && (prev_index) && (index) &&
-	    (pface == fi->src->ft.face))
-	  if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
-	    pen_x += kern;
+	     (pface == fi->src->ft.face))
+	   {
+#ifdef INTERNATIONAL_SUPPORT
+	      /* if it's rtl, the kerning matching should be reversed, i.e prev
+	       * index is now the index and the other way around. */
+	      if (evas_intl_is_rtl_char(level_list, char_index))
+		{
+		   if (evas_common_font_query_kerning(fi, index, prev_index, &kern))
+		      pen_x += kern;
+		}
+	      else
+#endif
+                {
+
+	           if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+	              pen_x += kern;
+	        }
+           }
 
 	pface = fi->src->ft.face;
 	fg = evas_common_font_int_cache_glyph_get(fi, index);
@@ -366,6 +453,107 @@ evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y
 	     if (cy) *cy = -asc;
 	     if (cw) *cw = chr_w;
 	     if (ch) *ch = asc + desc;
+#ifdef INTERNATIONAL_SUPPORT
+             {
+                /* we found the char position of the wanted char in the
+                 * visual string, we now need to translate it to the
+                 * position in the logical string */
+		int i;
+		int position = evas_intl_position_visual_to_logical(visual_to_logical, char_index);
+		 
+		/* ensure even if the list won't run */
+                for (pchr = 0, i = 0; i < position; i++)
+                  evas_common_font_utf8_get_next((unsigned char *)in_text, &pchr);
+             }
+#endif
+	     ret_val = pchr;
+	     goto end;
+	  }
+	prev_chr_end = chr_x + chr_w;
+	pen_x += fg->glyph->advance.x >> 16;
+	prev_index = index;
+     }
+     
+end:
+   
+#ifdef INTERNATIONAL_SUPPORT
+   if (level_list) free(level_list);
+   if (visual_to_logical) free(visual_to_logical);
+   if (visual_text) free(visual_text);
+#endif
+
+   return ret_val;
+}
+
+/* last char pos of text at xy pos
+ * Note: no need for special rtl handling
+ * because the string is in logical order, which is correct */
+EAPI int
+evas_common_font_query_last_up_to_pos(RGBA_Font *fn, const char *text, int x, int y)
+{
+   int use_kerning;
+   int pen_x, pen_y;
+   int prev_chr_end;
+   int chr;
+   int asc, desc;
+   FT_UInt prev_index;
+   RGBA_Font_Int *fi;
+   FT_Face pface = NULL;
+
+   fi = fn->fonts->data;
+
+   pen_x = 0;
+   pen_y = 0;
+   evas_common_font_size_use(fn);
+   use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+   prev_index = 0;
+   prev_chr_end = 0;
+   asc = evas_common_font_max_ascent_get(fn);
+   desc = evas_common_font_max_descent_get(fn);
+   for (chr = 0; text[chr];)
+     {
+	int pchr;
+	FT_UInt index;
+	RGBA_Font_Glyph *fg;
+	int chr_x, chr_y, chr_w;
+        int gl, kern;
+
+	pchr = chr;
+	gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+	if (gl == 0) break;
+	index = evas_common_font_glyph_search(fn, &fi, gl);
+	kern = 0;
+        /* hmmm kerning means i can't sanely do my own cached metric tables! */
+	/* grrr - this means font face sharing is kinda... not an option if */
+	/* you want performance */
+	if ((use_kerning) && (prev_index) && (index) &&
+	    (pface == fi->src->ft.face))
+	  if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+	    pen_x += kern;
+
+	pface = fi->src->ft.face;
+	fg = evas_common_font_int_cache_glyph_get(fi, index);
+	if (!fg) continue;
+
+	if (kern < 0) kern = 0;
+        chr_x = ((pen_x - kern) + (fg->glyph_out->left));
+	chr_y = (pen_y + (fg->glyph_out->top));
+	chr_w = fg->glyph_out->bitmap.width + kern;
+/*	if (text[chr]) */
+	  {
+	     int advw;
+
+	     advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+	     if (chr_w < advw) chr_w = advw;
+	  }
+	if (chr_x > prev_chr_end)
+	  {
+	     chr_w += (chr_x - prev_chr_end);
+	     chr_x = prev_chr_end;
+	  }
+	if ((x >= chr_x) && (x <= (chr_x + chr_w)) &&
+	    (y >= -asc) && (y <= desc))
+	  {
 	     return pchr;
 	  }
 	prev_chr_end = chr_x + chr_w;
diff --git a/src/lib/engines/common/evas_image_load.c b/src/lib/engines/common/evas_image_load.c
index 9ab8a6d..b17771e 100644
--- a/src/lib/engines/common/evas_image_load.c
+++ b/src/lib/engines/common/evas_image_load.c
@@ -37,7 +37,7 @@ static const char *loaders_name[] = {
 };
 
 static Eina_Bool
-_evas_image_foreach_loader(const Eina_Hash *hash, const char *key, Evas_Module *em, Image_Entry *ie)
+_evas_image_foreach_loader(const Eina_Hash *hash __UNUSED__, const char *key __UNUSED__, Evas_Module *em, Image_Entry *ie)
 {
    Evas_Image_Load_Func *evas_image_load_func = NULL;
 
@@ -46,9 +46,9 @@ _evas_image_foreach_loader(const Eina_Hash *hash, const char *key, Evas_Module *
    evas_module_use(em);
    if (evas_image_load_func && evas_image_load_func->file_head(ie, ie->file, ie->key))
      {
-	ie->info.module = (void*) em;
-	ie->info.loader = (void*) evas_image_load_func;
-	evas_module_ref((Evas_Module*) ie->info.module);
+	ie->info.module = (void *)em;
+	ie->info.loader = (void *)evas_image_load_func;
+	evas_module_ref((Evas_Module *)ie->info.module);
 	return EINA_FALSE;
      }
 
@@ -79,7 +79,7 @@ evas_common_load_rgba_image_module_from_file(Image_Entry *ie)
      {
 	for (i = 0, ++dot; i < (sizeof (loaders) / sizeof (struct ext_loader_s)); ++i)
 	  {
-	     if (!strcasecmp (dot, loaders[i].extention))
+	     if (!strcasecmp(dot, loaders[i].extention))
 	       {
 		  loader = loaders[i].loader;
 		  break;
@@ -108,7 +108,7 @@ evas_common_load_rgba_image_module_from_file(Image_Entry *ie)
 
    /* This is our last chance, try all known image loader. */
    /* FIXME: We could use eina recursive module search ability. */
-   for (i = 0; i < sizeof (loaders_name) / sizeof (char *); ++i)
+   for (i = 0; i < sizeof (loaders_name) / sizeof (char *); i++)
      {
 	em = evas_module_find_type(EVAS_MODULE_TYPE_IMAGE_LOADER, loaders_name[i]);
 	if (em)
@@ -165,7 +165,9 @@ evas_common_load_rgba_image_data_from_file(Image_Entry *ie)
    evas_image_load_func = ie->info.loader;
    evas_module_use((Evas_Module*) ie->info.module);
    if (!evas_image_load_func->file_data(ie, ie->file, ie->key))
-     return -1;
+     {
+        return -1;
+     }
 
 //   evas_module_unref((Evas_Module*) ie->info.module);
 //   ie->info.module = NULL;
diff --git a/src/lib/engines/common/evas_image_main.c b/src/lib/engines/common/evas_image_main.c
index aa3e988..5827bef 100644
--- a/src/lib/engines/common/evas_image_main.c
+++ b/src/lib/engines/common/evas_image_main.c
@@ -53,7 +53,7 @@ static int               _evas_common_rgba_image_dirty(Image_Entry* dst, const I
 static void
 _evas_common_rgba_image_debug(const char* context, Image_Entry *eim)
 {
-   fprintf(stderr, "%p = [%s] {%s,%s} %i [%i|%i]\n", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h);
+  DBG("%p = [%s] {%s,%s} %i [%i|%i]", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h);
 }
 
 static const Evas_Cache_Image_Func      _evas_common_image_func =
@@ -83,7 +83,7 @@ evas_common_image_init(void)
    if (!eci)
      eci = evas_cache_image_init(&_evas_common_image_func);
    reference++;
-////   printf("REF++=%i\n", reference);
+////   ERR("REF++=%i", reference);
 
 #ifdef BUILD_LOADER_EET
    eet_init();
@@ -175,7 +175,7 @@ evas_common_rgba_image_unload(Image_Entry *ie)
    if (!ie->flags.loaded) return;
    if ((!ie->info.module) && (!ie->data1)) return;
    if (!ie->file) return;
-   
+
    ie->flags.loaded = 0;
 
    if ((im->cs.data) && (im->image.data))
diff --git a/src/lib/engines/common/evas_image_scalecache.c b/src/lib/engines/common/evas_image_scalecache.c
index 0ac4995..4bd7a53 100644
--- a/src/lib/engines/common/evas_image_scalecache.c
+++ b/src/lib/engines/common/evas_image_scalecache.c
@@ -118,7 +118,7 @@ evas_common_rgba_image_scalecache_dirty(Image_Entry *ie)
         im->cache.list = eina_list_remove(im->cache.list, sci);
         if (sci->im)
           {
-//             printf(" 0- %i\n", sci->dst_w * sci->dst_h * 4);
+//             INF(" 0- %i", sci->dst_w * sci->dst_h * 4);
              LKL(cache_lock);
              evas_common_rgba_image_free(&sci->im->cache_entry);
              if (!sci->forced_unload)
@@ -185,12 +185,12 @@ _sci_fix_newest(RGBA_Image *im)
         if (sci->usage_count > im->cache.newest_usage_count)
           im->cache.newest_usage_count = sci->usage_count;
      }
-//   printf("_sci_fix_newest! -> %i\n", im->cache.newest_usage);
+//   INF("_sci_fix_newest! -> %i", im->cache.newest_usage);
 }
 
 static Scaleitem *
 _sci_find(RGBA_Image *im,
-          RGBA_Draw_Context *dc, int smooth,
+          RGBA_Draw_Context *dc __UNUSED__, int smooth,
           int src_region_x, int src_region_y,
           int src_region_w, int src_region_h,
           int dst_region_w, int dst_region_h)
@@ -233,7 +233,7 @@ _sci_find(RGBA_Image *im,
                cache_size -= sci->dst_w * sci->dst_h * 4;
              else
                cache_size -= sci->size_adjust;
-//             printf(" 1- %i\n", sci->dst_w * sci->dst_h * 4);
+//             INF(" 1- %i", sci->dst_w * sci->dst_h * 4);
              cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci);
           }
         if (max_scale_items < 1) return NULL;
@@ -291,11 +291,11 @@ _cache_prune(Scaleitem *notsci, Eina_Bool copies_only)
                cache_size -= sci->dst_w * sci->dst_h * 4;
              else
                cache_size -= sci->size_adjust;
-//             printf(" 2- %i\n", sci->dst_w * sci->dst_h * 4);
+//             INF(" 2- %i", sci->dst_w * sci->dst_h * 4);
              cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci);
              memset(sci, 0, sizeof(Eina_Inlist));
           }
-//        printf("FLUSH %i > %i\n", cache_size, max_cache_size);
+//        INF("FLUSH %i > %i", cache_size, max_cache_size);
       }
 }
 #endif
@@ -343,11 +343,11 @@ evas_common_rgba_image_scalecache_flush(void)
 }
 
 EAPI void
-evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst,
+evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst __UNUSED__,
                                           RGBA_Draw_Context *dc, int smooth,
                                           int src_region_x, int src_region_y,
                                           int src_region_w, int src_region_h,
-                                          int dst_region_x, int dst_region_y,
+                                          int dst_region_x __UNUSED__, int dst_region_y __UNUSED__,
                                           int dst_region_w, int dst_region_h)
 {
 #ifdef SCALECACHE
@@ -385,7 +385,7 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst,
         LKU(im->cache.lock);
         return;
      }
-//   printf("%10i | %4i %4i %4ix%4i -> %4i %4i %4ix%4i | %i\n",
+//   INF("%10i | %4i %4i %4ix%4i -> %4i %4i %4ix%4i | %i",
 //          (int)use_counter,
 //          src_region_x, src_region_y, src_region_w, src_region_h,
 //          dst_region_x, dst_region_y, dst_region_w, dst_region_h,
@@ -413,12 +413,12 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst,
    LKU(cache_lock);
    if (sci->usage > im->cache.newest_usage) 
      im->cache.newest_usage = sci->usage;
-//   printf("newset? %p %i > %i\n", im, 
+//   INF("newset? %p %i > %i", im, 
 //          (int)sci->usage, 
 //          (int)im->cache.newest_usage);
    if (sci->usage_count > im->cache.newest_usage_count) 
      im->cache.newest_usage_count = sci->usage_count;
-//   printf("  -------------- used %8i#, %8i@\n", (int)sci->usage, (int)sci->usage_count);
+//   INF("  -------------- used %8i#, %8i@", (int)sci->usage, (int)sci->usage_count);
    LKU(im->cache.lock);
 #endif
 }
@@ -449,7 +449,7 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst,
    i++;
    if (i > 2000)
      {
-        printf("p: %6i, h: %6i, m: %6i, n: %6i\n",
+        INF("p: %6i, h: %6i, m: %6i, n: %6i",
                pops, hits, misses, noscales);
         i = 0;
      }
@@ -552,7 +552,7 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst,
      }
    if (sci->populate_me)
      {
-//        printf("##! populate!\n");
+//        INF("##! populate!");
         sci->im = evas_common_image_new
           (dst_region_w, dst_region_h, im->cache_entry.flags.alpha);
         if (sci->im)
@@ -566,7 +566,7 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst,
 //             pops++;
              if (!ct)
                {
-                  // FIXME: static ct - nver can free on shutdown? not a leak
+                  // FIXME: static ct - never can free on shutdown? not a leak
                   // or real harm - just annoying valgrind bitch
                   ct = evas_common_draw_context_new();
                   evas_common_draw_context_set_render_op(ct, _EVAS_RENDER_COPY);
@@ -625,7 +625,7 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst,
                {
                   cache_size += sci->dst_w * sci->dst_h * 4;
                }
-//             printf(" + %i @ flop: %i (%ix%i)\n", 
+//             INF(" + %i @ flop: %i (%ix%i)", 
 //                    sci->dst_w * sci->dst_h * 4, sci->flop, 
 //                    sci->dst_w, sci->dst_h);
              cache_list = eina_inlist_append(cache_list, (Eina_Inlist *)sci);
@@ -645,7 +645,7 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst,
           {
              if (sci->flop > 0) sci->flop -= FLOP_DEL;
           }
-//        printf("use cached!\n");
+//        INF("use cached!");
         evas_common_scale_rgba_in_to_out_clip_sample
           (sci->im, dst, dc,
            0, 0,
@@ -653,7 +653,7 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst,
            dst_region_x, dst_region_y, 
            dst_region_w, dst_region_h);
 //        hits++;
-//        printf("check %p %i < %i\n", 
+//        INF("check %p %i < %i", 
 //               im,
 //               (int)im->cache.orig_usage, 
 //               (int)im->cache.newest_usage);
diff --git a/src/lib/engines/common/evas_intl/evas_intl_arabic.c b/src/lib/engines/common/evas_intl/evas_intl_arabic.c
index 9c7c0ac..b5d1e9d 100644
--- a/src/lib/engines/common/evas_intl/evas_intl_arabic.c
+++ b/src/lib/engines/common/evas_intl/evas_intl_arabic.c
@@ -1,7 +1,3 @@
-/* Authors:
- *	Tom Hacohen (tom at stsob.com)
- */
-
 #include "../evas_intl_utils.h"
 
 #ifdef ARABIC_SUPPORT
@@ -118,7 +114,7 @@ evas_intl_arabic_to_context(FriBidiChar *text)
 
    /* check for empty string */
    if (!*text)
-     return;
+     return 0;
 
    len = _evas_intl_arabic_text_to_isolated(text);
    /*FIXME: make it skip vowels */
diff --git a/src/lib/engines/common/evas_intl/evas_intl_arabic.h b/src/lib/engines/common/evas_intl/evas_intl_arabic.h
index 182f4d7..6e75edc 100644
--- a/src/lib/engines/common/evas_intl/evas_intl_arabic.h
+++ b/src/lib/engines/common/evas_intl/evas_intl_arabic.h
@@ -1,7 +1,9 @@
 #ifndef _EVAS_INTL_ARABIC
 #define _EVAS_INTL_ARABIC
 
+#include "evas_intl_utils.h"
+
 int
-evas_intl_arabic_to_context(FriBidiChar *text);
+evas_intl_arabic_to_context(EvasIntlChar *text);
 
 #endif
diff --git a/src/lib/engines/common/evas_intl_utils.c b/src/lib/engines/common/evas_intl_utils.c
index 1618a2c..3395995 100644
--- a/src/lib/engines/common/evas_intl_utils.c
+++ b/src/lib/engines/common/evas_intl_utils.c
@@ -1,23 +1,27 @@
-/* Authors:
- *	Tom Hacohen (tom at stsob.com)
- */
-
 #include <string.h>
 #include <stdlib.h>
 
 #include "evas_common.h"
 #include "evas_intl_utils.h"
 
-#ifdef USE_FRIBIDI
+#ifdef INTERNATIONAL_SUPPORT
 #include <fribidi/fribidi.h>
 
 #define UTF8_BYTES_PER_CHAR 4
 
 /* FIXME: fribidi_utf8_to_unicode should use char len and not byte len!*/
 char *
-evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direction, FriBidiLevel **embedding_level_list)
+evas_intl_utf8_to_visual(const char *text,
+			int *ret_len,
+			EvasIntlParType *direction,
+			EvasIntlStrIndex **position_L_to_V_list,
+			EvasIntlStrIndex **position_V_to_L_list,
+			EvasIntlLevel **embedding_level_list)
 {
    FriBidiChar *unicode_in, *unicode_out;
+   EvasIntlStrIndex *tmp_L_to_V_list = NULL;
+   EvasIntlStrIndex *tmp_V_to_L_list = NULL;
+   EvasIntlLevel *tmp_level_list = NULL;
    char *text_out;
    size_t len;
    size_t byte_len;
@@ -27,15 +31,6 @@ evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direct
 
    len = evas_string_char_len_get(text);
 
-   /* if there's nothing to do, return text
-    * one char draws are quite common */
-   if (len <= 1)
-     {
-	*ret_len = len;
-	*embedding_level_list = NULL;
-	return strdup(text);
-     }
-
    byte_len = strlen(text); /* we need the actual number of bytes, not number of chars */
 
    unicode_in = (FriBidiChar *)alloca(sizeof(FriBidiChar) * (len + 1));
@@ -46,37 +41,64 @@ evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direct
      }
 
    len = fribidi_utf8_to_unicode(text, byte_len, unicode_in);
+   unicode_in[len] = 0;
 
    unicode_out = (FriBidiChar *)alloca(sizeof(FriBidiChar) * (len + 1));
    if (!unicode_out)
      {
-	len = -2;
-	goto error1;
-     }
-
-   *embedding_level_list = (FriBidiLevel *)malloc(sizeof(FriBidiLevel) * len);
-   if (!*embedding_level_list)
-     {
-	len = -3;
+	len = -1;
 	goto error2;
      }
 
+    if (embedding_level_list)
+       {
+          *embedding_level_list = (EvasIntlLevel *)malloc(sizeof(EvasIntlLevel) * len);
+          if (!*embedding_level_list)
+            {
+ 	      len = -1;
+ 	      goto error3;
+            }
+ 	 tmp_level_list = *embedding_level_list;
+       }
+ 
+     if (position_L_to_V_list)
+       {
+          *position_L_to_V_list = (EvasIntlStrIndex *)malloc(sizeof(EvasIntlStrIndex) * len);
+          if (!*position_L_to_V_list)
+            {
+ 	      len = -1;
+ 	      goto error4;
+            }
+ 	 tmp_L_to_V_list = *position_L_to_V_list;
+       }
+ 
+     if (position_V_to_L_list)
+       {
+          *position_V_to_L_list = (EvasIntlStrIndex *)malloc(sizeof(EvasIntlStrIndex) * len);
+          if (!*position_V_to_L_list)
+            {
+ 	      len = -1;
+ 	      goto error5;
+            }
+ 	 tmp_V_to_L_list = *position_V_to_L_list;
+       }
+
 #ifdef ARABIC_SUPPORT
    /* fix arabic context */
    evas_intl_arabic_to_context(unicode_in);
 #endif
    if (!fribidi_log2vis(unicode_in, len, direction,
-	    unicode_out, NULL, NULL, *embedding_level_list))
+         unicode_out, tmp_L_to_V_list, tmp_V_to_L_list, tmp_level_list))
      {
-	len = -4;
-	goto error2;
+ 	len = -2;
+ 	goto error5;
      }
 
    text_out = malloc(UTF8_BYTES_PER_CHAR * len + 1);
    if (!text_out)
      {
-	len = -5;
-	goto error2;
+ 	len = -1;
+ 	goto error6;
      }
 
    fribidi_unicode_to_utf8(unicode_out, len, text_out);
@@ -84,9 +106,20 @@ evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direct
    *ret_len = len;
    return text_out;
 
-   /* ERROR HANDLING */
-error2:
+/* ERROR HANDLING */
+error6:
+   free(unicode_out);
+error5:
+   free(*position_V_to_L_list);
+   *position_V_to_L_list = NULL;
+error4:
+   free(*position_L_to_V_list);
+   *position_L_to_V_list = NULL;
+error3:
    free(*embedding_level_list);
+   *embedding_level_list = NULL;
+error2:
+   free(unicode_in);
 error1:
 
    *ret_len = len;
@@ -94,7 +127,7 @@ error1:
 }
 
 int
-evas_intl_is_rtl_char(FriBidiLevel *embedded_level_list, FriBidiStrIndex i)
+evas_intl_is_rtl_char(EvasIntlLevel *embedded_level_list, EvasIntlStrIndex i)
 {
    if(embedded_level_list || i < 0)
      return 0;
diff --git a/src/lib/engines/common/evas_intl_utils.h b/src/lib/engines/common/evas_intl_utils.h
index 4c0e61d..070c09b 100644
--- a/src/lib/engines/common/evas_intl_utils.h
+++ b/src/lib/engines/common/evas_intl_utils.h
@@ -4,25 +4,44 @@
 #include "config.h"
 
 #ifdef HAVE_FRIBIDI
-#define USE_FRIBIDI 1
+#define USE_FRIBIDI
 #define INTERNATIONAL_SUPPORT
 #endif
 
 #ifdef USE_FRIBIDI
 #include <fribidi/fribidi.h>
 
+/* abstract fribidi */
+typedef FriBidiChar	EvasIntlChar;
+typedef FriBidiCharType	EvasIntlParType;
+typedef FriBidiStrIndex EvasIntlStrIndex;
+typedef FriBidiLevel	EvasIntlLevel;
+
+
 /* whether should fix arabic specifix issues */
-#define ARABIC_SUPPORT 1
+#define ARABIC_SUPPORT
 
 #ifdef ARABIC_SUPPORT
 #include "evas_intl/evas_intl_arabic.h"
 #endif
 
+#define evas_intl_position_logical_to_visual(list, position) \
+		(list) ? list[position] : position;
+
+#define evas_intl_position_visual_to_logical(list, position) \
+		(list) ? list[position] : position;
+				
+
 int
-evas_intl_is_rtl_char(FriBidiLevel *embedded_level_list, FriBidiStrIndex i);
+evas_intl_is_rtl_char(EvasIntlLevel *embedded_level_list, EvasIntlStrIndex i);
 
 char *
-evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direction, FriBidiLevel **embedding_level_list);
+evas_intl_utf8_to_visual(const char *text,
+			int *ret_len,
+			EvasIntlParType *direction,
+			EvasIntlStrIndex **position_L_to_V_list,
+			EvasIntlStrIndex **position_V_to_L_list,
+			EvasIntlLevel **embedding_level_list);
 #endif
 
 #endif
diff --git a/src/lib/engines/common/evas_line_main.c b/src/lib/engines/common/evas_line_main.c
index d036ff3..a49d8f4 100644
--- a/src/lib/engines/common/evas_line_main.c
+++ b/src/lib/engines/common/evas_line_main.c
@@ -216,7 +216,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
 	p0_in = (IN_RECT(x0, y0, clx, cly, clw, clh) ? 1 : 0);
 	p1_in = (IN_RECT(x1, y1, clx, cly, clw, clh) ? 1 : 0);
 
-	if (dx > 0)
+	if (dy > 0)
 	  {
 	    if (!p0_in)
 	      {
@@ -247,25 +247,25 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
 	  {
 	    if (!p0_in)
 	      {
-		x0 = x0 - (ty - y0);
-		y0 = ty;
-		if (x0 < lx) return;
-		if (x0 > rx)
+		x0 = x0 - (by - y0);
+		y0 = by;
+		if (x0 > rx) return;
+		if (x0 < lx)
 		  {
-		    y0 = y0 - (rx - x0);
-		    x0 = rx;
+		    y0 = y0 - (lx - x0);
+		    x0 = lx;
 		    if ((y0 < ty) || (y0 > by)) return;
 		  }
 	      }
 	    if (!p1_in)
 	      {
-		x1 = x0 - (by - y0);
-		y1 = by;
-		if (x1 > rx) return;
-		if (x1 < lx)
+		x1 = x0 - (ty - y0);
+		y1 = ty;
+		if (x1 < lx) return;
+		if (x1 > rx)
 		  {
-		    y1 = y0 - (lx - x0);
-		    x1 = lx;
+		    y1 = y0 - (rx - x0);
+		    x1 = rx;
 		    if ((y1 < ty) || (y1 > by)) return;
 		  }
 	      }
diff --git a/src/lib/engines/common/evas_map_image.c b/src/lib/engines/common/evas_map_image.c
new file mode 100644
index 0000000..14a3c02
--- /dev/null
+++ b/src/lib/engines/common/evas_map_image.c
@@ -0,0 +1,405 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+#ifdef BUILD_SCALE_SMOOTH
+# ifdef BUILD_MMX
+#  undef SCALE_USING_MMX
+#  define SCALE_USING_MMX
+# endif
+#endif
+
+#define FPI 8
+#define FPI1 (1 << (FPI))
+#define FPIH (1 << (FPI - 1))
+
+#define FPFPI1 (1 << (FP + FPI))
+
+typedef struct _Line Line;
+typedef struct _Span Span;
+
+struct _Span
+{
+   int x1, x2;
+   FPc o1, o2, z1, z2;
+   FPc  u[2], v[2];
+   DATA32 col[2];
+};
+
+struct _Line
+{
+   Span span[2];
+};
+
+static FPc
+_interp(int x1, int x2, int p, FPc u1, FPc u2)
+{
+   FPc u;
+
+   x2 -= x1;
+   p -= x1;
+   u = u2 - u1;
+   u = (u * p) / (x2 + 1);
+   // FIXME: do z persp
+   return u1 + u;
+}
+
+static DATA32
+_interp_col(int x1, int x2, int p, DATA32 col1, DATA32 col2)
+{
+   DATA32 col;
+   
+   x2 -= x1;
+   p -= x1;
+   p = (p << 8) / (x2 + 1);
+   // FIXME: do z persp
+   return INTERP_256(p, col2, col1);
+}
+
+static void
+_limit(Span *s, int c1, int c2, int nocol)
+{
+   if (s->x1 < c1)
+     {
+        s->u[0] = _interp(s->x1, s->x2, c1, s->u[0], s->u[1]);
+        s->v[0] = _interp(s->x1, s->x2, c1, s->v[0], s->v[1]);
+        if (!nocol)
+          s->col[0] = _interp_col(s->x1, s->x2, c1, s->col[0], s->col[1]);
+        s->x1 = c1;
+        s->o1 = c1 << FP;
+        // FIXME: do s->z1
+     }
+   if (s->x2 > c2)
+     {
+        s->u[1] = _interp(s->x1, s->x2, c2, s->u[0], s->u[1]);
+        s->v[1] = _interp(s->x1, s->x2, c2, s->v[0], s->v[1]);
+        if (!nocol)
+          s->col[1] = _interp_col(s->x1, s->x2, c2, s->col[0], s->col[1]);
+        s->x2 = c2;
+        s->o2 = c2 << FP;
+        // FIXME: do s->z2
+     }
+}
+
+// 12.63 % of time - this can improve
+static void
+_calc_spans(RGBA_Map_Point *p, Line *spans, int ystart, int yend, int cx, int cy, int cw, int ch)
+{
+   int i, y, yp;
+   int py[4];
+   int edge[4][4], edge_num, swapped, order[4];
+   FPc uv[4][2], u, v, x, h, t;
+   DATA32 col[4];
+   
+#if 1 // maybe faster on x86?
+   for (i = 0; i < 4; i++) py[i] = p[i].y >> FP;
+# define PY(x) (py[x])   
+#else
+# define PY(x) (p[x].y >> FP) 
+#endif
+   
+   if ((PY(0) == PY(1)) && (PY(0) == PY(2)) && (PY(0) == PY(3)))
+     {
+        int leftp, rightp;
+        int nocol = 1;
+        
+        leftp = rightp = 0;
+        for (i = 1; i < 4; i++)
+          {
+             if (p[i].x < p[leftp].x) leftp = i;
+             if (p[i].x > p[rightp].x) rightp = i;
+             if (p[i].col != 0xffffffff) nocol = 0;
+          }
+        for (y = ystart; y <= yend; y++)
+          {
+             yp = y - ystart;
+             if (y == PY(0))
+               {
+                  i = 0;
+                  spans[yp].span[i].x1 = p[leftp].x >> FP;
+                  spans[yp].span[i].o1 = p[leftp].x;
+                  spans[yp].span[i].u[0] = p[leftp].u;
+                  spans[yp].span[i].v[0] = p[leftp].v;
+                  spans[yp].span[i].col[0] = p[leftp].col;
+                  spans[yp].span[i].x2 = p[rightp].x >> FP;
+                  spans[yp].span[i].o2 = p[rightp].x;
+                  spans[yp].span[i].u[1] = p[rightp].u;
+                  spans[yp].span[i].v[1] = p[rightp].v;
+                  spans[yp].span[i].col[1] = p[rightp].col;
+                  if ((spans[yp].span[i].x1 >= (cx + cw)) ||
+                      (spans[yp].span[i].x2 < cx))
+                    spans[yp].span[i].x1 = -1;
+                  else
+                    {
+                       _limit(&(spans[yp].span[i]), cx, cx + cw, nocol);
+                       i++;
+                       spans[yp].span[i].x1 = -1;
+                    }
+               }
+             else
+               spans[yp].span[0].x1 = -1;
+          }
+        return;
+     }
+   for (y = ystart; y <= yend; y++)
+     {
+        int nocol = 1;
+        
+        yp = y - ystart;
+        edge_num = 0;
+        for (i = 0; i < 4; i++)
+          {
+             if ((PY(i) <= y) && (PY((i + 1) % 4) > y))
+               {
+                  edge[edge_num][0] = i;
+                  edge[edge_num][1] = (i + 1) % 4;
+                  edge_num++;
+               }
+             else if ((PY((i + 1) % 4) <= y) && (PY(i) > y))
+               {
+                  edge[edge_num][0] = (i + 1) % 4;
+                  edge[edge_num][1] = i;
+                  edge_num++;
+               }
+             if (p[i].col != 0xffffffff) nocol = 0;
+          }
+        // calculate line x points for each edge
+        for (i = 0; i < edge_num; i++)
+          {
+             int e1 = edge[i][0];
+             int e2 = edge[i][1];
+             FPc t256;
+             
+             h = (p[e2].y - p[e1].y) >> FP; // height of edge
+             t = (((y << FP) + (FP1 - 1)) - p[e1].y) >> FP;
+             x = p[e2].x - p[e1].x;
+             x = p[e1].x + ((x * t) / h);
+
+/*             
+             // FIXME: 3d accuracy here
+             // XXX t needs adjusting. above its a linear interp point
+             // only.
+             // 
+             // // FIXME: do in fixed pt. reduce divides
+             evas_common_cpu_end_opt();
+             // 
+             int foc = 512, z0 = 0, px = 320, py = 240; // FIXME: need from map points
+             //
+             float focf, hf;
+             float z1, z2, y1, y2, dz, dy, zt, dydz, yt;
+             
+             focf = foc;
+             hf = h;
+             
+             // adjust for fixed point and focal length and z0 for map
+             z1 = (p[e1].z >> FP) - z0 + foc;
+             z2 = (p[e2].z >> FP) - z0 + foc;
+             // deltas
+             dz = z1 - z2;
+             
+             if (dz != 0)
+               {
+                  int pt;
+                  
+                  // adjust for perspective point (being 0 0)
+                  y1 = (p[e1].y >> FP) - py;
+                  y2 = (p[e2].y >> FP) - py;
+                  
+                  // correct for x &y not being in world coords - screen coords
+                  y1 = (y1 * z1) / focf;
+                  y2 = (y2 * z2) / focf;
+                  
+                  // deltas
+                  dy = y1 - y2;
+                  
+                  yt = y - py;
+                  dydz = dy / dz;
+
+                  zt = (y2 - (dydz * z2)) / ((yt / focf) - dydz);
+
+                  pt = t;
+                  t = ((z1 - zt) * hf) / dz;
+               }
+ */
+             u = p[e2].u - p[e1].u;
+             u = p[e1].u + ((u * t) / h);
+             
+             v = p[e2].v - p[e1].v;
+             v = p[e1].v + ((v * t) / h);
+
+             // FIXME: 3d accuracy for color too
+             t256 = (t << 8) / h; // maybe * 255?
+             col[i] = INTERP_256(t256, p[e2].col, p[e1].col);
+             
+             // FIXME: store z persp
+             uv[i][1] = v;
+             uv[i][0] = u;
+             edge[i][2] = x >> FP;
+             edge[i][3] = x;
+             // also fill in order
+             order[i] = i;
+          }
+        // sort edges from left to right - bubble. its a small list!
+        do
+          {
+             swapped = 0;
+             for (i = 0; i < (edge_num - 1); i++)
+               {
+                  if (edge[order[i]][2] > edge[order[i + 1]][2])
+                    {
+                       t = order[i];
+                       order[i] = order[i + 1];
+                       order[i + 1] = t;
+                       swapped = 1;
+                    }
+               }
+          }
+        while (swapped);
+        if (edge_num == 2)
+          {
+             i = 0;
+             spans[yp].span[i].x1 = edge[order[0]][2];
+             spans[yp].span[i].o1 = edge[order[0]][3];
+             spans[yp].span[i].u[0] = uv[order[0]][0];
+             spans[yp].span[i].v[0] = uv[order[0]][1];
+             spans[yp].span[i].col[0] = col[order[0]];
+             
+             spans[yp].span[i].x2 = edge[order[1]][2];
+             spans[yp].span[i].o2 = edge[order[1]][3];
+             spans[yp].span[i].u[1] = uv[order[1]][0];
+             spans[yp].span[i].v[1] = uv[order[1]][1];
+             spans[yp].span[i].col[1] = col[order[1]];
+             if ((spans[yp].span[i].x1 >= (cx + cw)) ||
+                 (spans[yp].span[i].x2 < cx))
+               spans[yp].span[i].x1 = -1;
+             else
+               {
+                  _limit(&(spans[yp].span[i]), cx, cx + cw, nocol);
+                  i++;
+                  spans[yp].span[i].x1 = -1;
+               }
+          }
+        else if (edge_num == 4)
+          {
+             i = 0;
+             spans[yp].span[i].x1 = edge[order[0]][2];
+             spans[yp].span[i].u[0] = uv[order[0]][0];
+             spans[yp].span[i].v[0] = uv[order[0]][1];
+             spans[yp].span[i].col[0] = col[order[0]];
+             
+             spans[yp].span[i].x2 = edge[order[1]][2];
+             spans[yp].span[i].u[1] = uv[order[1]][0];
+             spans[yp].span[i].v[1] = uv[order[1]][1];
+             spans[yp].span[i].col[1] = col[order[1]];
+             if ((spans[yp].span[i].x1 >= (cx + cw)) ||
+                 (spans[yp].span[i].x2 < cx))
+               spans[yp].span[i].x1 = -1;
+             else
+               {
+                  _limit(&(spans[yp].span[i]), cx, cx + cw, nocol);
+                  i++;
+               }
+             spans[yp].span[i].x1 = edge[order[2]][2];
+             spans[yp].span[i].u[0] = uv[order[2]][0];
+             spans[yp].span[i].v[0] = uv[order[2]][1];
+             spans[yp].span[i].col[0] = col[order[2]];
+             
+             spans[yp].span[i].x2 = edge[order[3]][2];
+             spans[yp].span[i].u[1] = uv[order[3]][0];
+             spans[yp].span[i].v[1] = uv[order[3]][1];
+             spans[yp].span[i].col[1] = col[order[3]];
+             if ((spans[yp].span[i].x1 >= (cx + cw)) ||
+                 (spans[yp].span[i].x2 < cx))
+               spans[yp].span[i].x1 = -1;
+             else
+               {
+                  int l = cx;
+                  
+                  if (i > 0) l = spans[yp].span[i - 1].x2;
+                  _limit(&(spans[yp].span[i]), l, cx + cw, nocol);
+               }
+          }
+        else
+          spans[yp].span[0].x1 = -1;
+     }
+}
+
+#ifdef BUILD_SCALE_SMOOTH
+# ifdef BUILD_MMX
+#  undef FUNC_NAME
+#  define FUNC_NAME evas_common_map4_rgba_internal_mmx
+#  undef SCALE_USING_MMX
+#  define SCALE_USING_MMX
+#  include "evas_map_image_internal.c"
+# endif
+# ifdef BUILD_C
+#  undef FUNC_NAME
+#  define FUNC_NAME evas_common_map4_rgba_internal
+#  undef SCALE_USING_MMX
+#  include "evas_map_image_internal.c"
+# endif
+#endif
+
+EAPI void
+evas_common_map4_rgba(RGBA_Image *src, RGBA_Image *dst,
+                      RGBA_Draw_Context *dc,
+                      RGBA_Map_Point *p, 
+                      int smooth, int level)
+{
+#ifdef BUILD_MMX
+   int mmx, sse, sse2;
+#endif
+   Cutout_Rects *rects;
+   Cutout_Rect  *r;
+   int          c, cx, cy, cw, ch;
+   int          i;
+   
+   if (src->cache_entry.space == EVAS_COLORSPACE_ARGB8888)
+     evas_cache_image_load_data(&src->cache_entry);
+   evas_common_image_colorspace_normalize(src);
+   if (!src->image.data) return;
+#ifdef BUILD_MMX
+   evas_common_cpu_can_do(&mmx, &sse, &sse2);
+#endif   
+   if (!dc->cutout.rects)
+     {
+#ifdef BUILD_MMX
+        if (mmx)
+          evas_common_map4_rgba_internal_mmx(src, dst, dc, p, smooth, level);
+        else
+#endif
+#ifdef BUILD_C
+          evas_common_map4_rgba_internal(src, dst, dc, p, smooth, level);
+#endif
+        return;
+     }
+   /* save out clip info */
+   c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h;
+   evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   /* our clip is 0 size.. abort */
+   if ((dc->clip.w <= 0) || (dc->clip.h <= 0))
+     {
+        dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+        return;
+     }
+   rects = evas_common_draw_context_apply_cutouts(dc);
+   for (i = 0; i < rects->active; ++i)
+     {
+        r = rects->rects + i;
+        evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
+#ifdef BUILD_MMX
+        if (mmx)
+          evas_common_map4_rgba_internal_mmx(src, dst, dc, p, smooth, level);
+        else
+#endif
+#ifdef BUILD_C
+          evas_common_map4_rgba_internal(src, dst, dc, p, smooth, level);
+#endif        
+     }
+   evas_common_draw_context_apply_clear_cutouts(rects);
+   /* restore clip info */
+   dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+}
diff --git a/src/lib/engines/common/evas_map_image.h b/src/lib/engines/common/evas_map_image.h
new file mode 100644
index 0000000..24209db
--- /dev/null
+++ b/src/lib/engines/common/evas_map_image.h
@@ -0,0 +1,34 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_MAP_H
+#define _EVAS_MAP_H
+
+typedef struct _RGBA_Map_Point RGBA_Map_Point;
+
+// all coords are 20.12
+// fp type - an int for now
+typedef int FPc;
+// fp # of bits of float accuracy
+#define FP 8
+// fp half (half of an fp unit)
+#define FPH (1 << (FP - 1))
+// one fp unit
+#define FP1 (1 << (FP))
+
+struct _RGBA_Map_Point
+{
+   FPc x, y; // x, y screenspace
+   FPc z; // z in world space. optional
+   FPc u, v; // u, v in tex coords
+   DATA32 col; // color at this point
+};
+
+EAPI void
+evas_common_map4_rgba(RGBA_Image *src, RGBA_Image *dst,
+                      RGBA_Draw_Context *dc,
+                      RGBA_Map_Point *points,
+                      int smooth, int level);
+
+#endif /* _EVAS_MAP_H */
diff --git a/src/lib/engines/common/evas_map_image_core.c b/src/lib/engines/common/evas_map_image_core.c
new file mode 100644
index 0000000..c6c7121
--- /dev/null
+++ b/src/lib/engines/common/evas_map_image_core.c
@@ -0,0 +1,198 @@
+/*
+  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+  */
+//#undef SCALE_USING_MMX
+{
+   if (smooth)
+     {
+        for (y = ystart; y <= yend; y++)
+          {
+             int x, w, ww;
+             FPc u, v, ud, vd, dv;
+             DATA32 *d, *s, *so[4], val1, val2;
+#ifdef COLMUL             
+             FPc cv, cd, cc; // col
+             DATA32 c1, c2; // col
+#endif             
+             Line *line;
+             
+#ifdef SCALE_USING_MMX
+             pxor_r2r(mm0, mm0);
+             MOV_A2R(ALPHA_255, mm5)
+#endif
+               
+             line = &(spans[y - ystart]);
+             for (i = 0; i < 2; i++)
+               {
+                  Span *span;
+                  
+                  span = &(line->span[i]);
+                  if (span->x1 >= 0)
+                    {
+                       long long tl;
+                       
+                       x = span->x1;
+                       w = (span->x2 - x);
+                       if (w <= 0) continue;
+                       dv = (span->o2 - span->o1);
+                       if (dv <= 0) continue;
+                       
+                       ww = w;
+                       u = span->u[0] << FPI;
+                       v = span->v[0] << FPI;
+                       ud = ((span->u[1] << FPI) - u) / w;
+                       vd = ((span->v[1] << FPI) - v) / w;
+                       tl = (long long)ud * (w << FP);
+                       tl = tl / dv;
+                       ud = tl;
+                       u -= (ud * (span->o1 - (span->x1 << FP))) / FP1;
+                       
+                       tl = (long long)vd * (w << FP);
+                       tl = tl / dv;
+                       vd = tl;
+                       v -= (vd * (span->o1 - (span->x1 << FP))) / FP1;
+                       
+                       if (ud < 0) u -= 1;
+                       if (vd < 0) v -= 1;
+                       
+                       if (direct)
+                         d = dst->image.data + (y * dst->cache_entry.w) + x;
+                       else
+                         d = buf;
+
+#define SMOOTH 1                       
+#ifdef COLMUL             
+                       c1 = span->col[0]; // col
+                       c2 = span->col[1]; // col
+                       cv = 0; // col
+                       cd = (255 << 16) / w; // col
+                       
+                       if (c1 == c2)
+                         {
+                            if (c1 == 0xffffffff)
+                              {
+#endif                         
+#include "evas_map_image_loop.c"
+#ifdef COLMUL             
+                              }
+                            else if ((c1 == 0x0000ff) && (!src->cache_entry.flags.alpha))
+                              {
+                                 // all black line
+# define COLBLACK 1
+# include "evas_map_image_loop.c"
+# undef COLBLACK                                 
+                              }
+                            else if (c1 == 0x000000)
+                              {
+                                 // skip span
+                              }
+                            else
+                              {
+                                 // generic loop
+# include "evas_map_image_loop.c"
+                              }
+                         }
+                       else
+                         {
+# include "evas_map_image_loop.c"
+                         }
+#endif                         
+                       if (!direct)
+                         {
+                            d = dst->image.data;
+                            d += (y * dst->cache_entry.w) + x;
+                            func(buf, NULL, dc->mul.col, d, w);
+                         }
+                    }
+                  else break;
+               }
+          }
+     }
+   else
+     {
+        for (y = ystart; y <= yend; y++)
+          {
+             int x, w, ww;
+             FPc u, v, ud, vd;
+             DATA32 *d, *s;
+#ifdef COLMUL
+             FPc cv, cd, cc; // col
+             DATA32 c1, c2; // col
+#endif             
+             Line *line;
+             
+             line = &(spans[y - ystart]);
+             for (i = 0; i < 2; i++)
+               {
+                  Span *span;
+                  
+                  span = &(line->span[i]);
+                  if (span->x1 >= 0)
+                    {
+                       x = span->x1;
+                       w = (span->x2 - x);
+                       
+                       if (w <= 0) continue;
+                       ww = w;
+                       u = span->u[0] << FPI;
+                       v = span->v[0] << FPI;
+                       ud = ((span->u[1] << FPI) - u) / w;
+                       vd = ((span->v[1] << FPI) - v) / w;
+                       if (ud < 0) u -= 1;
+                       if (vd < 0) v -= 1;
+                       
+                       if (direct)
+                         d = dst->image.data + (y * dst->cache_entry.w) + x;
+                       else
+                         d = buf;
+                       
+#undef SMOOTH
+#ifdef COLMUL
+                       c1 = span->col[0]; // col
+                       c2 = span->col[1]; // col
+                       cv = 0; // col
+                       cd = (255 << 16) / w; // col
+
+                       if (c1 == c2)
+                         {
+                            if (c1 == 0xffffffff)
+                              {
+#endif                                 
+#include "evas_map_image_loop.c"
+#ifdef COLMUL
+                              }
+                            else if ((c1 == 0x0000ff) && (!src->cache_entry.flags.alpha))
+                              {
+                                 // all black line
+# define COLBLACK 1
+# include "evas_map_image_loop.c"
+# undef COLBLACK                                 
+                              }
+                            else if (c1 == 0x000000)
+                              {
+                                 // skip span
+                              }
+                            else
+                              {
+                                 // generic loop
+# include "evas_map_image_loop.c"
+                              }
+                         }
+                       else
+                         {
+                            // generic loop
+# include "evas_map_image_loop.c"
+                         }
+#endif                       
+                       if (!direct)
+                         {
+                            d = dst->image.data;
+                            d += (y * dst->cache_entry.w) + x;
+                            func(buf, NULL, dc->mul.col, d, w);
+                         }
+                    }
+                  else break;
+               }
+          }
+     }
+}
diff --git a/src/lib/engines/common/evas_map_image_internal.c b/src/lib/engines/common/evas_map_image_internal.c
new file mode 100644
index 0000000..37a306a
--- /dev/null
+++ b/src/lib/engines/common/evas_map_image_internal.c
@@ -0,0 +1,120 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+// 66.74 % of time
+static void
+FUNC_NAME(RGBA_Image *src, RGBA_Image *dst,
+          RGBA_Draw_Context *dc,
+          RGBA_Map_Point *p, 
+          int smooth, int level)
+{
+   int i;
+   int c, cx, cy, cw, ch;
+   int ytop, ybottom, ystart, yend, y, sw, sh, shp, swp, direct;
+   Line *spans;
+   DATA32 *buf, *sp;
+   RGBA_Gfx_Func func;
+   int havea = 0;
+   int havecol = 4;
+
+   // get the clip
+   c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h;
+   if (!c)
+     {
+        cx = 0;
+        cy = 0;
+        cw = dst->cache_entry.w;
+        ch = dst->cache_entry.h;
+     }
+   
+   // find y yop line and y bottom line
+   ytop = p[0].y;
+   if ((p[0].col >> 24) < 0xff) havea = 1;
+   if (p[0].col == 0xffffffff) havecol--;
+   for (i = 1; i < 4; i++)
+     {
+        if (p[i].y < ytop) ytop = p[i].y;
+        if ((p[i].col >> 24) < 0xff) havea = 1;
+        if (p[i].col == 0xffffffff) havecol--;
+     }
+
+   ybottom = p[0].y;
+   for (i = 1; i < 4; i++)
+     {
+        if (p[i].y > ybottom) ybottom = p[i].y;
+     }
+   
+   // convert to screen space from fixed point
+   ytop = ytop >> FP;
+   ybottom = ybottom >> FP;
+   
+   // if its outside the clip vertical bounds - don't bother
+   if ((ytop >= (cy + ch)) || (ybottom < cy)) return;
+   
+   // limit to the clip vertical bounds
+   if (ytop < cy) ystart = cy;
+   else ystart = ytop;
+   if (ybottom >= (cy + ch)) yend = (cy + ch) - 1;
+   else yend = ybottom;
+
+   // get some source image information
+   sp = src->image.data;
+   sw = src->cache_entry.w;
+   swp = sw << (FP + FPI);
+   shp = src->cache_entry.h << (FP + FPI);
+
+   // limit u,v coords of points to be within the source image
+   for (i = 0; i < 4; i++)
+     {
+        if (p[i].u < 0) p[i].u = 0;
+        else if (p[i].u > (src->cache_entry.w << FP))
+          p[i].u = src->cache_entry.w << FP;
+        
+        if (p[i].v < 0) p[i].v = 0;
+        else if (p[i].v > (src->cache_entry.h << FP))
+          p[i].v = src->cache_entry.h << FP;
+     }
+   
+   // allocate some spans to hold out span list
+   spans = alloca((yend - ystart + 1) * sizeof(Line));
+   if (!spans) return;
+   memset(spans, 0, (yend - ystart + 1) * sizeof(Line));
+
+   // calculate the spans list
+   _calc_spans(p, spans, ystart, yend, cx, cy, cw, ch);
+   
+   // walk through spans and render
+   
+   // if operation is solid, bypass buf and draw func and draw direct to dst
+   direct = 0;
+   if ((!src->cache_entry.flags.alpha) && (!dst->cache_entry.flags.alpha) &&
+       (!dc->mul.use) && (!havea))
+     {
+        direct = 1;
+     }
+   else
+     {
+        int pa;
+        
+        buf = alloca(cw * sizeof(DATA32));
+        if (!buf) return;
+        pa = src->cache_entry.flags.alpha;
+        if (havea) src->cache_entry.flags.alpha = 1;
+        if (dc->mul.use)
+          func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, cw, dc->render_op);
+        else
+          func = evas_common_gfx_func_composite_pixel_span_get(src, dst, cw, dc->render_op);
+        src->cache_entry.flags.alpha = pa;
+     }
+   
+   if (!havecol)
+     {
+#undef COLMUL     
+#include "evas_map_image_core.c"
+     }
+   else
+     {
+#define COLMUL 1
+#include "evas_map_image_core.c"
+     }
+}
diff --git a/src/lib/engines/common/evas_map_image_loop.c b/src/lib/engines/common/evas_map_image_loop.c
new file mode 100644
index 0000000..aa067e0
--- /dev/null
+++ b/src/lib/engines/common/evas_map_image_loop.c
@@ -0,0 +1,117 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifdef SMOOTH
+{
+   while (ww > 0)
+     {
+# ifdef COLBLACK
+        *d = 0xff000000; // col
+# else        
+        FPc u1, v1, u2, v2;
+        FPc rv, ru;
+        DATA32 val1, val2, val3, val4;
+        
+        u1 = u;
+        if (u1 < 0) u1 = 0;
+        else if (u1 >= swp) u1 = swp - 1;
+        
+        v1 = v;
+        if (v1 < 0) v1 = 0;
+        else if (v1 >= shp) v1 = shp - 1;
+        
+        u2 = u1 + FPFPI1;
+        if (u2 >= swp) u2 = swp - 1;
+        
+        v2 = v1 + FPFPI1;
+        if (v2 >= shp) v2 = shp - 1;
+        
+        ru = (u >> (FP + FPI - 8)) & 0xff;
+        rv = (v >> (FP + FPI - 8)) & 0xff;
+        
+        s = sp + ((v1 >> (FP + FPI)) * sw) + 
+          (u1 >> (FP + FPI));
+        val1 = *s;
+        s = sp + ((v1 >> (FP + FPI)) * sw) + 
+          (u2 >> (FP + FPI));
+        val2 = *s;
+        
+        s = sp + ((v2 >> (FP + FPI)) * sw) + 
+          (u1 >> (FP + FPI));
+        val3 = *s;
+        s = sp + ((v2 >> (FP + FPI)) * sw) + 
+          (u2 >> (FP + FPI));
+        val4 = *s;
+#  ifdef SCALE_USING_MMX
+        MOV_A2R(rv, mm4);
+        MOV_A2R(ru, mm6);
+        MOV_P2R(val1, mm1, mm0);
+        if (val1 | val2)
+          {
+             MOV_P2R(val2, mm2, mm0);
+             INTERP_256_R2R(mm6, mm2, mm1, mm5);
+          }
+        MOV_P2R(val3, mm2, mm0);
+        if (val3 | val4)
+          {
+             MOV_P2R(val4, mm3, mm0);
+             INTERP_256_R2R(mm6, mm3, mm2, mm5);
+          }
+        INTERP_256_R2R(mm4, mm2, mm1, mm5);
+#   ifdef COLMUL
+        cc = cv >> 16; // col
+        cv += cd; // col
+        MOV_A2R(cc, mm2); // col
+        MOV_P2R(c1, mm3, mm0); // col
+        MOV_P2R(c2, mm4, mm0); // col
+        INTERP_256_R2R(mm2, mm4, mm3, mm5); // col
+        MUL4_SYM_R2R(mm3, mm1, mm5); // col
+#   endif                            
+        MOV_R2P(mm1, *d, mm0);
+#  else
+        val1 = INTERP_256(ru, val2, val1);
+        val3 = INTERP_256(ru, val4, val3);
+        val1 = INTERP_256(rv, val3, val1); // col
+#   ifdef COLMUL                            
+        val2 = INTERP_256((cv >> 16), c2, c1); // col
+        *d   = MUL4_SYM(val2, val1); // col
+        cv += cd; // col
+#   else                            
+        *d   = INTERP_256(rv, val3, val1);
+#   endif
+#  endif
+        u += ud;
+        v += vd;
+# endif        
+        d++;
+        ww--;
+     }
+}
+#else
+{
+   while (ww > 0)
+     {
+# ifdef COLMUL
+        DATA32 val1, cval; // col
+# endif        
+# ifdef COLBLACK
+        *d = 0xff000000; // col
+# else        
+        s = sp + ((v >> (FP + FPI)) * sw) + 
+          (u >> (FP + FPI));
+#  ifdef COLMUL
+        val1 = *s; // col
+        cval = INTERP_256((cv >> 16), c2, c1); // col
+        *d = MUL4_SYM(cval, val1);
+        cv += cd; // col              
+#  else        
+        *d = *s;
+#  endif        
+        u += ud;
+        v += vd;
+# endif        
+        d++;
+        ww--;
+     }
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/Makefile.in b/src/lib/engines/common/evas_op_add/Makefile.in
index fdc9b40..2a13258 100644
--- a/src/lib/engines/common/evas_op_add/Makefile.in
+++ b/src/lib/engines/common/evas_op_add/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -290,8 +293,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/engines/common/evas_op_add_main_.c b/src/lib/engines/common/evas_op_add_main_.c
index a4eface..538fb29 100644
--- a/src/lib/engines/common/evas_op_add_main_.c
+++ b/src/lib/engines/common/evas_op_add_main_.c
@@ -3,7 +3,6 @@
  */
 
 #include "evas_common.h"
-
 static RGBA_Gfx_Func     op_add_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
 static RGBA_Gfx_Pt_Func  op_add_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
 
diff --git a/src/lib/engines/common/evas_op_blend/Makefile.in b/src/lib/engines/common/evas_op_blend/Makefile.in
index 288d1fb..5b6d8e9 100644
--- a/src/lib/engines/common/evas_op_blend/Makefile.in
+++ b/src/lib/engines/common/evas_op_blend/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -295,8 +298,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/engines/common/evas_op_copy/Makefile.in b/src/lib/engines/common/evas_op_copy/Makefile.in
index e5f2754..e873dad 100644
--- a/src/lib/engines/common/evas_op_copy/Makefile.in
+++ b/src/lib/engines/common/evas_op_copy/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -295,8 +298,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/engines/common/evas_op_mask/Makefile.in b/src/lib/engines/common/evas_op_mask/Makefile.in
index 3086a72..f8acf10 100644
--- a/src/lib/engines/common/evas_op_mask/Makefile.in
+++ b/src/lib/engines/common/evas_op_mask/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -290,8 +293,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/engines/common/evas_op_mul/Makefile.in b/src/lib/engines/common/evas_op_mul/Makefile.in
index 243de45..e5f7f25 100644
--- a/src/lib/engines/common/evas_op_mul/Makefile.in
+++ b/src/lib/engines/common/evas_op_mul/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -290,8 +293,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/engines/common/evas_op_sub/Makefile.in b/src/lib/engines/common/evas_op_sub/Makefile.in
index dff2bbd..f7f055c 100644
--- a/src/lib/engines/common/evas_op_sub/Makefile.in
+++ b/src/lib/engines/common/evas_op_sub/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -290,8 +293,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/engines/common/evas_pipe.c b/src/lib/engines/common/evas_pipe.c
index 8a2faf5..a9fee85 100644
--- a/src/lib/engines/common/evas_pipe.c
+++ b/src/lib/engines/common/evas_pipe.c
@@ -2,6 +2,8 @@
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
 
+// THIS IS DEPRECATED. WILL GO EVENTUALLTY. NO NEED TO SUPPORT ANYMORE
+
 #include "evas_common.h"
 
 #ifdef BUILD_PIPE_RENDER
@@ -73,7 +75,7 @@ evas_common_pipe_thread(void *data)
 {
    Thinfo *thinfo;
 
-//   printf("TH [...........\n");
+//   INF("TH [...........");
    thinfo = data;
    for (;;)
      {
@@ -81,13 +83,13 @@ evas_common_pipe_thread(void *data)
 	RGBA_Pipe *p;
 
 	/* wait for start signal */
-//	printf(" TH %i START...\n", thinfo->thread_num);
+//	INF(" TH %i START...", thinfo->thread_num);
 	pthread_barrier_wait(&(thinfo->barrier[0]));
 	info = thinfo->info;
 //	if (info)
 //	  {
 //	     thinfo->info = NULL;
-//	     printf(" TH %i GO\n", thinfo->thread_num);
+//	     INF(" TH %i GO", thinfo->thread_num);
 	EINA_INLIST_FOREACH(EINA_INLIST_GET(info->im->pipe), p)
 	       {
 		  int i;
@@ -100,7 +102,7 @@ evas_common_pipe_thread(void *data)
 	       }
 	     free(info);
 //	  }
-//	printf(" TH %i DONE\n", thinfo->thread_num);
+//	INF(" TH %i DONE", thinfo->thread_num);
 	/* send finished signal */
 	pthread_barrier_wait(&(thinfo->barrier[1]));
      }
@@ -126,7 +128,7 @@ evas_common_pipe_begin(RGBA_Image *im)
      {
 	int cpunum;
 
-	cpunum = evas_common_cpu_count();
+	cpunum = eina_cpu_count();
 	thread_num = cpunum;
 	if (thread_num == 1) return;
 	pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
diff --git a/src/lib/engines/common/evas_tiler.c b/src/lib/engines/common/evas_tiler.c
index 66f2081..c29359f 100644
--- a/src/lib/engines/common/evas_tiler.c
+++ b/src/lib/engines/common/evas_tiler.c
@@ -1,5 +1,4 @@
 #include "evas_common.h"
-
 #ifdef EVAS_RECT_SPLIT
 
 static const list_node_t list_node_zeroed = { NULL };
@@ -95,7 +94,7 @@ rect_init(rect_t *r, int x, int y, int w, int h)
 void
 rect_print(const rect_t r)
 {
-   printf("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height);
+   INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height);
 }
 
 void
@@ -107,7 +106,7 @@ rect_list_print(const list_t rects)
    len = 0;
    for (node = rects.head; node != NULL; node = node->next) len++;
 
-   printf("[");
+   putchar('[');
    for (node = rects.head; node != NULL; node = node->next)
      {
 	rect_print(((rect_node_t *)node)->rect);
@@ -122,7 +121,7 @@ rect_list_print(const list_t rects)
 	       }
 	  }
      }
-   printf("]\n");
+   putchar(']');
 }
 
 inline void
@@ -717,7 +716,7 @@ rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error)
 			*/
 		       /* prev_cur_node = cur_node; */
 		       /* cur_node = cur_node->next; */
-		       printf("Should not get here!\n");
+		       WRN("Should not get here!");
 		       abort();
 		    }
 
@@ -920,7 +919,7 @@ _add_redraw(list_t *rects, int max_w, int max_h, int x, int y, int w, int h)
    rn = (rect_node_t *)rect_list_node_pool_get();
    rn->_lst = list_node_zeroed;
    rect_init(&rn->rect, x, y, w, h);
-   //fprintf(stderr, "ACCOUNTING: add_redraw: %4d,%4d %3dx%3d\n", x, y, w, h);
+   //INF("ACCOUNTING: add_redraw: %4d,%4d %3dx%3d", x, y, w, h);
    //testing on my core2 duo desktop - fuzz of 32 or 48 is best.
 #define FUZZ 32
    rect_list_add_split_fuzzy_and_merge(rects, (list_node_t *)rn,
@@ -1008,7 +1007,7 @@ evas_common_tilebuf_del_redraw(Tilebuf *tb, int x, int y, int w, int h)
    if ((w <= 0) || (h <= 0)) return 0;
 
    rect_init(&r, x, y, w, h);
-   //fprintf(stderr, "ACCOUNTING: del_redraw: %4d,%4d %3dx%3d\n", x, y, w, h);
+   //ERR("ACCOUNTING: del_redraw: %4d,%4d %3dx%3d", x, y, w, h);
 
    rect_list_del_split_strict(&tb->rects, r);
    tb->need_merge = 1;
diff --git a/src/lib/engines/common_16/Makefile.in b/src/lib/engines/common_16/Makefile.in
index a1106fe..7b690fc 100644
--- a/src/lib/engines/common_16/Makefile.in
+++ b/src/lib/engines/common_16/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -280,17 +280,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -330,8 +333,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -414,7 +417,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c b/src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c
index 71f9914..b5b07d6 100644
--- a/src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c
+++ b/src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c
@@ -101,9 +101,8 @@ _soft16_image_draw_scaled_no_mul(Soft16_Image *src, Soft16_Image *dst,
       _soft16_image_draw_scaled_solid_solid
 	(src, dst, dc, dst_offset, w, h, offset_x, offset_y);
    else
-      fprintf(stderr,
-              "Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
-              "dst->cache_entry.flags.alpha=%d, WITHOUT COLOR MUL\n",
+      ERR("Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITHOUT COLOR MUL",
               src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha);
 }
 
@@ -214,10 +213,9 @@ _soft16_image_draw_scaled_mul_alpha(Soft16_Image *src, Soft16_Image *dst,
       _soft16_image_draw_scaled_solid_solid_mul_alpha
          (src, dst, dc, dst_offset, w, h, offset_x, offset_y, a);
    else
-      fprintf(stderr,
-              "Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
-              "dst->cache_entry.flags.alpha=%d, WITH ALPHA MUL %d\n",
-              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, A_VAL(&dc->mul.col));
+     ERR("Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
+	   "dst->cache_entry.flags.alpha=%d, WITH ALPHA MUL %d",
+	   src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, A_VAL(&dc->mul.col));
 }
 
 static void
@@ -397,9 +395,8 @@ _soft16_image_draw_scaled_mul_color(Soft16_Image *src, Soft16_Image *dst,
       _soft16_image_draw_scaled_solid_solid_mul_color
          (src, dst, dc, dst_offset, w, h, offset_x, offset_y, r, g, b, a);
    else
-      fprintf(stderr,
-              "Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
-              "dst->cache_entry.flags.alpha=%d, WITH COLOR MUL 0x%08x\n",
+      ERR("Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH COLOR MUL 0x%08x",
               src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, dc->mul.col);
 }
 
diff --git a/src/lib/engines/common_16/evas_soft16_image_unscaled.c b/src/lib/engines/common_16/evas_soft16_image_unscaled.c
index 73d7d44..b7a428d 100644
--- a/src/lib/engines/common_16/evas_soft16_image_unscaled.c
+++ b/src/lib/engines/common_16/evas_soft16_image_unscaled.c
@@ -60,9 +60,8 @@ _soft16_image_draw_unscaled_no_mul(Soft16_Image *src, Soft16_Image *dst,
                                               src_offset, dst_offset,
                                               width, height);
    else
-      fprintf(stderr,
-              "Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
-              "dst->cache_entry.flags.alpha=%d, WITHOUT COLOR MUL\n",
+     ERR("Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITHOUT COLOR MUL",
               src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha);
 }
 
@@ -128,9 +127,8 @@ _soft16_image_draw_unscaled_mul_alpha(Soft16_Image *src, Soft16_Image *dst,
       _soft16_image_draw_unscaled_solid_solid_mul_alpha
          (src, dst, dc, src_offset, dst_offset, width, height, a);
    else
-      fprintf(stderr,
-              "Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
-              "dst->cache_entry.flags.alpha=%d, WITH ALPHA MUL %d\n",
+     ERR("Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH ALPHA MUL %d",
               src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, A_VAL(&dc->mul.col));
 }
 
@@ -219,9 +217,8 @@ _soft16_image_draw_unscaled_mul_color(Soft16_Image *src, Soft16_Image *dst,
      _soft16_image_draw_unscaled_solid_solid_mul_color
        (src, dst, dc, src_offset, dst_offset, width, height, r, g, b, a);
    else
-      fprintf(stderr,
-              "Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
-              "dst->cache_entry.flags.alpha=%d, WITH COLOR MUL 0x%08x\n",
+     ERR("Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH COLOR MUL 0x%08x",
               src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, dc->mul.col);
 }
 
diff --git a/src/lib/engines/common_16/evas_soft16_main.c b/src/lib/engines/common_16/evas_soft16_main.c
index 18d3e65..415d137 100644
--- a/src/lib/engines/common_16/evas_soft16_main.c
+++ b/src/lib/engines/common_16/evas_soft16_main.c
@@ -28,7 +28,7 @@ static int               _evas_common_load_soft16_image_data_from_file(Image_Ent
 /* static void */
 /* _evas_common_soft16_image_debug(const char* context, Image_Entry *eim) */
 /* { */
-/*    fprintf(stderr, "[16] %p = [%s] {%s,%s} %i [%i|%i]\n", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h); */
+/*    DBG("[16] %p = [%s] {%s,%s} %i [%i|%i]", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h); */
 /* } */
 
 static const Evas_Cache_Image_Func      _evas_common_soft16_image_func =
diff --git a/src/lib/engines/common_16/evas_soft16_rectangle.c b/src/lib/engines/common_16/evas_soft16_rectangle.c
index 6e78d60..37b1d56 100644
--- a/src/lib/engines/common_16/evas_soft16_rectangle.c
+++ b/src/lib/engines/common_16/evas_soft16_rectangle.c
@@ -71,9 +71,7 @@ _soft16_rectangle_draw_int(Soft16_Image *dst, RGBA_Draw_Context *dc,
 	     (dst, dst_offset, dr.w, dr.h, rgb565, alpha);
       }
    else
-      fprintf(stderr,
-              "Unsupported feature: drawing rectangle to non-opaque "
-              "destination.\n");
+     ERR("Unsupported feature: drawing rectangle to non-opaque destination.");
 }
 
 void
diff --git a/src/lib/file/Makefile.in b/src/lib/file/Makefile.in
index 62c4e64..456d700 100644
--- a/src/lib/file/Makefile.in
+++ b/src/lib/file/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -275,17 +275,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -318,8 +321,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -396,7 +399,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/file/evas_module.c b/src/lib/file/evas_module.c
index 0640c66..1dde1f1 100644
--- a/src/lib/file/evas_module.c
+++ b/src/lib/file/evas_module.c
@@ -6,6 +6,17 @@
 
 #include <evas_common.h>
 #include <evas_private.h>
+#include <evas_module.h>
+
+#ifdef _MSC_VER
+# ifdef open
+#  undef open
+# endif
+# ifdef close
+#  undef close
+# endif
+#endif
+
 
 static Eina_Hash *evas_modules[4] = {
   NULL,
@@ -41,7 +52,9 @@ void
 evas_module_paths_init(void)
 {
    char *path, *path2;
+#ifndef _MSC_VER
    const char *path3;
+#endif
 
    /* 1. ~/.evas/modules/ */
    path = eina_module_environment_path_get("HOME", "/.evas/modules");
@@ -59,6 +72,7 @@ evas_module_paths_init(void)
      evas_module_paths = _evas_module_append(evas_module_paths, path2);
 
    /* 4. PREFIX/evas/modules/ */
+#ifndef _MSC_VER
    path3 = PACKAGE_LIB_DIR "/evas/modules";
    if ((path && (strcmp(path, path3) != 0)) ||
        (path2 && (strcmp(path2, path3) != 0)) ||
@@ -68,6 +82,7 @@ evas_module_paths_init(void)
 	if (path)
 	  evas_module_paths = _evas_module_append(evas_module_paths, path);
      }
+#endif
 }
 
 #define EVAS_EINA_STATIC_MODULE_DEFINE(Tn, Name)	\
diff --git a/src/lib/file/evas_path.c b/src/lib/file/evas_path.c
index 1665b89..809e060 100644
--- a/src/lib/file/evas_path.c
+++ b/src/lib/file/evas_path.c
@@ -8,14 +8,16 @@
 #endif
 
 #include <limits.h>
-#include <unistd.h>
 #include <stdlib.h>
-#include <sys/param.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 /* get the casefold feature! */
 #include <fnmatch.h>
 #include <dirent.h>
+#ifndef _MSC_VER
+# include <unistd.h>
+# include <sys/param.h>
+#endif
 
 #ifdef HAVE_EVIL
 # include <Evil.h>
@@ -50,7 +52,7 @@ char *
 evas_file_path_join(const char *path, const char *end)
 {
    char *res = NULL;
-   int len;
+   size_t len;
 
    if ((!path) && (!end)) return NULL;
    if (!path) return strdup(end);
diff --git a/src/lib/imaging/Makefile.in b/src/lib/imaging/Makefile.in
index f194cae..74a04fb 100644
--- a/src/lib/imaging/Makefile.in
+++ b/src/lib/imaging/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -275,17 +275,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -313,8 +316,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -390,7 +393,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/lib/include/Makefile.in b/src/lib/include/Makefile.in
index 894673b..b6d4933 100644
--- a/src/lib/include/Makefile.in
+++ b/src/lib/include/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -256,17 +256,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -288,8 +291,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
diff --git a/src/lib/include/evas_common.h b/src/lib/include/evas_common.h
index f4b7286..c869a80 100644
--- a/src/lib/include/evas_common.h
+++ b/src/lib/include/evas_common.h
@@ -12,6 +12,43 @@
 #include <Eina.h>
 #include "Evas.h"
 
+/* macros needed to log message through eina_log */
+extern EAPI int _evas_log_dom_global;
+#ifdef  _EVAS_DEFAULT_LOG_DOM
+# undef _EVAS_DEFAULT_LOG_DOM
+#endif
+#define _EVAS_DEFAULT_LOG_DOM _evas_log_dom_global
+
+#ifdef EVAS_DEFAULT_LOG_COLOR
+# undef EVAS_DEFAULT_LOG_COLOR
+#endif
+#define EVAS_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_EVAS_DEFAULT_LOG_DOM, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_EVAS_DEFAULT_LOG_DOM, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_EVAS_DEFAULT_LOG_DOM, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_EVAS_DEFAULT_LOG_DOM, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_EVAS_DEFAULT_LOG_DOM, __VA_ARGS__)
+
 /*****************************************************************************/
 
 #include "evas_options.h"
@@ -75,11 +112,11 @@
 #endif
 
 #ifndef _GNU_SOURCE
-#define _GNU_SOURCE
+# define _GNU_SOURCE
 #endif
 
 #ifndef BUILD_PTHREAD
-#undef BUILD_PIPE_RENDER
+# undef BUILD_PIPE_RENDER
 #endif
 
 #ifdef BUILD_PTHREAD
@@ -116,16 +153,6 @@
 # define TH_MAX 0
 #endif
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <time.h>
-#include <ctype.h>
-#include <stdint.h>
-
 #ifdef HAVE_ALLOCA_H
 # include <alloca.h>
 #elif defined __GNUC__
@@ -143,6 +170,18 @@ extern "C"
 void *alloca (size_t);
 #endif
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <ctype.h>
+#ifndef _MSC_VER
+# include <stdint.h>
+# include <unistd.h>
+#endif
+
 #include <ft2build.h>
 #include FT_FREETYPE_H
 #include FT_GLYPH_H
@@ -166,6 +205,11 @@ void *alloca (size_t);
 /* use exact rects for updates not tiles */
 /* #define RECTUPDATE */
 #define TILESIZE 8
+#define IMG_MAX_SIZE 65000
+
+#define IMG_TOO_BIG(w, h) \
+   ((((unsigned long long)w) * ((unsigned long long)h)) >= \
+       ((1ULL << (29 * (sizeof(void *) / 4))) - 2048))
 
 #ifdef BUILD_SMALL_DITHER_MASK
 # define DM_TABLE     _evas_dither_44
@@ -408,6 +452,9 @@ struct _RGBA_Image_Loadopts
    int                  scale_down_by; // if > 1 then use this
    double               dpi; // if > 0.0 use this
    int                  w, h; // if > 0 use this
+   struct {
+      int               x, y, w, h;
+   } region;
 };
 
 struct _Image_Entry_Flags
@@ -422,6 +469,8 @@ struct _Image_Entry_Flags
    Eina_Bool alpha_sparse : 1;
 #ifdef BUILD_ASYNC_PRELOAD
    Eina_Bool preload      : 1;
+   Eina_Bool pending      : 1;
+   Eina_Bool in_pipe	  : 1;
 #endif
 };
 
@@ -477,6 +526,7 @@ struct _Image_Entry
    void                  *data1, *data2;
    int                    server_id;
    int                    connect_num;
+   int                    channel;
 };
 
 struct _Engine_Image_Entry
@@ -806,6 +856,7 @@ struct _RGBA_Font_Int
 
    int               size;
    int               real_size;
+   int               max_h;
 
    struct {
       FT_Size       size;
@@ -853,6 +904,7 @@ struct _RGBA_Font_Glyph
    /* this is a problem - only 1 engine at a time can extend such a font... grrr */
    void           *ext_dat;
    void           (*ext_dat_free) (void *ext_dat);
+   RGBA_Font_Int   *fi;
 };
 
 struct _RGBA_Gfx_Compositor
@@ -1069,7 +1121,6 @@ int  evas_common_cpu_have_cpuid                         (void);
 int  evas_common_cpu_has_feature                        (unsigned int feature);
 EAPI void evas_common_cpu_can_do                        (int *mmx, int *sse, int *sse2);
 EAPI void evas_common_cpu_end_opt                       (void);
-EAPI int evas_common_cpu_count                          (void);
 
 /****/
 #include "../engines/common/evas_blend.h"
@@ -1128,6 +1179,8 @@ Tilebuf_Rect *evas_common_regionbuf_rects_get (Regionbuf *rb);
 /****/
 #include "../engines/common/evas_draw.h"
 
+#include "../engines/common/evas_map_image.h"
+
 /****/
 #ifdef BUILD_PIPE_RENDER
 # include "../engines/common/evas_pipe.h"
@@ -1148,5 +1201,4 @@ void              evas_font_dir_cache_free(void);
 #ifdef __cplusplus
 }
 #endif
-
 #endif
diff --git a/src/lib/include/evas_inline.x b/src/lib/include/evas_inline.x
index 3b18976..926924a 100644
--- a/src/lib/include/evas_inline.x
+++ b/src/lib/include/evas_inline.x
@@ -4,9 +4,8 @@
 static inline int
 evas_object_was_visible(Evas_Object *obj)
 {
-   if (obj->smart.smart) return 0;
    if ((obj->prev.visible) &&
-       (obj->prev.cache.clip.visible) &&
+       ((obj->prev.cache.clip.visible) || (obj->smart.smart)) &&
        (obj->prev.cache.clip.a > 0))
      {
 	if (obj->func->was_visible)
@@ -81,9 +80,8 @@ evas_event_passes_through(Evas_Object *obj)
 static inline int
 evas_object_is_visible(Evas_Object *obj)
 {
-   if (obj->smart.smart) return 0;
    if ((obj->cur.visible) &&
-       (obj->cur.cache.clip.visible) &&
+       ((obj->cur.cache.clip.visible) || (obj->smart.smart)) &&
        (obj->cur.cache.clip.a > 0))
      {
 	if (obj->func->is_visible)
@@ -108,7 +106,6 @@ evas_object_clippers_is_visible(Evas_Object *obj)
 static inline int
 evas_object_is_in_output_rect(Evas_Object *obj, int x, int y, int w, int h)
 {
-   if (obj->smart.smart) return 0;
    /* assumes coords have been recalced */
    if ((RECTS_INTERSECT(x, y, w, h,
 			obj->cur.cache.clip.x,
@@ -122,20 +119,34 @@ evas_object_is_in_output_rect(Evas_Object *obj, int x, int y, int w, int h)
 static inline int
 evas_object_is_active(Evas_Object *obj)
 {
-   if (obj->smart.smart) return 0;
-   if ((evas_object_is_visible(obj) || evas_object_was_visible(obj)) &&
-       (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
-				      obj->layer->evas->output.h) ||
-	evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
-				       obj->layer->evas->output.h)))
-     return 1;
+   if (evas_object_is_visible(obj) || evas_object_was_visible(obj))
+     {
+        if (obj->smart.smart)
+          {
+             int mapsmt = 0;
+             if (obj->smart.smart && (obj->cur.map && obj->cur.usemap)) mapsmt = 1;
+             if (!mapsmt) return 1;
+             if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                               obj->layer->evas->output.h) ||
+                 evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                                obj->layer->evas->output.h))
+               return 1;
+          }
+        else
+          {
+             if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                               obj->layer->evas->output.h) ||
+                 evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                                obj->layer->evas->output.h))
+               return 1;
+          }
+     }
    return 0;
 }
 
 static inline void
 evas_object_coords_recalc(Evas_Object *obj)
 {
-   if (obj->smart.smart) return;
 ////   if (obj->cur.cache.geometry.validity == obj->layer->evas->output_validity)
 ////     return;
 ////   obj->cur.cache.geometry.x =
@@ -158,12 +169,25 @@ evas_object_clip_recalc(Evas_Object *obj)
    int cx, cy, cw, ch, cvis, cr, cg, cb, ca;
    int nx, ny, nw, nh, nvis, nr, ng, nb, na;
 
+   if (!obj->cur.cache.clip.dirty &&
+       !(obj->cur.clipper == NULL || obj->cur.clipper->cur.cache.clip.dirty))
+     return;
    if (obj->layer->evas->events_frozen > 0) return;
-   if (!(obj->cur.clipper == NULL || obj->cur.clipper->cur.cache.clip.dirty)
-       && !obj->cur.cache.clip.dirty) return;
    evas_object_coords_recalc(obj);
-   cx = obj->cur.geometry.x; cy = obj->cur.geometry.y;
-   cw = obj->cur.geometry.w; ch = obj->cur.geometry.h;
+   if (obj->cur.map)
+     {
+        cx = obj->cur.map->normal_geometry.x;
+        cy = obj->cur.map->normal_geometry.y;
+        cw = obj->cur.map->normal_geometry.w;
+        ch = obj->cur.map->normal_geometry.h;
+     }
+   else
+     {
+        cx = obj->cur.geometry.x;
+        cy = obj->cur.geometry.y;
+        cw = obj->cur.geometry.w;
+        ch = obj->cur.geometry.h;
+     }
 ////   cx = obj->cur.cache.geometry.x; cy = obj->cur.cache.geometry.y;
 ////   cw = obj->cur.cache.geometry.w; ch = obj->cur.cache.geometry.h;
    if (obj->cur.color.a == 0) cvis = 0;
diff --git a/src/lib/include/evas_macros.h b/src/lib/include/evas_macros.h
index 56d8351..ba1ab6e 100644
--- a/src/lib/include/evas_macros.h
+++ b/src/lib/include/evas_macros.h
@@ -23,7 +23,6 @@
    ((((x) & 0x00ff ) << 8) | \
     (((x) & 0xff00 ) >> 8))
 
-
 #define SPANS_COMMON(x1, w1, x2, w2) \
 (!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1)))))
 
diff --git a/src/lib/include/evas_private.h b/src/lib/include/evas_private.h
index 0916b44..09bde92 100644
--- a/src/lib/include/evas_private.h
+++ b/src/lib/include/evas_private.h
@@ -48,23 +48,24 @@ typedef struct _Evas_Intercept_Func_Color   Evas_Intercept_Func_Color;
 typedef struct _Evas_Key_Grab               Evas_Key_Grab;
 typedef struct _Evas_Callbacks              Evas_Callbacks;
 typedef struct _Evas_Format                 Evas_Format;
-
-#define MAGIC_EVAS          0x70777770
-#define MAGIC_OBJ           0x71777770
-#define MAGIC_OBJ_RECTANGLE 0x71777771
-#define MAGIC_OBJ_LINE      0x71777772
-#define MAGIC_OBJ_GRADIENT  0x71777773
-#define MAGIC_OBJ_POLYGON   0x71777774
-#define MAGIC_OBJ_IMAGE     0x71777775
-#define MAGIC_OBJ_TEXT      0x71777776
-#define MAGIC_OBJ_SMART     0x71777777
-#define MAGIC_OBJ_TEXTBLOCK 0x71777778
-#define MAGIC_SMART         0x72777770
+typedef struct _Evas_Map_Point              Evas_Map_Point;
+
+#define MAGIC_EVAS                 0x70777770
+#define MAGIC_OBJ                  0x71777770
+#define MAGIC_OBJ_RECTANGLE        0x71777771
+#define MAGIC_OBJ_LINE             0x71777772
+#define MAGIC_OBJ_GRADIENT         0x71777773
+#define MAGIC_OBJ_POLYGON          0x71777774
+#define MAGIC_OBJ_IMAGE            0x71777775
+#define MAGIC_OBJ_TEXT             0x71777776
+#define MAGIC_OBJ_SMART            0x71777777
+#define MAGIC_OBJ_TEXTBLOCK        0x71777778
+#define MAGIC_SMART                0x72777770
 #define MAGIC_OBJ_GRADIENT_LINEAR  0x72777771
 #define MAGIC_OBJ_GRADIENT_RADIAL  0x72777772
-#define MAGIC_OBJ_SHAPE  0x72777773
-#define MAGIC_OBJ_CONTAINER  0x72777774
-#define MAGIC_OBJ_CUSTOM  0x72777775
+#define MAGIC_OBJ_SHAPE            0x72777773
+#define MAGIC_OBJ_CONTAINER        0x72777774
+#define MAGIC_OBJ_CUSTOM           0x72777775
 
 #ifdef MAGIC_DEBUG
 # define MAGIC_CHECK_FAILED(o, t, m) \
@@ -287,8 +288,8 @@ struct _Evas
    Eina_Array     delete_objects;
    Eina_Array     active_objects;
    Eina_Array     restack_objects;
-   Eina_Array	  render_objects;
-   Eina_Array	  pending_objects;
+   Eina_Array     render_objects;
+   Eina_Array     pending_objects;
    Eina_Array     obscuring_objects;
    Eina_Array     temporary_objects;
    Eina_Array     calculate_objects;
@@ -357,6 +358,25 @@ struct _Evas_Size_Hints
    Evas_Border padding;
 };
 
+struct _Evas_Map_Point
+{
+   Evas_Coord x, y, z;
+   double u, v;
+   unsigned char r, g, b, a;
+};
+
+struct _Evas_Map
+{
+   int count; // num of points
+   Evas_Coord_Rectangle normal_geometry; // bounding box of map geom actually
+   void *surface; // surface holding map if needed
+   int surface_w, surface_h; // current surface w & h alloc
+   Evas_Coord mx, my; // mouse x, y after conversion to map space
+   Eina_Bool alpha : 1;
+   Eina_Bool smooth : 1;
+   Evas_Map_Point points[]; // actual points
+};
+
 struct _Evas_Object
 {
    EINA_INLIST;
@@ -382,12 +402,14 @@ struct _Evas_Object
 	 } clip;
       } cache;
       double scale;
+      Evas_Map *map;
       Evas_Coord_Rectangle geometry;
       struct {
 	 unsigned char  r, g, b, a;
       } color;
       Evas_Object      *clipper;
       short             layer;
+      Eina_Bool         usemap : 1;
       Eina_Bool         visible : 1;
       Eina_Bool         have_clipees : 1;
       Eina_Bool         anti_alias : 1;
@@ -437,6 +459,7 @@ struct _Evas_Object
    Eina_Bool                   restack : 1;
    Eina_Bool                   changed : 1;
    Eina_Bool                   is_active : 1;
+   
    Eina_Bool                   render_pre : 1;
    Eina_Bool                   rect_del : 1;
    Eina_Bool                   mouse_in : 1;
@@ -445,7 +468,9 @@ struct _Evas_Object
    Eina_Bool                   focused : 1;
    Eina_Bool                   in_layer : 1;
    Eina_Bool                   no_propagate : 1;
+   
    Eina_Bool                   precise_is_inside : 1;
+   Eina_Bool                   havemap_parent : 1;
 
    unsigned char               delete_me;
 };
@@ -522,6 +547,8 @@ struct _Evas_Object_Func
 
    int (*has_opaque_rect) (Evas_Object *obj);
    int (*get_opaque_rect) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+   int (*can_map) (Evas_Object *obj);
 };
 
 struct _Evas_Func
@@ -671,6 +698,11 @@ struct _Evas_Func
 
    void (*image_scale_hint_set)            (void *data, void *image, int hint);
    int  (*image_scale_hint_get)            (void *data, void *image);
+   int  (*font_last_up_to_pos)             (void *data, void *font, const char *text, int x, int y);
+
+   void (*image_map4_draw)                 (void *data, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level);
+   void *(*image_map_surface_new)          (void *data, int w, int h, int alpha);
+   void *(*image_map_surface_free)         (void *data, void *surface);
 };
 
 struct _Evas_Image_Load_Func
@@ -789,7 +821,8 @@ struct _Evas_Imaging_Font
 
 int evas_async_events_init(void);
 int evas_async_events_shutdown(void);
-
+int evas_async_target_del(const void *target);
+       
 void _evas_walk(Evas *e);
 void _evas_unwalk(Evas *e);
 
@@ -798,6 +831,9 @@ EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name);
 void evas_render_invalidate(Evas *e);
 void evas_render_object_recalc(Evas_Object *obj);
 
+Eina_Bool evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y);
+Eina_Bool evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord *mx, Evas_Coord *my, int grab);
+       
 #define EVAS_API_OVERRIDE(func, api, prefix) \
      (api)->func = prefix##func
 
diff --git a/src/lib/main.c b/src/lib/main.c
index 798bb16..a50e8cd 100644
--- a/src/lib/main.c
+++ b/src/lib/main.c
@@ -101,8 +101,7 @@ evas_debug_error(void)
 	_evas_debug_init = 1;
      }
    if (_evas_debug_show)
-     fprintf(stderr,
-	     "*** EVAS ERROR: Evas Magic Check Failed!!!\n");
+     DBG("*** EVAS ERROR: Evas Magic Check Failed!!!");
 }
 
 void
@@ -115,8 +114,7 @@ evas_debug_input_null(void)
 	_evas_debug_init = 1;
      }
    if (_evas_debug_show)
-     fprintf(stderr,
-	     "  Input object pointer is NULL!\n");
+     DBG("Input object pointer is NULL!");
    if (_evas_debug_abort) abort();
 }
 
@@ -130,8 +128,7 @@ evas_debug_magic_null(void)
 	_evas_debug_init = 1;
      }
    if (_evas_debug_show)
-     fprintf(stderr,
-	     "  Input object is zero'ed out (maybe a freed object or zero-filled RAM)!\n");
+     DBG("Input object is zero'ed out (maybe a freed object or zero-filled RAM)!");
    if (_evas_debug_abort) abort();
 }
 
@@ -145,12 +142,11 @@ evas_debug_magic_wrong(DATA32 expected, DATA32 supplied)
 	_evas_debug_init = 1;
      }
    if (_evas_debug_show)
-     fprintf(stderr,
-	     "  Input object is wrong type\n"
-	     "    Expected: %08x - %s\n"
-	     "    Supplied: %08x - %s\n",
-	     expected, evas_debug_magic_string_get(expected),
-	     supplied, evas_debug_magic_string_get(supplied));
+     DBG("  Input object is wrong type\n"
+	   "    Expected: %08x - %s\n"
+	   "    Supplied: %08x - %s",
+	   expected, evas_debug_magic_string_get(expected),
+	   supplied, evas_debug_magic_string_get(supplied));
    if (_evas_debug_abort) abort();
 }
 
@@ -164,9 +160,8 @@ evas_debug_generic(const char *str)
 	_evas_debug_init = 1;
      }
    if (_evas_debug_show)
-     fprintf(stderr,
-	     "*** EVAS ERROR:\n"
-	     "%s", (char *)str);
+     DBG("*** EVAS ERROR:\n"
+	   "%s", (char *)str);
    if (_evas_debug_abort) abort();
 }
 
diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in
index 9327a9f..e1742ed 100644
--- a/src/modules/Makefile.in
+++ b/src/modules/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -268,17 +268,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -291,8 +294,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -398,7 +401,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/Makefile.in b/src/modules/engines/Makefile.in
index 30c1098..75b2c98 100644
--- a/src/modules/engines/Makefile.in
+++ b/src/modules/engines/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -288,17 +288,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -316,8 +319,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -423,7 +426,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/buffer/Makefile.in b/src/modules/engines/buffer/Makefile.in
index 6fc66e3..31c2153 100644
--- a/src/modules/engines/buffer/Makefile.in
+++ b/src/modules/engines/buffer/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -306,17 +306,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -352,8 +355,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -492,7 +495,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/buffer/evas_engine.c b/src/modules/engines/buffer/evas_engine.c
index 866c231..9f599be 100644
--- a/src/modules/engines/buffer/evas_engine.c
+++ b/src/modules/engines/buffer/evas_engine.c
@@ -3,9 +3,19 @@
 #include "evas_engine.h"
 #include "Evas_Engine_Buffer.h"
 
+/* domain for eina_log */
+/* the log macros are defined in evas_common.h */
+/* theirs names are EVAS_ERR, EVAS_DBG, EVAS_CRIT, EVAS_WRN and EVAS_INF */
+/* although we can use the EVAS_ERROR, etc... macros it will not work
+   when the -fvisibility=hidden option is passed to gcc */
+
+int _evas_engine_buffer_log_dom = -1;
+
 /* function tables - filled in later (func and parent func) */
+
 static Evas_Func func, pfunc;
 
+
 /* engine struct data */
 typedef struct _Render_Engine Render_Engine;
 
@@ -72,10 +82,10 @@ _output_setup(int w,
    evas_common_tilebuf_init();
 
    evas_buffer_outbuf_buf_init();
-
+   
      {
 	Outbuf_Depth dep;
-	DATA32 color_key;
+	DATA32 color_key = 0;
 
 	dep = OUTBUF_DEPTH_BGR_24BPP_888_888;
 	if      (depth_type == EVAS_ENGINE_BUFFER_DEPTH_ARGB32)
@@ -113,7 +123,6 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_Buffer *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_Buffer));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -125,7 +134,6 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_Buffer *in;
-
    in = (Evas_Engine_Info_Buffer *)info;
    free(in);
 }
@@ -323,7 +331,7 @@ eng_output_idle_flush(void *data)
 }
 
 static Eina_Bool
-eng_canvas_alpha_get(void *data)
+eng_canvas_alpha_get(void *data, void *context __UNUSED__)
 {
    Render_Engine *re;
 
@@ -340,6 +348,14 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   
+   _evas_engine_buffer_log_dom = eina_log_domain_register("EvasBufferEngine", EINA_COLOR_BLUE);
+   if(_evas_engine_buffer_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for Eina.buffer.\n");
+       return 0;
+     }
+   
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -366,6 +382,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_buffer_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/buffer/evas_engine.h b/src/modules/engines/buffer/evas_engine.h
index ac28620..32577cf 100644
--- a/src/modules/engines/buffer/evas_engine.h
+++ b/src/modules/engines/buffer/evas_engine.h
@@ -1,5 +1,33 @@
 #ifndef EVAS_ENGINE_H
 #define EVAS_ENGINE_H
+#include "evas_common.h"
+/*  this thing is for eina_log */
+extern int _evas_engine_buffer_log_dom ;
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_buffer_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_buffer_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_buffer_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_buffer_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_buffer_log_dom, __VA_ARGS__)
 
 typedef struct _Outbuf                Outbuf;
 
diff --git a/src/modules/engines/buffer/evas_outbuf.c b/src/modules/engines/buffer/evas_outbuf.c
index 25bc120..c7b2146 100644
--- a/src/modules/engines/buffer/evas_outbuf.c
+++ b/src/modules/engines/buffer/evas_outbuf.c
@@ -76,7 +76,6 @@ RGBA_Image *
 evas_buffer_outbuf_buf_new_region_for_update(Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch)
 {
    RGBA_Image *im;
-   DATA32 *ptr;
 
    if (buf->priv.back_buf)
      {
diff --git a/src/modules/engines/direct3d/Makefile.am b/src/modules/engines/direct3d/Makefile.am
index 26ec71f..6b1412d 100644
--- a/src/modules/engines/direct3d/Makefile.am
+++ b/src/modules/engines/direct3d/Makefile.am
@@ -39,7 +39,7 @@ pkg_LTLIBRARIES = module.la
 module_la_SOURCES = $(DIRECT3D_SOURCES)
 module_la_CXXFLAGS = -fno-exceptions
 module_la_LIBADD = $(top_builddir)/src/lib/libevas.la $(DIRECT3D_LIBADD) @EINA_LIBS@
-module_la_LDFLAGS = -no-undefined -module -avoid-version
+module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
 else
diff --git a/src/modules/engines/direct3d/Makefile.in b/src/modules/engines/direct3d/Makefile.in
index ba87ca5..63f5a2a 100644
--- a/src/modules/engines/direct3d/Makefile.in
+++ b/src/modules/engines/direct3d/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -351,17 +351,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -397,7 +400,7 @@ AM_CPPFLAGS = \
 @BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_FALSE at module_la_SOURCES = $(DIRECT3D_SOURCES)
 @BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_FALSE at module_la_CXXFLAGS = -fno-exceptions
 @BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_FALSE at module_la_LIBADD = $(top_builddir)/src/lib/libevas.la $(DIRECT3D_LIBADD) @EINA_LIBS@
- at BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_FALSE at module_la_LDFLAGS = -no-undefined -module -avoid-version
+ at BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_FALSE at module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 @BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_FALSE at module_la_LIBTOOLFLAGS = --tag=disable-static
 @BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_TRUE at noinst_LTLIBRARIES = libevas_engine_direct3d.la
 @BUILD_ENGINE_DIRECT3D_TRUE@@EVAS_STATIC_BUILD_DIRECT3D_TRUE at libevas_engine_direct3d_la_SOURCES = $(DIRECT3D_SOURCES)
@@ -426,8 +429,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -686,7 +689,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/direct3d/evas_direct3d_device.cpp b/src/modules/engines/direct3d/evas_direct3d_device.cpp
index 5be8ddb..ce0d985 100644
--- a/src/modules/engines/direct3d/evas_direct3d_device.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_device.cpp
@@ -29,21 +29,21 @@ bool D3DDevice::Init(HWND window, int depth, bool fullscreen)
 
    if (FAILED(hr = _object->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &dm)))
      {
-     Log("GetAdapterDisplayMode failed: %x", hr);
-     Destroy();
-     return false;
+       ERR("GetAdapterDisplayMode failed: %x", hr);
+       Destroy();
+       return false;
      }
 
    if (FAILED(hr = _object->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps)))
      {
-     Log("GetDeviceCaps failed: %x", hr);
+     ERR("GetDeviceCaps failed: %x", hr);
      Destroy();
      return false;
      }
 
    if (!GetClientRect(window, &rect))
      {
-     Log("GetClientRect failed: %x", GetLastError());
+     ERR("GetClientRect failed: %x", GetLastError());
      Destroy();
      return false;
      }
@@ -84,7 +84,7 @@ bool D3DDevice::Init(HWND window, int depth, bool fullscreen)
    if (FAILED(hr = _object->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
      window, flag, &pp, &_device)))
      {
-     Log("CreateDevice failed: %x", hr);
+     WRN("CreateDevice failed: %x", hr);
      Destroy();
      return false;
      }
@@ -103,7 +103,7 @@ bool D3DDevice::Init(HWND window, int depth, bool fullscreen)
      _depth = 16;
      break;
    default:
-     Log("No supported format found");
+     WRN("No supported format found");
      Destroy();
      return false;
    }
@@ -119,7 +119,7 @@ bool D3DDevice::Init(HWND window, int depth, bool fullscreen)
 
    if (FAILED(CreateRenderTarget()))
    {
-      Log("Failed to create render target");
+      ERR("Failed to create render target");
       Destroy();
       return false;
    }
@@ -136,7 +136,7 @@ bool D3DDevice::Reset(int width, int height, int fullscreen)
    _d3dpp.Windowed = (fullscreen == 1) ? FALSE : ((fullscreen == 0) ? TRUE : _d3dpp.Windowed);
    if (FAILED(ResetDevice()))
    {
-      Log("Couldnt restore device");
+      WRN("Couldnt restore device");
       _d3dpp = pp;
       return SUCCEEDED(ResetDevice());
    }
@@ -166,7 +166,7 @@ void D3DDevice::Destroy()
       _object->Release();
    ResetParams();
 
-   Log("uninitialized");
+   INF("uninitialized");
 }
 
 void D3DDevice::ResetParams()
@@ -201,7 +201,7 @@ HRESULT D3DDevice::RestoreDevice()
    if (SUCCEEDED(hr = _device->TestCooperativeLevel()))
    {
       _device_lost = FALSE;
-      Log("render test ok");
+      DBG("render test ok");
       return S_OK;
    }
 
@@ -220,7 +220,7 @@ HRESULT D3DDevice::RestoreDevice()
 
 HRESULT D3DDevice::ResetDevice()
 {
-   Log("reset");
+   DBG("reset");
    HRESULT hr = S_OK;
 
    _scene_rendering = FALSE;
@@ -243,7 +243,7 @@ HRESULT D3DDevice::ResetDevice()
    // Reset the device
    if (FAILED(hr = _device->Reset(&_d3dpp)))
    {
-      Log("D3DDevice: Reset of the device failed! Error (%X)", (DWORD)hr);
+      ERR("D3DDevice: Reset of the device failed! Error (%X)", (DWORD)hr);
       return hr;
    }
 
@@ -261,13 +261,13 @@ HRESULT D3DDevice::ResetDevice()
 
    if (FAILED(hr))
    {
-      Log("Restoration of device objects failed");
+      WRN("Restoration of device objects failed");
       // Invalidate objects
 
       return E_FAIL;
    }
 
-   Log("Device objects were successfuly restored");
+   DBG("Device objects were successfuly restored");
    _textures.Set(NULL);
 
    //_device_objects_restored = true;
@@ -290,7 +290,7 @@ bool D3DDevice::Begin()
    HRESULT hr;
    if (FAILED(hr = _device->BeginScene()))
    {
-      Log("Cannot begin scene: %X", (DWORD)hr);
+      WRN("Cannot begin scene: %X", (DWORD)hr);
       return false;
    }
 
@@ -332,7 +332,7 @@ TArray<DWORD> &D3DDevice::GetRenderData()
       return _render_data;
    if (FAILED(hr = _device->GetRenderTargetData(surf, _render_target_data)))
    {
-      Log("Failed to get render target data (%X)", (DWORD)hr);
+      WRN("Failed to get render target data (%X)", (DWORD)hr);
       surf->Release();
       return _render_data;
    }
diff --git a/src/modules/engines/direct3d/evas_direct3d_image_cache.cpp b/src/modules/engines/direct3d/evas_direct3d_image_cache.cpp
index a92ee5b..aa44eb9 100644
--- a/src/modules/engines/direct3d/evas_direct3d_image_cache.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_image_cache.cpp
@@ -208,7 +208,7 @@ bool D3DImageCache::ResizeImage(D3DDevice *d3d, int nw, int nh, int id)
    if (FAILED(hr = d3d->GetDevice()->CreateTexture(nw, nh, 0, 0, D3DFMT_A8R8G8B8,
       D3DPOOL_MANAGED, &tex, NULL)))
    {
-      Log("Failed to create texture: %X", hr);
+      WRN("Failed to create texture: %X", hr);
       return false;
    }
    assert(tex != NULL);
@@ -249,7 +249,7 @@ bool D3DImageCache::CreateEntry(D3DDevice *d3d, CacheEntry &entry, int w, int h,
    if (FAILED(hr = d3d->GetDevice()->CreateTexture(width, height, 0, 0, D3DFMT_A8R8G8B8,
       D3DPOOL_MANAGED, &entry.texture, NULL)))
    {
-      Log("Failed to create texture: %X", hr);
+      WRN("Failed to create texture: %X", hr);
       return false;
    }
 
@@ -271,7 +271,7 @@ bool D3DImageCache::InsertData(CacheEntry &entry, DWORD *data, int w, int h)
    D3DLOCKED_RECT lr;
    if (FAILED(entry.texture->LockRect(0, &lr, &rc, 0)))
    {
-      Log("Failed to lock texture");
+      WRN("Failed to lock texture");
       return false;
    }
 
@@ -288,7 +288,7 @@ bool D3DImageCache::InsertData(CacheEntry &entry, DWORD *data, int w, int h)
 
    if (FAILED(entry.texture->UnlockRect(0)))
    {
-      Log("Failed to unlock texture");
+      WRN("Failed to unlock texture");
       return false;
    }
    return true;
@@ -304,7 +304,7 @@ bool D3DImageCache::RetrieveData(CacheEntry &entry, DWORD *data, int w, int h)
    D3DLOCKED_RECT lr;
    if (FAILED(entry.texture->LockRect(0, &lr, &rc, D3DLOCK_READONLY)))
    {
-      Log("Failed to lock texture");
+      WRN("Failed to lock texture");
       return false;
    }
 
@@ -313,7 +313,7 @@ bool D3DImageCache::RetrieveData(CacheEntry &entry, DWORD *data, int w, int h)
 
    if (FAILED(entry.texture->UnlockRect(0)))
    {
-      Log("Failed to unlock texture");
+      WRN("Failed to unlock texture");
       return false;
    }
    return true;
@@ -349,7 +349,7 @@ bool D3DImageCache::UpdateImageDataWithDirtyInfo(CacheEntryInfo &info, DWORD *da
    D3DLOCKED_RECT lr;
    if (FAILED(entry.texture->LockRect(0, &lr, &rc, 0)))
    {
-      Log("Failed to lock texture");
+      WRN("Failed to lock texture");
       return false;
    }
 
@@ -386,7 +386,7 @@ bool D3DImageCache::UpdateImageDataWithDirtyInfo(CacheEntryInfo &info, DWORD *da
 
    if (FAILED(entry.texture->UnlockRect(0)))
    {
-      Log("Failed to unlock texture");
+      WRN("Failed to unlock texture");
       return false;
    }
    return true;
@@ -405,7 +405,7 @@ bool D3DImageCache::UpdateImageDataDiscard(CacheEntryInfo &info, DWORD *data)
    D3DLOCKED_RECT lr;
    if (FAILED(entry.texture->LockRect(0, &lr, &rc, 0)))
    {
-      Log("Failed to lock texture");
+      WRN("Failed to lock texture");
       return false;
    }
 
@@ -417,7 +417,7 @@ bool D3DImageCache::UpdateImageDataDiscard(CacheEntryInfo &info, DWORD *data)
 
    if (FAILED(entry.texture->UnlockRect(0)))
    {
-      Log("Failed to unlock texture");
+      WRN("Failed to unlock texture");
       return false;
    }
    return true;
diff --git a/src/modules/engines/direct3d/evas_direct3d_main.cpp b/src/modules/engines/direct3d/evas_direct3d_main.cpp
index 4af8448..566cc9a 100644
--- a/src/modules/engines/direct3d/evas_direct3d_main.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_main.cpp
@@ -83,7 +83,7 @@ bool CreateDIBObjects(DevicePtr *dev_ptr)
    assert(dev_ptr != NULL);
    if ((dev_ptr->dib.hdc = CreateCompatibleDC(NULL)) == NULL)
    {
-      Log("Failed to create compatible DC");
+      WRN("Failed to create compatible DC");
       return false;
    }
    ZeroMemory(&dev_ptr->dib.info, sizeof(dev_ptr->dib.info));
@@ -96,7 +96,7 @@ bool CreateDIBObjects(DevicePtr *dev_ptr)
    if ((dev_ptr->dib.image = CreateDIBSection(dev_ptr->dib.hdc, &dev_ptr->dib.info,
       DIB_RGB_COLORS, (void **)&dev_ptr->dib.data, NULL, 0)) == NULL)
    {
-      Log("Failed to create dib section");
+      WRN("Failed to create dib section");
       DeleteDIBObjects(dev_ptr);
       return false;
    }
@@ -122,7 +122,7 @@ Direct3DDeviceHandler evas_direct3d_init(HWND window, int depth, int fullscreen)
 
    if (!D3DShaderPack::Current()->Initialize(device))
    {
-      Log("Failed to build shader pack");
+      ERR("Failed to build shader pack");
       device->Destroy();
       return NULL;
    }
@@ -141,7 +141,7 @@ Direct3DDeviceHandler evas_direct3d_init(HWND window, int depth, int fullscreen)
    if (!D3DImageCache::Current()->CreateImage(device, device->GetWidth(), device->GetHeight(),
       true, info))
    {
-      Log("Failed to create fonts image buffer");
+      WRN("Failed to create fonts image buffer");
       return NULL;
    }
    dev_ptr->fonts_buffer_image_id = info.id;
@@ -171,7 +171,7 @@ evas_direct3d_free(Direct3DDeviceHandler d3d)
    dev_ptr->device = NULL;
    delete dev_ptr;
 
-   Log("uninitialized");
+   DBG("uninitialized");
 }
 
 void
@@ -181,19 +181,19 @@ evas_direct3d_resize(Direct3DDeviceHandler d3d, int width, int height)
    D3DDevice *device = dev_ptr->device;
    if (!device->Reset(width, height, -1))
    {
-      Log("Failed to resize");
+      ERR("Failed to resize");
       return;
    }
    if (!D3DImageCache::Current()->ResizeImage(device, width, height,
       dev_ptr->fonts_buffer_image_id))
    {
-      Log("Failed to resize fonts image buffer");
+      WRN("Failed to resize fonts image buffer");
    }
    if (dev_ptr->layered)
    {
       DeleteDIBObjects(dev_ptr);
       if (!CreateDIBObjects(dev_ptr))
-         Log("Failed to create dib objects");
+         WRN("Failed to create dib objects");
    }
 }
 
@@ -210,13 +210,13 @@ evas_direct3d_set_fullscreen(Direct3DDeviceHandler d3d, int width, int height, i
 
    if (!device->Reset(width, height, fullscreen))
    {
-      Log("Failed to resize");
+      WRN("Failed to resize");
       return;
    }
    if (!D3DImageCache::Current()->ResizeImage(device, width, height,
       dev_ptr->fonts_buffer_image_id))
    {
-      Log("Failed to resize fonts image buffer");
+      WRN("Failed to resize fonts image buffer");
    }
 
    if (fullscreen == 0)
@@ -258,7 +258,7 @@ evas_direct3d_context_set_multiplier(Direct3DDeviceHandler d3d, int r, int g, in
 void
 evas_direct3d_render_all(Direct3DDeviceHandler d3d)
 {
-   Log("render");
+   DBG("render");
    assert(d3d != NULL);
    DevicePtr *dev_ptr = SelectDevice(d3d);
    D3DDevice *device = dev_ptr->device;
@@ -349,12 +349,12 @@ void evas_direct3d_line_draw(Direct3DDeviceHandler d3d, int x1, int y1, int x2,
    {
       line = new D3DObjectLine();
       scene->AddObject(line);
-      Log("New line object (total objects: %d)", scene->GetObjectCount());
+      DBG("New line object (total objects: %d)", scene->GetObjectCount());
    }
    else
    {
       line->SetFree(false);
-      Log("Line reused (object: %p)", line.Addr());
+      DBG("Line reused (object: %p)", line.Addr());
    }
 
    line->Setup(
@@ -377,12 +377,12 @@ void evas_direct3d_rectangle_draw(Direct3DDeviceHandler d3d, int x, int y, int w
    {
       rect = new D3DObjectRect();
       scene->AddObject(rect);
-      Log("New rect object (total objects: %d)", scene->GetObjectCount());
+      DBG("New rect object (total objects: %d)", scene->GetObjectCount());
    }
    else
    {
       rect->SetFree(false);
-      Log("Rect reused (object: %p)", rect.Addr());
+      DBG("Rect reused (object: %p)", rect.Addr());
    }
 
    rect->Setup(
@@ -403,7 +403,7 @@ Direct3DImageHandler evas_direct3d_image_load(Direct3DDeviceHandler d3d,
    RGBA_Image *evas_image = evas_common_load_image_from_file(file, key, lo);
    if (evas_image == NULL)
    {
-      Log("Failed to load image from %s", file);
+      WRN("Failed to load image from %s", file);
       return NULL;
    }
    int image_width = evas_image->cache_entry.w;
@@ -420,7 +420,7 @@ Direct3DImageHandler evas_direct3d_image_load(Direct3DDeviceHandler d3d,
    image->SetFree(true);
    scene->AddObject(image);
 
-   Log("New image object (total objects: %d)", scene->GetObjectCount());
+   DBG("New image object (total objects: %d)", scene->GetObjectCount());
 
    ImagePtr *ptr = new ImagePtr;
    ptr->ref = image;
@@ -447,7 +447,7 @@ Direct3DImageHandler evas_direct3d_image_new_from_data(Direct3DDeviceHandler d3d
    if (!D3DImageCache::Current()->InsertImage(device, image_data,
       image_width, image_height, info))
    {
-      Log("Couldnt add image to the cache");
+      WRN("Couldnt add image to the cache");
       return NULL;
    }
    char buf[64];
@@ -458,7 +458,7 @@ Direct3DImageHandler evas_direct3d_image_new_from_data(Direct3DDeviceHandler d3d
    image->SetFree(true);
    scene->AddObject(image);
 
-   Log("New image object (total objects: %d)", scene->GetObjectCount());
+   DBG("New image object (total objects: %d)", scene->GetObjectCount());
 
    ImagePtr *ptr = new ImagePtr;
    ptr->ref = image;
@@ -498,7 +498,7 @@ void evas_direct3d_image_data_put(Direct3DDeviceHandler d3d, Direct3DImageHandle
       return;
 
    if (!image_ref->UpdateImageData(image_data))
-      Log("Failed to update image data");
+      ERR("Failed to update image data");
 }
 
 void evas_direct3d_image_data_get(Direct3DDeviceHandler d3d, Direct3DImageHandler image,
@@ -540,7 +540,7 @@ void evas_direct3d_image_draw(Direct3DDeviceHandler d3d, Direct3DImageHandler im
          {
             images[i]->CopyTo(image_ref);
             found = true;
-            Log("Image object info reused, source: \"%s\"", image_ref->GetSource());
+            WRN("Image object info reused, source: \"%s\"", image_ref->GetSource());
             break;
          }
       }
@@ -556,7 +556,7 @@ void evas_direct3d_image_draw(Direct3DDeviceHandler d3d, Direct3DImageHandler im
       if (!D3DImageCache::Current()->InsertImage(device, (DWORD *)evas_image->image.data,
          evas_image->cache_entry.w, evas_image->cache_entry.h, info))
       {
-         Log("Couldnt add image to the cache");
+         WRN("Couldnt add image to the cache");
          return;
       }
       image_ref->Init(info.u, info.v, info.du, info.dv, info.id,
diff --git a/src/modules/engines/direct3d/evas_direct3d_object_font.cpp b/src/modules/engines/direct3d/evas_direct3d_object_font.cpp
index 7730f7c..f072e87 100644
--- a/src/modules/engines/direct3d/evas_direct3d_object_font.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_object_font.cpp
@@ -113,7 +113,7 @@ D3DObjectFont::Glyph *D3DObjectFont::GetGlyph(void *source)
 {
    if (_image_id < 0)
    {
-      Log("Font is not initialized");
+      WRN("Font is not initialized");
       return NULL;
    }
    for (int i = 0; i < _glyphs.Length(); i++)
@@ -129,7 +129,7 @@ D3DObjectFont::Glyph *D3DObjectFont::AddGlyph(D3DDevice *d3d, void *source,
 {
    if (_image_id < 0)
    {
-      Log("Font is not initialized");
+      WRN("Font is not initialized");
       return NULL;
    }
    for (int i = 0; i < _glyphs.Length(); i++)
diff --git a/src/modules/engines/direct3d/evas_direct3d_object_image.cpp b/src/modules/engines/direct3d/evas_direct3d_object_image.cpp
index 3bf2f38..3bfbe1e 100644
--- a/src/modules/engines/direct3d/evas_direct3d_object_image.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_object_image.cpp
@@ -139,7 +139,7 @@ void D3DObjectImage::EndCache(D3DDevice *d3d)
       cur += groups[i].num * 6;
    }
 
-   Log("Image cache drawn: %d items, %d groups", _cache.Length(), groups.Length());
+   DBG("Image cache drawn: %d items, %d groups", _cache.Length(), groups.Length());
    _cache_enabled = false;
 }
 
@@ -147,7 +147,7 @@ void D3DObjectImage::Draw(D3DDevice *d3d)
 {
    _dirty = false;
 
-   Log("Image draw: (%.3f, %.3f, %.3f, %.3f)", _x, _y, _w, _h);
+   DBG("Image draw: (%.3f, %.3f, %.3f, %.3f)", _x, _y, _w, _h);
 
    if (_cache_enabled)
    {
diff --git a/src/modules/engines/direct3d/evas_direct3d_object_line.cpp b/src/modules/engines/direct3d/evas_direct3d_object_line.cpp
index 5c0f774..9442243 100644
--- a/src/modules/engines/direct3d/evas_direct3d_object_line.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_object_line.cpp
@@ -28,7 +28,7 @@ void D3DObjectLine::EndCache(D3DDevice *d3d)
    d3d->GetDevice()->DrawPrimitiveUP(D3DPT_LINELIST, _cache.Length() / 2, 
       _cache.Data(), sizeof(Vertex));
 
-   Log("Line cache drawn: %d items", _cache.Length() / 2);
+   DBG("Line cache drawn: %d items", _cache.Length() / 2);
    _cache_enabled = false;
 }
 
diff --git a/src/modules/engines/direct3d/evas_direct3d_object_rect.cpp b/src/modules/engines/direct3d/evas_direct3d_object_rect.cpp
index f37e28e..ebdd22b 100644
--- a/src/modules/engines/direct3d/evas_direct3d_object_rect.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_object_rect.cpp
@@ -27,7 +27,7 @@ void D3DObjectRect::EndCache(D3DDevice *d3d)
    d3d->GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLELIST, _cache.Length() / 3,
       _cache.Data(), sizeof(Vertex));
 
-   Log("Rect cache drawn: %d items", _cache.Length() / 6);
+   DBG("Rect cache drawn: %d items", _cache.Length() / 6);
    _cache_enabled = false;
 }
 
diff --git a/src/modules/engines/direct3d/evas_direct3d_shader_pack.cpp b/src/modules/engines/direct3d/evas_direct3d_shader_pack.cpp
index 6d7a789..d9c868f 100644
--- a/src/modules/engines/direct3d/evas_direct3d_shader_pack.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_shader_pack.cpp
@@ -34,11 +34,11 @@ bool D3DShaderPack::Initialize(D3DDevice *d3d)
 {
    bool res = true;
    if (!(res = InitVertexDeclarations(d3d) && res))
-      Log("Failed to create vdecl set");
+      WRN("Failed to create vdecl set");
    if (!(res = InitVertexShaders(d3d) && res))
-      Log("Failed to create vs set");
+      WRN("Failed to create vs set");
    if (!(res = InitPixelShaders(d3d) && res))
-      Log("Failed to create ps set");
+      WRN("Failed to create ps set");
    return res;
 }
 
@@ -280,11 +280,11 @@ void *D3DShaderPack::CompileShader(D3DDevice *d3d, bool make_vs,
 
    if (FAILED(res))
    {
-      Log("Shader %s compilation failed, code = %X", name, res);
+      ERR("Shader %s compilation failed, code = %X", name, res);
       if (error_msgs == NULL)
          return NULL;
       const char *mess = (const char *)error_msgs->GetBufferPointer();
-      Log("Error output:\n%s", mess);
+      ERR("Error output:\n%s", mess);
       error_msgs->Release();
       return NULL;
    }
@@ -310,7 +310,7 @@ void *D3DShaderPack::CompileShader(D3DDevice *d3d, bool make_vs,
 
    if (FAILED(res))
    {
-      Log("Shader %s creation failed, code = %X", name, res);
+      WRN("Shader %s creation failed, code = %X", name, res);
       return NULL;
    }
    return res_ptr;
diff --git a/src/modules/engines/direct3d/evas_direct3d_vertex_buffer_cache.cpp b/src/modules/engines/direct3d/evas_direct3d_vertex_buffer_cache.cpp
index 5b5da7b..8d3dd45 100644
--- a/src/modules/engines/direct3d/evas_direct3d_vertex_buffer_cache.cpp
+++ b/src/modules/engines/direct3d/evas_direct3d_vertex_buffer_cache.cpp
@@ -64,7 +64,7 @@ bool D3DVertexBufferCache::InitBuffer(D3DDevice *d3d, BYTE *data, int size, Cach
       CacheEntry new_entry;
       if (!CreateEntry(d3d, new_entry, size))
       {
-         Log("Failed to create new vbcache entry");
+	WRN("Failed to create new vbcache entry");
          return false;
       }
       _cache.Add(new_entry);
@@ -80,7 +80,7 @@ bool D3DVertexBufferCache::InitBuffer(D3DDevice *d3d, BYTE *data, int size, Cach
    assert(ce != NULL);
    if (!InsertData(*ce, data, size))
    {
-      Log("Failed to insert vbcache data");
+      WRN("Failed to insert vbcache data");
       return false;
    }
    return true;
diff --git a/src/modules/engines/direct3d/evas_engine.c b/src/modules/engines/direct3d/evas_engine.c
index 736d3b7..8514f75 100644
--- a/src/modules/engines/direct3d/evas_engine.c
+++ b/src/modules/engines/direct3d/evas_engine.c
@@ -15,6 +15,7 @@ struct _Render_Engine
    int in_redraw : 1;
 };
 
+int _evas_engine_direct3d_log_dom = -1;
 
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
@@ -55,7 +56,7 @@ _output_setup(int width, int height, int rotation, HWND window, int depth, int f
    evas_common_font_init();
    evas_common_draw_init();
    evas_common_tilebuf_init();
-
+   
    if ((re->d3d = evas_direct3d_init(window, depth, fullscreen)) == 0)
      {
      free(re);
@@ -93,8 +94,7 @@ eng_setup(Evas *e, void *info)
 {
    Render_Engine *re;
    Evas_Engine_Info_Direct3D *in;
-   re = (Render_Engine *)e->engine.data.output;
-
+   re = (Render_Engine *)e->engine.data.output;   
    in = (Evas_Engine_Info_Direct3D *)info;
    if (e->engine.data.output == NULL)
      {
@@ -533,6 +533,13 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+    /* Initialize the log domain */
+   _evas_engine_direct3d_log_dom = eina_log_domain_register("EvasDirect3D", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_direct3d_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Direct3D engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -573,6 +580,10 @@ module_open(Evas_Module *em)
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
 
+//   ORD(image_map4_draw);
+//   ORD(image_map_surface_new);
+//   ORD(image_map_surface_free);
+
 /*
    ORD(gradient2_color_np_stop_insert);
    ORD(gradient2_clear);
@@ -603,6 +614,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_direct3d_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/direct3d/evas_engine.h b/src/modules/engines/direct3d/evas_engine.h
index 84c0431..da1ebff 100644
--- a/src/modules/engines/direct3d/evas_engine.h
+++ b/src/modules/engines/direct3d/evas_engine.h
@@ -14,15 +14,42 @@ extern "C" {
 #define EVAS_INLINE_ARRAY_H  // We dont need that and it is buggy
 
 #include "evas_common.h"
-#include "evas_private.h"
 
 #ifdef __cplusplus
 }
 #endif
 
+
 //#define ENABLE_LOG_PRINTF
+
+extern int _evas_engine_direct3d_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_direct3d_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_direct3d_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_direct3d_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_direct3d_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_direct3d_log_dom, __VA_ARGS__)
+
 #ifdef ENABLE_LOG_PRINTF
-#define Log(str, ...) printf("D3D "str"\n", __VA_ARGS__)
+#define Log(str, ...) INF("D3D "str, __VA_ARGS__)
 #else
 #define Log(str, ...)
 #endif
@@ -31,6 +58,7 @@ typedef void * Direct3DDeviceHandler;
 typedef void * Direct3DImageHandler;
 typedef void * Direct3DFontGlyphHandler;
 
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/src/modules/engines/directfb/Makefile.in b/src/modules/engines/directfb/Makefile.in
index aeb8dd5..41f089f 100644
--- a/src/modules/engines/directfb/Makefile.in
+++ b/src/modules/engines/directfb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -306,17 +306,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -352,8 +355,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -492,7 +495,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/directfb/evas_engine.c b/src/modules/engines/directfb/evas_engine.c
index 1a9a489..91a751e 100644
--- a/src/modules/engines/directfb/evas_engine.c
+++ b/src/modules/engines/directfb/evas_engine.c
@@ -17,6 +17,7 @@
 //#define DFB_DEBUG_IMAGE 1
 //#define DFB_DEBUG_FLAGS 1
 //#define DFB_DEBUG_ACCELERATION 1
+int _evas_engine_directfb_log_dom = -1;
 
 static Evas_Func func = {};
 static Evas_Func parent_func = {};
@@ -69,8 +70,8 @@ _dfb_surface_clear(IDirectFBSurface *surface, int x, int y, int w, int h)
    return;
 
  error:
-   fprintf(stderr, "ERROR: could not clear surface: %s\n",
-	   DirectFBErrorString(r));
+   ERR("DirectFB: could not clear surface: %s",
+	 DirectFBErrorString(r));
 }
 
 static void
@@ -93,7 +94,7 @@ _image_autoset_alpha(DirectFB_Engine_Image_Entry *image)
    r = surface->GetPixelFormat(surface, &fmt);
    if (r != DFB_OK)
      {
-	fprintf(stderr, "ERROR: could not get pixel format: %s\n",
+       ERR("Could not get pixel format: %s",
 		DirectFBErrorString(r));
 	return;
      }
@@ -114,8 +115,8 @@ _dfb_surface_update(IDirectFBSurface *surface, int x, int y, int w, int h)
    cr.y2 = y + h - 1;
    r = surface->Flip(surface, &cr, DSFLIP_NONE);
    if (r != DFB_OK)
-     fprintf(stderr, "ERROR: could not update surface: %s\n",
-	     DirectFBErrorString(r));
+     WRN("Could not update surface: %s",
+	   DirectFBErrorString(r));
 }
 
 static IDirectFBSurface *
@@ -138,8 +139,8 @@ _dfb_surface_from_data(IDirectFB *dfb, int w, int h, void *data)
    r = dfb->CreateSurface(dfb, &desc, &s);
    if (r != DFB_OK)
      {
-	fprintf(stderr, "ERROR: cannot create DirectFB surface: %s\n",
-		DirectFBErrorString(r));
+	ERR("Cannot create DirectFB surface: %s",
+		     DirectFBErrorString(r));
 	return NULL;
      }
 
@@ -165,14 +166,14 @@ _dfb_blit_accel_caps_print(IDirectFBSurface *dst, IDirectFBSurface *src)
    r = dst->GetAccelerationMask(dst, src, &mask);
    if (r != DFB_OK)
      {
-	fprintf(stderr, "ERROR: Could not retrieve acceleration mask: %s\n",
+	ERR("Could not retrieve acceleration mask: %s",
 		DirectFBErrorString(r));
 	return;
      }
 
-   fputs("Acceleration: ", stderr);
+   DBG("Acceleration: ");
 
-#define O(m) if (mask & m) fputs(#m " ", stderr)
+#define O(m) if (mask & m) DBG(#m " ")
    O(DFXL_FILLRECTANGLE);
    O(DFXL_DRAWRECTANGLE);
    O(DFXL_DRAWLINE);
@@ -183,8 +184,7 @@ _dfb_blit_accel_caps_print(IDirectFBSurface *dst, IDirectFBSurface *src)
    O(DFXL_DRAWSTRING);
 #undef O
 
-   if (mask == DFXL_NONE) fputs("<NONE>", stderr);
-   fputc('\n', stderr);
+   if (mask == DFXL_NONE) DBG("<NONE>");
 #endif /* DFB_DEBUG_ACCELERATION */
 }
 
@@ -300,14 +300,14 @@ _dfb_surface_set_color_from_context(IDirectFBSurface *surface, RGBA_Draw_Context
      goto error;
 
 #ifdef DFB_DEBUG_FLAGS
-   printf("DRAW: color=%d %d %d %d, flags=%s\n",
+   DBG("Color=%d %d %d %d, flags=%s",
 	  r, g, b, a, _dfb_draw_flags_str(flags));
 #endif /* DFB_DEBUG_FLAGS */
 
    return 1;
 
  error:
-   fprintf(stderr, "ERROR: could not set color from context: %s\n",
+   ERR("Could not set color from context: %s",
 	   DirectFBErrorString(res));
    return 0;
 }
@@ -354,7 +354,7 @@ _dfb_surface_set_blit_params(DirectFB_Engine_Image_Entry *d, DirectFB_Engine_Ima
      goto error;
 
 #ifdef DFB_DEBUG_FLAGS
-   printf("BLIT: sfunc=%s, dfunc=%s, color=%d %d %d %d\n\tblit=%s\n\tdraw=%s\n",
+   DBG("sfunc=%s, dfunc=%s, color=%d %d %d %d\n\tblit=%s\n\tdraw=%s",
 	  _dfb_blend_func_str(src_func), _dfb_blend_func_str(dst_func),
 	  r, g, b, a,
 	  _dfb_blit_flags_str(blit_flags), _dfb_draw_flags_str(draw_flags));
@@ -363,8 +363,8 @@ _dfb_surface_set_blit_params(DirectFB_Engine_Image_Entry *d, DirectFB_Engine_Ima
    return 1;
 
  error:
-   fprintf(stderr, "ERROR: Could not set blit params: %s\n",
-	   DirectFBErrorString(res));
+   ERR("Could not set blit params: %s",
+	 DirectFBErrorString(res));
    return 0;
 }
 
@@ -386,9 +386,8 @@ _dfb_lock_and_sync_image(IDirectFBSurface *surface, RGBA_Image *image, DFBSurfac
    if (pitch != (sw * 4))
      {
 	/* XXX TODO: support other pixel formats. */
-	fprintf(stderr,
-		"ERROR: IDirectFBSurface pitch(%d) is not supported: "
-		"should be %d.\n",
+       ERR("IDirectFBSurface pitch(%d) is not supported: "
+		"should be %d.",
 		pitch, sw * 4);
 	surface->Unlock(surface);
 	return 0;
@@ -408,6 +407,19 @@ _dfb_surface_for_each_cutout(IDirectFBSurface *surface, RGBA_Draw_Context *dc, _
    int i;
 
    rects = evas_common_draw_context_apply_cutouts(dc);
+   if (!rects)
+     {
+	DFBRegion cr;
+	cr.x1 = 0;
+	cr.y1 = 0;
+	surface->GetSize(surface, &cr.x2, &cr.y2);
+	cr.x2 -= 1;
+	cr.y2 -= 1;
+	surface->SetClip(surface, NULL);
+	cb(surface, dc, &cr, data);
+	return;
+     }
+
    for (i = 0; i < rects->active; ++i)
      {
 	Cutout_Rect *r;
@@ -600,7 +612,7 @@ evas_cache_image_dfb_mem_size_get(Engine_Image_Entry *eie)
    r = deie->surface->GetSize(deie->surface, &w, &h);
    if (r != DFB_OK)
      {
-	fprintf(stderr, "ERROR: Could not get surface size: %s\n",
+	ERR("Could not get surface size: %s",
 		DirectFBErrorString(r));
 	return size;
      }
@@ -616,22 +628,20 @@ evas_cache_image_dfb_debug(const char *context, Engine_Image_Entry* eie)
 {
    DirectFB_Engine_Image_Entry *eim = (DirectFB_Engine_Image_Entry *)eie;
 
-   fprintf(stderr, "*** %s image (%p) ***\n", context, eim);
+   DBG("*** %s image (%p) ***", context, eim);
    if (eim)
      {
-        fprintf(stderr,
-		"* W: %d\n"
+       DBG("* W: %d\n"
 		"* H: %d\n"
 		"* R: %d\n"
 		"* Key: %s\n"
-		"* DFB Surface: %p\n",
+		"* DFB Surface: %p",
 		eie->w, eie->h, eie->references, eie->cache_key, eim->surface);
 
         if (eie->src)
-          fprintf(stderr,
-		  "* Pixels: %p\n", ((RGBA_Image*) eie->src)->image.data);
+          DBG("* Pixels: %p", ((RGBA_Image*) eie->src)->image.data);
      }
-   fputs("*** ***\n", stderr);
+   DBG("*** ***");
 }
 #endif
 
@@ -662,13 +672,10 @@ static void *
 evas_engine_dfb_info(Evas* e __UNUSED__)
 {
    Evas_Engine_Info_DirectFB *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_DirectFB));
    if (!info)
      return NULL;
-
    info->magic.magic = rand();
-
    return info;
 }
 
@@ -676,7 +683,6 @@ static void
 evas_engine_dfb_info_free(Evas *e __UNUSED__, void *in)
 {
    Evas_Engine_Info_DirectFB *info = in;
-
    free(info);
 }
 
@@ -688,29 +694,28 @@ _is_dfb_data_ok(IDirectFB *idfb, IDirectFBSurface *surface, int w, int h)
 
    if (!idfb)
      {
-	fputs("ERROR: missing IDirectFB\n", stderr);
+	ERR("missing IDirectFB");
 	return EINA_FALSE;
      }
    dfb = idfb;
 
    if (!surface)
      {
-	fputs("ERROR: missing IDirectFBSurface\n", stderr);
+       ERR("missing IDirectFBSurface");
 	return EINA_FALSE;
      }
 
    r = surface->GetSize(surface, &sw, &sh);
    if (r != DFB_OK)
      {
-	fprintf(stderr, "ERROR: could not get surface %p size: %s\n",
-		surface, DirectFBErrorString(r));
+       ERR("Could not get surface %p size: %s",
+	     surface, DirectFBErrorString(r));
 	return EINA_FALSE;
      }
 
    if ((w > sw) || (h > sh))
      {
-	fprintf(stderr,
-		"ERROR: requested size is larger than surface: %dx%d > %dx%d\n",
+       ERR("Requested size is larger than surface: %dx%d > %dx%d",
 		w, h, sw, sh);
 	return EINA_FALSE;
      }
@@ -737,7 +742,7 @@ _evas_common_init(void)
    evas_common_line_init();
    evas_common_font_init();
    evas_common_draw_init();
-   evas_common_tilebuf_init();
+   evas_common_tilebuf_init();  
 }
 
 static int
@@ -752,7 +757,7 @@ evas_engine_dfb_output_reconfigure(Render_Engine *re, int w, int h)
    re->tb = evas_common_tilebuf_new(w, h);
    if (!re->tb)
      {
-	fputs("ERROR: could not allocate tile buffer.\n", stderr);
+	ERR("Could not allocate tile buffer.");
 	goto failed_tilebuf;
      }
    evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
@@ -765,7 +770,7 @@ evas_engine_dfb_output_reconfigure(Render_Engine *re, int w, int h)
      evas_cache_engine_image_engine(re->cache, re->spec->surface);
    if (!re->screen_image)
      {
-	fputs("ERROR: RGBA_Image allocation from DFB failed\n", stderr);
+	ERR("RGBA_Image allocation from DFB failed");
 	goto failed_image;
      }
    re->screen_image->flags.engine_surface = 1;
@@ -780,7 +785,7 @@ evas_engine_dfb_output_reconfigure(Render_Engine *re, int w, int h)
    re->tb = NULL;
  failed_tilebuf:
    re->screen_image = NULL;
-   fputs("ERROR: Evas DirectFB reconfigure failed\n", stderr);
+   ERR("Evas DirectFB reconfigure failed");
    return 0;
 }
 
@@ -806,13 +811,13 @@ _dfb_output_setup(int w, int h, const struct Evas_Engine_DirectFB_Spec *spec)
 					    evas_common_image_cache_get());
    if (!re->cache)
      {
-	fputs("ERROR: Evas_Cache_Engine_Image allocation failed!\n", stderr);
+	ERR("Evas_Cache_Engine_Image allocation failed!");
 	goto fatal_after_engine;
      }
 
    if (!evas_engine_dfb_output_reconfigure(re, w, h))
      {
-	fputs("ERROR: Could not reconfigure evas engine.\n", stderr);
+	ERR("Could not reconfigure evas engine.");
 	goto fatal_after_reconfigure;
      }
 
@@ -826,7 +831,7 @@ _dfb_output_setup(int w, int h, const struct Evas_Engine_DirectFB_Spec *spec)
  fatal_after_engine:
    free(re);
  fatal:
-   fputs("FATAL: unable to continue, abort()!\n", stderr);
+   CRIT("DirectFB: unable to continue, abort()!");
    abort();
    return NULL;
 }
@@ -874,7 +879,7 @@ static void
 evas_engine_dfb_output_resize(void *data, int w, int h)
 {
    if (!evas_engine_dfb_output_reconfigure(data, w, h))
-     fputs("ERROR: failed to resize DirectFB evas\n", stderr);
+     ERR("Failed to resize DirectFB evas");
 }
 
 static void
@@ -1018,7 +1023,7 @@ evas_engine_dfb_output_idle_flush(void *data)
    Render_Engine *re = data;
 
    if (re->update_regions_count != 0)
-     fputs("ERROR: update_regions_count not 0 as it should be!\n", stderr);
+     ERR("update_regions_count not 0 as it should be!");
 
    free(re->update_regions);
    re->update_regions_count = 0;
@@ -1087,13 +1092,22 @@ _cb_draw_rectangle(IDirectFBSurface *surface, RGBA_Draw_Context *dc __UNUSED__,
 }
 
 static void
-evas_engine_dfb_rectangle_draw(void *data __UNUSED__, void *context, void *surface, int x, int y, int w, int h)
+evas_engine_dfb_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
 {
    IDirectFBSurface *screen = surface;
+   Render_Engine *re = data;
+   RGBA_Draw_Context *dc = context;
    Eina_Rectangle r;
 
    if (!_dfb_surface_set_color_from_context(screen, context))
-     return;
+     {
+	if (dc->render_op != EVAS_RENDER_COPY)
+	  return;
+	if (!re->screen_image->cache_entry.src->flags.alpha)
+	  return;
+	screen->SetColor(screen, 0, 0, 0, 0);
+	screen->SetDrawingFlags(screen, DSDRAW_NOFX);
+     }
 
    EINA_RECTANGLE_SET(&r, x, y, w, h);
    _dfb_surface_for_each_cutout(screen, context, _cb_draw_rectangle, &r);
@@ -1329,7 +1343,7 @@ evas_engine_dfb_image_data_get(void *data __UNUSED__, void *image, int to_write,
 	  break;
 
        error:
-	  fprintf(stderr, "ERROR: could not lock surface %p: %s\n",
+	  ERR("Could not lock surface %p: %s",
 		  s, DirectFBErrorString(r));
 	  *image_data = NULL;
 	  break;
@@ -1614,6 +1628,12 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&parent_func, "software_generic")) return 0;
+   _evas_engine_directfb_log_dom = eina_log_domain_register("EvasEngineDirectFB",EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_directfb_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the DirectFb engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = parent_func;
    /* now to override methods */
@@ -1621,6 +1641,7 @@ module_open(Evas_Module *em)
    ORD(info);
    ORD(info_free);
    ORD(setup);
+   ORD(canvas_alpha_get);
    ORD(output_free);
    ORD(output_resize);
    ORD(output_tile_size_set);
@@ -1658,6 +1679,11 @@ module_open(Evas_Module *em)
    ORD(gradient_draw);
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
+
+//   ORD(image_map4_draw);
+//   ORD(image_map_surface_new);
+//   ORD(image_map_surface_free);
+
    /* now advertise out own api */
    em->functions = (void *)(&func);
    return 1;
@@ -1666,6 +1692,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+   eina_log_domain_unregister(_evas_engine_directfb_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/directfb/evas_engine.h b/src/modules/engines/directfb/evas_engine.h
index dff4a1f..a8d8357 100644
--- a/src/modules/engines/directfb/evas_engine.h
+++ b/src/modules/engines/directfb/evas_engine.h
@@ -5,6 +5,33 @@
 #include "evas_private.h"
 #include "Evas_Engine_DirectFB.h"
 
+extern int _evas_engine_directfb_log_dom ;
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_directfb_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_directfb_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_directfb_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_directfb_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_directfb_log_dom, __VA_ARGS__)
+
 typedef struct _DirectFB_Engine_Image_Entry DirectFB_Engine_Image_Entry;
 struct _DirectFB_Engine_Image_Entry
 {
diff --git a/src/modules/engines/fb/Makefile.in b/src/modules/engines/fb/Makefile.in
index 8dd611f..ae6f957 100644
--- a/src/modules/engines/fb/Makefile.in
+++ b/src/modules/engines/fb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -310,17 +310,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -362,8 +365,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -511,7 +514,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/fb/evas_engine.c b/src/modules/engines/fb/evas_engine.c
index 17e5c01..76398a7 100644
--- a/src/modules/engines/fb/evas_engine.c
+++ b/src/modules/engines/fb/evas_engine.c
@@ -3,6 +3,8 @@
 #include "evas_engine.h"
 #include "Evas_Engine_FB.h"
 
+int _evas_engine_fb_log_dom = -1;
+
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -76,7 +78,6 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_FB *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_FB));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -88,7 +89,6 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_FB *in;
-
    in = (Evas_Engine_Info_FB *)info;
    free(in);
 }
@@ -263,6 +263,12 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   _evas_engine_fb_log_dom = eina_log_domain_register("Evas_fb_engine", EVAS_DEFAULT_LOG_COLOR);
+   if (_evas_engine_fb_log_dom < 0) {
+     EINA_LOG_ERR("Impossible to create a log domain for FB engine.\n");
+     return 0;
+   }
+
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -289,6 +295,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_fb_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/fb/evas_engine.h b/src/modules/engines/fb/evas_engine.h
index d514582..295e91e 100644
--- a/src/modules/engines/fb/evas_engine.h
+++ b/src/modules/engines/fb/evas_engine.h
@@ -3,6 +3,32 @@
 
 #include "evas_fb.h"
 
+extern int _evas_engine_fb_log_dom;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_fb_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_fb_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_fb_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_fb_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_fb_log_dom, __VA_ARGS__)
+
 typedef struct _Outbuf                Outbuf;
 
 typedef enum   _Outbuf_Depth          Outbuf_Depth;
diff --git a/src/modules/engines/fb/evas_fb_main.c b/src/modules/engines/fb/evas_fb_main.c
index c764a22..7d2c73a 100644
--- a/src/modules/engines/fb/evas_fb_main.c
+++ b/src/modules/engines/fb/evas_fb_main.c
@@ -377,10 +377,10 @@ fb_getmode(void)
       bpp = mode->fb_var.bits_per_pixel / 8;
       break;
      default:
-      fprintf(stderr, "Cannot handle framebuffer of depth %i\n",
-	      mode->fb_var.bits_per_pixel);
+      ERR("Cannot handle framebuffer of depth %i",
+	     mode->fb_var.bits_per_pixel);
       fb_cleanup();
-       free(mode);
+      free(mode);
       return NULL;
   }
   mode->depth = depth;
@@ -418,7 +418,7 @@ fb_setvt(int vtno)
   chown(vtname, getuid(), getgid());
   if (access(vtname,R_OK | W_OK) == -1)
     {
-      fprintf(stderr,"access %s: %s\n",vtname,strerror(errno));
+      CRIT("Access %s: %s",vtname,strerror(errno));
       exit(1);
     }
   open(vtname,O_RDWR);
@@ -463,7 +463,7 @@ fb_init(int vt, int device)
      }
    if (fb == -1)
      {
-	fprintf(stderr,"open %s: %s\n", dev, strerror(errno));
+	CRIT("open %s: %s", dev, strerror(errno));
 	fb_cleanup();
 	exit(1);
      }
@@ -495,7 +495,7 @@ fb_init(int vt, int device)
       tty = 0;
    else if ((tty = open("/dev/tty",O_RDWR)) == -1)
      {
-	fprintf(stderr,"open %s: %s\n", "/dev/tty", strerror(errno));
+	CITICAL("open %s: %s", "/dev/tty", strerror(errno));
 	exit(1);
      }
    if (tty)
@@ -527,7 +527,7 @@ fb_postinit(FB_Mode *mode)
 
   if (fb_fix.type != FB_TYPE_PACKED_PIXELS)
     {
-      fprintf(stderr,"can handle only packed pixel frame buffers\n");
+      CRIT("can handle only packed pixel frame buffers");
       fb_cleanup();
       exit(1);
     }
diff --git a/src/modules/engines/fb/evas_outbuf.c b/src/modules/engines/fb/evas_outbuf.c
index 3225024..ec97910 100644
--- a/src/modules/engines/fb/evas_outbuf.c
+++ b/src/modules/engines/fb/evas_outbuf.c
@@ -12,7 +12,7 @@ void
 evas_fb_outbuf_fb_free(Outbuf *buf)
 {
    /* FIXME: impliment */
-   printf("destroying fb info.. not implemented!!!! WARNING. LEAK!\n");
+   WRN("destroying fb info.. not implemented!!!! WARNING. LEAK!");
    if (buf->priv.back_buf)
      evas_cache_image_drop(&buf->priv.back_buf->cache_entry);
    free(buf);
diff --git a/src/modules/engines/gl_common/Makefile.am b/src/modules/engines/gl_common/Makefile.am
index ddce599..fc4ec02 100644
--- a/src/modules/engines/gl_common/Makefile.am
+++ b/src/modules/engines/gl_common/Makefile.am
@@ -12,19 +12,62 @@ if BUILD_ENGINE_GL_COMMON
 
 noinst_LTLIBRARIES = libevas_engine_gl_common.la
 libevas_engine_gl_common_la_SOURCES  = \
+evas_gl_private.h \
+evas_gl_common.h \
 evas_gl_context.c \
-evas_gl_font.c \
-evas_gl_gradient.c \
-evas_gl_image.c \
-evas_gl_line.c \
-evas_gl_misc.c \
-evas_gl_polygon.c \
+evas_gl_shader.c \
+shader/font_frag.h \
+shader/font_frag_bin_s3c6410.h \
+shader/font_vert.h \
+shader/font_vert_bin_s3c6410.h \
+shader/img_frag.h \
+shader/img_frag_bin_s3c6410.h \
+shader/img_vert.h \
+shader/img_vert_bin_s3c6410.h \
+shader/rect_frag.h \
+shader/rect_frag_bin_s3c6410.h \
+shader/rect_vert.h \
+shader/rect_vert_bin_s3c6410.h \
+shader/yuv_frag.h \
+shader/yuv_frag_bin_s3c6410.h \
+shader/yuv_vert.h \
+shader/yuv_vert_bin_s3c6410.h \
+shader/tex_frag.h \
+shader/tex_frag_bin_s3c6410.h \
+shader/tex_vert.h \
+shader/tex_vert_bin_s3c6410.h \
 evas_gl_rectangle.c \
-evas_gl_texture.c
+evas_gl_texture.c \
+evas_gl_image.c \
+evas_gl_font.c 
 
-libevas_engine_gl_common_la_LIBADD = @EINA_LIBS@ @evas_engine_gl_common_libs@
+
+#evas_gl_gradient.c \
+#evas_gl_line.c \
+#evas_gl_misc.c \
+#evas_gl_polygon.c \
+#
+
+libevas_engine_gl_common_la_LIBADD = @EINA_LIBS@ @evas_engine_gl_common_libs@ @dlopen_libs@
 endif
 
 EXTRA_DIST = \
-evas_gl_private.h \
-evas_gl_common.h
+shader/compile-s3c6410.sh \
+shader/compile-sgx.sh \
+shader/make-c-bin.sh \
+shader/make-c-str.sh \
+shader/img_frag.shd \
+shader/img_frag_s3c6410.asm \
+shader/img_vert.shd \
+shader/rect_frag.shd \
+shader/rect_frag_s3c6410.asm \
+shader/rect_vert.shd \
+shader/font_frag.shd \
+shader/font_frag_s3c6410.asm \
+shader/font_vert.shd \
+shader/yuv_frag.shd \
+shader/yuv_frag_s3c6410.asm \
+shader/yuv_vert.shd \
+shader/tex_frag.shd \
+shader/tex_frag_s3c6410.asm \
+shader/tex_vert.shd
diff --git a/src/modules/engines/gl_common/Makefile.in b/src/modules/engines/gl_common/Makefile.in
index f0cceb7..faab214 100644
--- a/src/modules/engines/gl_common/Makefile.in
+++ b/src/modules/engines/gl_common/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -52,19 +52,26 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libevas_engine_gl_common_la_DEPENDENCIES =
-am__libevas_engine_gl_common_la_SOURCES_DIST = evas_gl_context.c \
-	evas_gl_font.c evas_gl_gradient.c evas_gl_image.c \
-	evas_gl_line.c evas_gl_misc.c evas_gl_polygon.c \
-	evas_gl_rectangle.c evas_gl_texture.c
+am__libevas_engine_gl_common_la_SOURCES_DIST = evas_gl_private.h \
+	evas_gl_common.h evas_gl_context.c evas_gl_shader.c \
+	shader/font_frag.h shader/font_frag_bin_s3c6410.h \
+	shader/font_vert.h shader/font_vert_bin_s3c6410.h \
+	shader/img_frag.h shader/img_frag_bin_s3c6410.h \
+	shader/img_vert.h shader/img_vert_bin_s3c6410.h \
+	shader/rect_frag.h shader/rect_frag_bin_s3c6410.h \
+	shader/rect_vert.h shader/rect_vert_bin_s3c6410.h \
+	shader/yuv_frag.h shader/yuv_frag_bin_s3c6410.h \
+	shader/yuv_vert.h shader/yuv_vert_bin_s3c6410.h \
+	shader/tex_frag.h shader/tex_frag_bin_s3c6410.h \
+	shader/tex_vert.h shader/tex_vert_bin_s3c6410.h \
+	evas_gl_rectangle.c evas_gl_texture.c evas_gl_image.c \
+	evas_gl_font.c
 @BUILD_ENGINE_GL_COMMON_TRUE at am_libevas_engine_gl_common_la_OBJECTS =  \
 @BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_context.lo \
- at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_font.lo \
- at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_gradient.lo \
- at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_image.lo evas_gl_line.lo \
- at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_misc.lo \
- at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_polygon.lo \
+ at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_shader.lo \
 @BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_rectangle.lo \
- at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_texture.lo
+ at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_texture.lo \
+ at BUILD_ENGINE_GL_COMMON_TRUE@	evas_gl_image.lo evas_gl_font.lo
 libevas_engine_gl_common_la_OBJECTS =  \
 	$(am_libevas_engine_gl_common_la_OBJECTS)
 @BUILD_ENGINE_GL_COMMON_TRUE at am_libevas_engine_gl_common_la_rpath =
@@ -289,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -313,20 +323,62 @@ AM_CPPFLAGS = \
 
 @BUILD_ENGINE_GL_COMMON_TRUE at noinst_LTLIBRARIES = libevas_engine_gl_common.la
 @BUILD_ENGINE_GL_COMMON_TRUE at libevas_engine_gl_common_la_SOURCES = \
+ at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_private.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_common.h \
 @BUILD_ENGINE_GL_COMMON_TRUE at evas_gl_context.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_font.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_gradient.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_image.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_line.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_misc.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_polygon.c \
+ at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_shader.c \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/font_frag.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/font_frag_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/font_vert.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/font_vert_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/img_frag.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/img_frag_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/img_vert.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/img_vert_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/rect_frag.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/rect_frag_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/rect_vert.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/rect_vert_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/yuv_frag.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/yuv_frag_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/yuv_vert.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/yuv_vert_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/tex_frag.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/tex_frag_bin_s3c6410.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/tex_vert.h \
+ at BUILD_ENGINE_GL_COMMON_TRUE@shader/tex_vert_bin_s3c6410.h \
 @BUILD_ENGINE_GL_COMMON_TRUE at evas_gl_rectangle.c \
- at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_texture.c
+ at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_texture.c \
+ at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_image.c \
+ at BUILD_ENGINE_GL_COMMON_TRUE@evas_gl_font.c 
 
- at BUILD_ENGINE_GL_COMMON_TRUE@libevas_engine_gl_common_la_LIBADD = @EINA_LIBS@ @evas_engine_gl_common_libs@
+
+#evas_gl_gradient.c \
+#evas_gl_line.c \
+#evas_gl_misc.c \
+#evas_gl_polygon.c \
+#
+ at BUILD_ENGINE_GL_COMMON_TRUE@libevas_engine_gl_common_la_LIBADD = @EINA_LIBS@ @evas_engine_gl_common_libs@ @dlopen_libs@
 EXTRA_DIST = \
-evas_gl_private.h \
-evas_gl_common.h
+shader/compile-s3c6410.sh \
+shader/compile-sgx.sh \
+shader/make-c-bin.sh \
+shader/make-c-str.sh \
+shader/img_frag.shd \
+shader/img_frag_s3c6410.asm \
+shader/img_vert.shd \
+shader/rect_frag.shd \
+shader/rect_frag_s3c6410.asm \
+shader/rect_vert.shd \
+shader/font_frag.shd \
+shader/font_frag_s3c6410.asm \
+shader/font_vert.shd \
+shader/yuv_frag.shd \
+shader/yuv_frag_s3c6410.asm \
+shader/yuv_vert.shd \
+shader/tex_frag.shd \
+shader/tex_frag_s3c6410.asm \
+shader/tex_vert.shd
 
 all: all-am
 
@@ -336,8 +388,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -381,12 +433,9 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_context.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_font.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_gradient.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_image.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_line.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_misc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_polygon.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_rectangle.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_shader.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/evas_gl_texture.Plo at am__quote@
 
 .c.o:
@@ -421,7 +470,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/gl_common/evas_gl_common.h b/src/modules/engines/gl_common/evas_gl_common.h
index 926c346..d0f0bd4 100644
--- a/src/modules/engines/gl_common/evas_gl_common.h
+++ b/src/modules/engines/gl_common/evas_gl_common.h
@@ -1,15 +1,6 @@
 #ifndef EVAS_GL_COMMON_H
 #define EVAS_GL_COMMON_H
 
-#define EVAS_GL_COMMON_NOCUTOUTS 1
-
-/* FIXME: need to handle memory errors */
-/* FIXME: need to handle list errors */
-/* FIXME: need to handle gl errors */
-/* FIXME: need to free textures is texture ream runs out */
-/* FIXME: need to break image textures into meshes if too big */
-/* FIXME: need to page mesh textures if texture alloc fails */
-
 #include "evas_common.h"
 #include "evas_private.h"
 #include "config.h"
@@ -26,100 +17,148 @@
 # include <GL/glew.h>
 #else
 # define GL_GLEXT_PROTOTYPES
-#endif /* BUILD_ENGINE_GL_GLEW */
+#endif
 
 #ifdef BUILD_ENGINE_GL_QUARTZ
 # include <OpenGL/gl.h>
-# include <OpenGL/glu.h>
+# include <OpenGL/glext.h>
 #else
-# include <GL/gl.h>
-# include <GL/glu.h>
-#endif /* BUILD_ENGINE_GL_QUARTZ */
+# if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+#  if defined(GLES_VARIETY_S3C6410)
+#   include <GLES2/gl2.h>
+#  elif defined(GLES_VARIETY_SGX)
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#  endif
+# else
+#  include <GL/gl.h>
+#  include <GL/glext.h>
+# endif
+#endif
+
+#ifndef GL_TEXTURE_RECTANGLE_NV
+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
+#endif
 
+
+#define SHAD_VERTEX 0
+#define SHAD_COLOR  1
+#define SHAD_TEXUV  2
+#define SHAD_TEXUV2 3
+#define SHAD_TEXUV3 4
+
+typedef struct _Evas_GL_Program                      Evas_GL_Program;
+typedef struct _Evas_GL_Program_Source               Evas_GL_Program_Source;
+typedef struct _Evas_GL_Shared                       Evas_GL_Shared;
 typedef struct _Evas_GL_Context                      Evas_GL_Context;
+typedef struct _Evas_GL_Texture_Pool                 Evas_GL_Texture_Pool;
 typedef struct _Evas_GL_Texture                      Evas_GL_Texture;
 typedef struct _Evas_GL_Image                        Evas_GL_Image;
+typedef struct _Evas_GL_Font_Texture                 Evas_GL_Font_Texture;
+/*
 typedef struct _Evas_GL_Polygon                      Evas_GL_Polygon;
 typedef struct _Evas_GL_Polygon_Point                Evas_GL_Polygon_Point;
 typedef struct _Evas_GL_Gradient                     Evas_GL_Gradient;
-typedef struct _Evas_GL_Font_Texture                 Evas_GL_Font_Texture;
 typedef struct _Evas_GL_Font_Texture_Pool            Evas_GL_Font_Texture_Pool;
 typedef struct _Evas_GL_Font_Texture_Pool_Allocation Evas_GL_Font_Texture_Pool_Allocation;
+*/
 
-struct _Evas_GL_Context
+struct _Evas_GL_Program
 {
-   int             w, h;
+   GLuint vert, frag, prog;
+};
 
-   unsigned char   dither : 1;
-   unsigned char   blend : 1;
-   unsigned char   blend_alpha : 1;
-   unsigned char   r, g, b, a;
+struct _Evas_GL_Program_Source
+{
+   const char *src;
+   const unsigned int *bin;
+   int bin_size;
+};
 
+struct _Evas_GL_Shared
+{
+   Eina_List          *images;
+   
    struct {
-      unsigned char size : 1;
-      unsigned char dither : 1;
-      unsigned char blend : 1;
-      unsigned char color : 1;
-      unsigned char texture : 1;
-      unsigned char clip : 1;
-      unsigned char buf : 1;
-      unsigned char other : 1;
-   } change;
-
+      GLint max_texture_units;
+      GLint max_texture_size;
+      Eina_Bool tex_npo2 : 1;
+      Eina_Bool tex_rect : 1;
+   } info;
+   
    struct {
-      unsigned char active : 1;
-      int           x, y, w, h;
-   } clip;
-
+      Eina_List       *whole;
+      Eina_List       *atlas[33][3];
+   } tex;
+   
    struct {
-      int checked : 1;
-      int sgis_generate_mipmap : 1;
-      int nv_texture_rectangle : 1;
-      int arb_texture_non_power_of_two : 1;
-      int arb_program : 1;
-   } ext;
-
-   GLenum          read_buf;
-   GLenum          write_buf;
-
-   Evas_GL_Texture      *texture;
-   GLuint                font_texture;
-   unsigned char         font_texture_rectangle : 1;
-   unsigned char         texture_program : 1;
-
-   int             max_texture_depth;
-   int             max_texture_size;
-
-   int             references;
-
-   Eina_List      *images;
-   Eina_List      *tex_pool;
+      Evas_GL_Program  rect, img, font, yuv, tex;
+   } shader;
+   int references;
+   int w, h;
+};
 
+struct _Evas_GL_Context
+{
+   int                references;
+   int                w, h;
    RGBA_Draw_Context  *dc;
    
+   Evas_GL_Shared     *shared;
    struct {
-      GLhandleARB  prog, fshad;
-   } yuv422p;
+      int             x, y, w, h;
+      Eina_Bool       active : 1;
+   } clip;
+   struct {
+      Evas_GL_Image  *surface;
+      GLuint          cur_prog;
+      GLuint          cur_tex, cur_texu, cur_texv;
+      int             render_op;
+      Eina_Bool       smooth : 1;
+      Eina_Bool       blend : 1;
+      struct {
+         GLuint          cur_prog;
+         GLuint          cur_tex, cur_texum, cur_texv;
+         int             render_op;
+         Eina_Bool       smooth : 1;
+         Eina_Bool       blend : 1;
+      } current;
+   } shader;
+   struct {
+      int num;
+      int alloc;
+      GLshort *vertex;
+      GLubyte *color;
+      GLfloat *texuv;
+      GLfloat *texuv2;
+      GLfloat *texuv3;
+   } array;
+   struct {
+      Eina_Bool size : 1;
+   } change;
+   
+   Evas_GL_Image *def_surface;
 };
 
-struct _Evas_GL_Texture
+struct _Evas_GL_Texture_Pool
 {
    Evas_GL_Context *gc;
+   GLuint           texture, fb;
+   GLuint           intformat, format, dataformat;
    int              w, h;
-   int              tw, th;
-   int              uw, uh;
-
-   GLuint           texture, texture2, texture3;
-
-   unsigned char    smooth : 1;
-   unsigned char    changed : 1;
-   unsigned char    have_mipmaps : 1;
-   unsigned char    rectangle : 1;
-   unsigned char    not_power_of_two : 1;
-   unsigned char    opt : 1;
+   int              references;
+   int              slot, fslot;
+   Eina_List       *allocations;
+   Eina_Bool        whole : 1;
+};
 
+struct _Evas_GL_Texture
+{
+   Evas_GL_Context *gc;
+   Evas_GL_Texture_Pool *pt, *ptu, *ptv;
+   int              x, y, w, h;
+   double           sx1, sy1, sx2, sy2;
    int              references;
-   GLhandleARB      prog;
 };
 
 struct _Evas_GL_Image
@@ -128,8 +167,9 @@ struct _Evas_GL_Image
    RGBA_Image      *im;
    Evas_GL_Texture *tex;
    RGBA_Image_Loadopts load_opts;
-   int              putcount;
    int              references;
+   // if im->im == NULL, it's a render-surface so these here are used
+   int              w, h;
    struct {
       int           space;
       void         *data;
@@ -137,8 +177,15 @@ struct _Evas_GL_Image
    } cs;
    unsigned char    dirty : 1;
    unsigned char    cached : 1;
+   unsigned char    alpha : 1;
+   unsigned char    tex_only : 1;
 };
 
+struct _Evas_GL_Font_Texture
+{
+   Evas_GL_Texture *tex;
+};
+/*
 struct _Evas_GL_Polygon
 {
    Eina_List *points;
@@ -159,60 +206,118 @@ struct _Evas_GL_Gradient
    unsigned char    changed : 1;
 };
 
-struct _Evas_GL_Font_Texture
-{
-   Evas_GL_Context                      *gc;
-   int                                   x, y, w, h;
-   double                                tx1, ty1, tx2, ty2;
-   int                                   aw, ah;
-   GLuint                                texture;
-   Evas_GL_Font_Texture_Pool            *pool;
-   Evas_GL_Font_Texture_Pool_Allocation *alloc;
-};
-
 struct _Evas_GL_Font_Texture_Pool
 {
    Evas_GL_Context *gc;
    int              w, h;
    GLuint           texture;
-   int              references;
    unsigned char    rectangle : 1;
-   Eina_List       *allocations;
 };
-
-struct _Evas_GL_Font_Texture_Pool_Allocation
-{
-   Evas_GL_Font_Texture_Pool *pool;
-   int x, y, w, h;
-};
-
+*/
+
+extern Evas_GL_Program_Source shader_rect_frag_src;
+extern Evas_GL_Program_Source shader_rect_vert_src;
+extern Evas_GL_Program_Source shader_img_frag_src;
+extern Evas_GL_Program_Source shader_img_vert_src;
+extern Evas_GL_Program_Source shader_font_frag_src;
+extern Evas_GL_Program_Source shader_font_vert_src;
+extern Evas_GL_Program_Source shader_yuv_frag_src;
+extern Evas_GL_Program_Source shader_yuv_vert_src;
+extern Evas_GL_Program_Source shader_tex_frag_src;
+extern Evas_GL_Program_Source shader_tex_vert_src;
+
+void glerr(const char *file, const char *func, int line, const char *op);
+ 
 Evas_GL_Context  *evas_gl_common_context_new(void);
 void              evas_gl_common_context_free(Evas_GL_Context *gc);
 void              evas_gl_common_context_use(Evas_GL_Context *gc);
 void              evas_gl_common_context_resize(Evas_GL_Context *gc, int w, int h);
-void              evas_gl_common_context_color_set(Evas_GL_Context *gc, int r, int g, int b, int a);
-void              evas_gl_common_context_blend_set(Evas_GL_Context *gc, int blend);
-void              evas_gl_common_context_dither_set(Evas_GL_Context *gc, int dither);
-void              evas_gl_common_context_texture_set(Evas_GL_Context *gc, Evas_GL_Texture *tex, int smooth, int w, int h);
-void              evas_gl_common_context_font_texture_set(Evas_GL_Context *gc, Evas_GL_Font_Texture *ft);
-void              evas_gl_common_context_clip_set(Evas_GL_Context *gc, int on, int x, int y, int w, int h);
-void              evas_gl_common_context_read_buf_set(Evas_GL_Context *gc, GLenum buf);
-void              evas_gl_common_context_write_buf_set(Evas_GL_Context *gc, GLenum buf);
-
-Evas_GL_Texture  *evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im, int smooth);
-void              evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im, int smooth);
-void              evas_gl_common_texture_free(Evas_GL_Texture *tex);
-void              evas_gl_common_texture_mipmaps_build(Evas_GL_Texture *tex, RGBA_Image *im, int smooth);
-Evas_GL_Texture  *evas_gl_common_ycbcr601pl_texture_new(Evas_GL_Context *gc, unsigned char **rows, int w, int h, int smooth);
-void              evas_gl_common_ycbcr601pl_texture_update(Evas_GL_Texture *tex, unsigned char **rows, int w, int h, int smooth);
+void              evas_gl_common_context_target_surface_set(Evas_GL_Context *gc, Evas_GL_Image *surface);
+    
+void              evas_gl_common_context_rectangle_push(Evas_GL_Context *gc,
+                                                        int x, int y, int w, int h,
+                                                        int r, int g, int b, int a);
+void              evas_gl_common_context_image_push(Evas_GL_Context *gc,
+                                                    Evas_GL_Texture *tex,
+                                                    double sx, double sy, double sw, double sh,
+                                                    int x, int y, int w, int h,
+                                                    int r, int g, int b, int a,
+                                                    Eina_Bool smooth);
+void              evas_gl_common_context_font_push(Evas_GL_Context *gc,
+                                                   Evas_GL_Texture *tex,
+                                                   double sx, double sy, double sw, double sh,
+                                                   int x, int y, int w, int h,
+                                                   int r, int g, int b, int a);
+void             evas_gl_common_context_yuv_push(Evas_GL_Context *gc,
+                                                 Evas_GL_Texture *tex,
+                                                 double sx, double sy, double sw, double sh,
+                                                 int x, int y, int w, int h,
+                                                 int r, int g, int b, int a,
+                                                 Eina_Bool smooth);
+void             evas_gl_common_context_image_map4_push(Evas_GL_Context *gc,
+                                                        Evas_GL_Texture *tex,
+                                                        RGBA_Map_Point *p,
+                                                        int clip, int cx, int cy, int cw, int ch,
+                                                        int r, int g, int b, int a,
+                                                        Eina_Bool smooth, 
+                                                        Eina_Bool tex_only);
+void              evas_gl_common_context_flush(Evas_GL_Context *gc);
+
+void              evas_gl_common_shader_program_init(Evas_GL_Program *p,
+                                                     Evas_GL_Program_Source *vert,
+                                                     Evas_GL_Program_Source *frag,
+                                                     const char *name);
     
+void              evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h);
+
+Evas_GL_Texture  *evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im);
+Evas_GL_Texture  *evas_gl_common_texture_render_new(Evas_GL_Context *gc, int w, int h, int alpha);
+void              evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im);
+void              evas_gl_common_texture_free(Evas_GL_Texture *tex);
+Evas_GL_Texture  *evas_gl_common_texture_alpha_new(Evas_GL_Context *gc, DATA8 *pixels, int w, int h, int fh);
+void              evas_gl_common_texture_alpha_update(Evas_GL_Texture *tex, DATA8 *pixels, int w, int h, int fh);
+Evas_GL_Texture  *evas_gl_common_texture_yuv_new(Evas_GL_Context *gc, DATA8 **rows, int w, int h);
+void              evas_gl_common_texture_yuv_update(Evas_GL_Texture *tex, DATA8 **rows, int w, int h);
+
 Evas_GL_Image    *evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo);
 Evas_GL_Image    *evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, DATA32 *data, int alpha, int cspace);
 Evas_GL_Image    *evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, int w, int h, DATA32 *data, int alpha, int cspace);
 Evas_GL_Image    *evas_gl_common_image_new(Evas_GL_Context *gc, int w, int h, int alpha, int cspace);
 void              evas_gl_common_image_free(Evas_GL_Image *im);
+Evas_GL_Image    *evas_gl_common_image_surface_new(Evas_GL_Context *gc, int w, int h, int alpha);
 void              evas_gl_common_image_dirty(Evas_GL_Image *im);
+void              evas_gl_common_image_map4_draw(Evas_GL_Context *gc, Evas_GL_Image *im, RGBA_Map_Point *p, int smooth, int level);
+void              evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth);
+
+Evas_GL_Texture  *evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg);
+void              evas_gl_font_texture_free(Evas_GL_Texture *ft);
+void              evas_gl_font_texture_draw(Evas_GL_Context *gc, void *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
 
+
+void (*glsym_glGenFramebuffers)      (GLsizei a, GLuint *b);
+void (*glsym_glBindFramebuffer)      (GLenum a, GLuint b);
+void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e);
+void (*glsym_glDeleteFramebuffers)   (GLsizei a, const GLuint *b);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
 Evas_GL_Polygon  *evas_gl_common_poly_point_add(Evas_GL_Polygon *poly, int x, int y);
 Evas_GL_Polygon  *evas_gl_common_poly_points_clear(Evas_GL_Polygon *poly);
 
@@ -239,24 +344,8 @@ void              evas_gl_common_gradient_draw(Evas_GL_Context *gc, Evas_GL_Grad
 
 void              evas_gl_common_swap_rect(Evas_GL_Context *gc, int x, int y, int w, int h);
 
-void              evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h);
-void              evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth);
 void              evas_gl_common_line_draw(Evas_GL_Context *gc, int x1, int y1, int x2, int y2);
 void              evas_gl_common_poly_draw(Evas_GL_Context *gc, Evas_GL_Polygon *poly);
-
-Evas_GL_Font_Texture *evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg);
-void                  evas_gl_font_texture_free(Evas_GL_Font_Texture *ft);
-void                  evas_gl_font_texture_draw(Evas_GL_Context *gc, void *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
-
-/* FIXME:
- *
- * for images:
- * speculative cache for textures too
- * texture mesh support
- *
- * for text/fonts:
- * need to not render to a texture each time.... this is sloooooow.
- * but its a "bootstrap" for just right now.
- */
+*/
 
 #endif
diff --git a/src/modules/engines/gl_common/evas_gl_context.c b/src/modules/engines/gl_common/evas_gl_context.c
index 2f616df..aa51cc0 100644
--- a/src/modules/engines/gl_common/evas_gl_context.c
+++ b/src/modules/engines/gl_common/evas_gl_context.c
@@ -1,44 +1,273 @@
 #include "evas_gl_private.h"
 
-static void _evas_gl_common_viewport_set(Evas_GL_Context *gc);
-static void _evas_gl_common_dither_set(Evas_GL_Context *gc);
-static void _evas_gl_common_blend_set(Evas_GL_Context *gc);
-static void _evas_gl_common_color_set(Evas_GL_Context *gc);
-static void _evas_gl_common_texture_set(Evas_GL_Context *gc);
-static void _evas_gl_common_clip_set(Evas_GL_Context *gc);
-static void _evas_gl_common_buf_set(Evas_GL_Context *gc);
-static void _evas_gl_common_other_set(Evas_GL_Context *gc);
+static int sym_done = 0;
+
+void (*glsym_glGenFramebuffers)      (GLsizei a, GLuint *b) = NULL;
+void (*glsym_glBindFramebuffer)      (GLenum a, GLuint b) = NULL;
+void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e) = NULL;
+void (*glsym_glDeleteFramebuffers)   (GLsizei a, const GLuint *b) = NULL;
+
+static void
+sym_missing(void)
+{
+   printf("EVAS ERROR - GL symbols missing!\n");
+}
+
+static void
+gl_symbols(void)
+{
+   if (sym_done) return;
+   sym_done = 1;
+
+#define FINDSYM(dst, sym) if (!dst) dst = dlsym(RTLD_DEFAULT, sym)
+#define FALLBAK(dst) if (!dst) dst = (void *)sym_missing;
+   
+   FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffers");
+   FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffersEXT");
+   FALLBAK(glsym_glGenFramebuffers);
+   
+   FINDSYM(glsym_glBindFramebuffer, "glBindFramebuffer");
+   FINDSYM(glsym_glBindFramebuffer, "glBindFramebufferEXT");
+   FALLBAK(glsym_glBindFramebuffer);
+   
+   FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2D");
+   FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2DEXT");
+   FALLBAK(glsym_glFramebufferTexture2D);
+
+   FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffers");
+   FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffersEXT");
+   FALLBAK(glsym_glDeleteFramebuffers);
+}
+
+static void shader_array_flush(Evas_GL_Context *gc);
 
 static Evas_GL_Context *_evas_gl_common_context = NULL;
+static Evas_GL_Shared *shared = NULL;
+
+void
+glerr(const char *file, const char *func, int line, const char *op)
+{
+   GLenum err = glGetError();
+   if (err != GL_NO_ERROR)
+     {
+        fprintf(stderr, "GLERR: %s:%i %s(), %s: ", file, line, func, op);
+        switch (err)
+          {
+          case GL_INVALID_ENUM:
+             fprintf(stderr, "GL_INVALID_ENUM\n");
+             break;
+          case GL_INVALID_VALUE:
+             fprintf(stderr, "GL_INVALID_VALUE\n");
+             break;
+          case GL_INVALID_OPERATION:
+             fprintf(stderr, "GL_INVALID_OPERATION\n");
+             break;
+          case GL_OUT_OF_MEMORY:
+             fprintf(stderr, "GL_OUT_OF_MEMORY\n");
+             break;
+          default:
+             fprintf(stderr, "0x%x\n", err);
+          }
+     }
+}
+
+static void
+matrix_ident(GLfloat *m)
+{
+   memset(m, 0, 16 * sizeof(GLfloat));
+   m[0] = m[5] = m[10] = m[15] = 1.0;
+}
+
+static void
+matrix_ortho(GLfloat *m, 
+             GLfloat l, GLfloat r, 
+             GLfloat t, GLfloat b, 
+             GLfloat near, GLfloat far)
+{
+   m[0] = 2.0 / (r - l);
+   m[1] = m[2] = m[3] = 0.0;
+   
+   m[4] = 0.0;
+   m[5] = 2.0 / (t - b);
+   m[6] = m[7] = 0.0;
+   
+   m[8] = m[9] = 0.0;
+   m[10] = -(2.0 / (far - near));
+   m[11] = 0.0;
+   
+   m[12] = -((r + l)/(r - l));
+   m[13] = -((t + b)/(t - b));
+   m[14] = -((near + far)/(far - near));
+   m[15] = 1.0;
+}
+
+static void
+_evas_gl_common_viewport_set(Evas_GL_Context *gc)
+{
+   GLfloat proj[16];
+   int w = 1, h = 1, m = 1;
+
+   if ((gc->shader.surface == gc->def_surface) ||
+       (!gc->shader.surface))
+     {
+        w = gc->w;
+        h = gc->h;
+     }
+   else
+     {
+        w = gc->shader.surface->w;
+        h = gc->shader.surface->h;
+        m = -1;
+     }
+
+   if ((!gc->change.size) || 
+       ((gc->shared->w == w) && (gc->shared->h == h)))
+     return;
+   
+   gc->shared->w = w;
+   gc->shared->h = h;
+   gc->change.size = 0;
+   
+   glViewport(0, 0, w, h);
+   
+   matrix_ident(proj);
+   if (m == 1) matrix_ortho(proj, 0, w, 0, h, -1.0, 1.0);
+   else matrix_ortho(proj, 0, w, h, 0, -1.0, 1.0);
+   
+   glUseProgram(gc->shared->shader.rect.prog);
+   glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader.rect.prog, "mvp"), 1,
+                      GL_FALSE, proj);
+   glUseProgram(gc->shared->shader.img.prog);
+   glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader.img.prog, "mvp"), 1,
+                      GL_FALSE, proj);
+   glUseProgram(gc->shared->shader.font.prog);
+   glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader.font.prog, "mvp"), 1,
+                      GL_FALSE, proj);
+   glUseProgram(gc->shared->shader.yuv.prog);
+   glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader.yuv.prog, "mvp"), 1,
+                      GL_FALSE, proj);
+   glUseProgram(gc->shared->shader.tex.prog);
+   glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader.tex.prog, "mvp"), 1,
+                      GL_FALSE, proj);
+   glUseProgram(gc->shader.cur_prog);
+}
 
 Evas_GL_Context *
 evas_gl_common_context_new(void)
 {
    Evas_GL_Context *gc;
 
+   gl_symbols();
+#if 1
    if (_evas_gl_common_context)
      {
 	_evas_gl_common_context->references++;
 	return _evas_gl_common_context;
      }
+#endif   
    gc = calloc(1, sizeof(Evas_GL_Context));
    if (!gc) return NULL;
-   gc->max_texture_depth = 32;
-   gc->max_texture_size = 2048;
-   gc->read_buf = GL_BACK;
-   gc->write_buf = GL_BACK;
-   gc->dither = 1;
-   gc->blend = 0;
-   gc->references     = 1;
-
-   gc->change.size    = 1;
-   gc->change.dither  = 1;
-   gc->change.blend   = 1;
-   gc->change.color   = 1;
-   gc->change.texture = 1;
-   gc->change.clip    = 1;
-   gc->change.buf     = 1;
-   gc->change.other   = 1;
+
+   gc->references = 1;
+   
+   _evas_gl_common_context = gc;
+
+   if (!shared)
+     {
+        GLint linked;
+        unsigned int pixel = 0xffffffff;
+        const GLubyte *ext;
+
+        shared = calloc(1, sizeof(Evas_GL_Shared));
+        ext = glGetString(GL_EXTENSIONS);
+        if (ext)
+          {
+             fprintf(stderr, "EXT:\n%s\n", ext);
+             if ((strstr(ext, "GL_ARB_texture_non_power_of_two")) ||
+                 (strstr(ext, "OES_texture_npot")) ||
+                 (strstr(ext, "GL_IMG_texture_npot")))
+               shared->info.tex_npo2 = 1;
+             if ((strstr(ext, "GL_NV_texture_rectangle")) ||
+                 (strstr(ext, "GL_EXT_texture_rectangle")) ||
+                 (strstr(ext, "GL_ARB_texture_rectangle"))
+                 )
+               shared->info.tex_rect = 1;
+          }
+        glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS,
+                      &(shared->info.max_texture_units));
+        glGetIntegerv(GL_MAX_TEXTURE_SIZE,
+                      &(shared->info.max_texture_size));
+        
+        fprintf(stderr, "max tex size %ix%i\n"
+                "max units %i\n"
+                "non-power-2 tex %i\n"
+                "rect tex %i\n"
+                , 
+                shared->info.max_texture_size, shared->info.max_texture_size,
+                shared->info.max_texture_units,
+                (int)shared->info.tex_npo2,
+                (int)shared->info.tex_rect
+                );
+        
+        glDisable(GL_DEPTH_TEST);
+        glEnable(GL_DITHER);
+        glDisable(GL_BLEND);
+        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+        // no dest alpha
+//        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha
+//        glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ???
+        glDepthMask(GL_FALSE);
+        
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+#ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT        
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+#endif
+        
+        glEnableVertexAttribArray(SHAD_VERTEX);
+        glEnableVertexAttribArray(SHAD_COLOR);
+        glEnableVertexAttribArray(SHAD_TEXUV);
+        
+        evas_gl_common_shader_program_init(&(shared->shader.rect), 
+                                           &(shader_rect_vert_src), 
+                                           &(shader_rect_frag_src),
+                                           "rect");
+        evas_gl_common_shader_program_init(&(shared->shader.img),
+                                           &(shader_img_vert_src),
+                                           &(shader_img_frag_src),
+                                           "img");
+        evas_gl_common_shader_program_init(&(shared->shader.font),
+                                           &(shader_font_vert_src), 
+                                           &(shader_font_frag_src),
+                                           "font");
+        evas_gl_common_shader_program_init(&(shared->shader.yuv),
+                                           &(shader_yuv_vert_src), 
+                                           &(shader_yuv_frag_src),
+                                           "yuv");
+        evas_gl_common_shader_program_init(&(shared->shader.tex),
+                                           &(shader_tex_vert_src), 
+                                           &(shader_tex_frag_src),
+                                           "tex");
+        glUseProgram(shared->shader.yuv.prog);
+        glUniform1i(glGetUniformLocation(shared->shader.yuv.prog, "tex"), 0);
+        glUniform1i(glGetUniformLocation(shared->shader.yuv.prog, "texu"), 1);
+        glUniform1i(glGetUniformLocation(shared->shader.yuv.prog, "texv"), 2);
+        glUseProgram(gc->shader.cur_prog);
+        // in shader:
+        // uniform sampler2D tex[8];
+        // 
+        // in code:
+        // GLuint texes[8];
+        // GLint loc = glGetUniformLocation(prog, "tex");
+        // glUniform1iv(loc, 8, texes);
+     }
+   gc->shared = shared;
+   gc->shared->references++;
+   _evas_gl_common_viewport_set(gc);
+   
+   gc->def_surface = evas_gl_common_image_surface_new(gc, 1, 1, 1);
    
    return gc;
 }
@@ -46,17 +275,44 @@ evas_gl_common_context_new(void)
 void
 evas_gl_common_context_free(Evas_GL_Context *gc)
 {
+   int i, j;
+   
    gc->references--;
    if (gc->references > 0) return;
-   if (gc->yuv422p.fshad)
-     {
-	glDeleteObjectARB(gc->yuv422p.fshad);
-     }
-   if (gc->yuv422p.prog)
+   gc->shared->references--;
+   
+   evas_gl_common_image_free(gc->def_surface);
+   
+   if (gc->shared->references == 0)
      {
-	glDeleteObjectARB(gc->yuv422p.prog);
+        while (gc->shared->images)
+          {
+             evas_gl_common_image_free(gc->shared->images->data);
+          }
+        while (gc->shared->tex.whole)
+          {
+             evas_gl_common_texture_free(gc->shared->tex.whole->data);
+          }
+        for (i = 0; i < 33; i++)
+          {
+             for (j = 0; j < 3; j++)
+               {
+                  while (gc->shared->tex.atlas[i][j])
+                    evas_gl_common_texture_free
+                    ((Evas_GL_Texture *)gc->shared->tex.atlas[i][j]);
+               }
+          }
+        free(gc->shared);
+        shared = NULL;
      }
    
+
+   free(gc->array.vertex);
+   free(gc->array.color);
+   free(gc->array.texuv);
+   if (gc->array.texuv2) free(gc->array.texuv2);
+   if (gc->array.texuv3) free(gc->array.texuv3);
+   
    if (gc == _evas_gl_common_context) _evas_gl_common_context = NULL;
    free(gc);
 }
@@ -64,90 +320,15 @@ evas_gl_common_context_free(Evas_GL_Context *gc)
 void
 evas_gl_common_context_use(Evas_GL_Context *gc)
 {
-   if (_evas_gl_common_context == gc) return;
-   if (!gc->ext.checked)
-     {
-	const GLubyte *ext;
-
-	ext = glGetString(GL_EXTENSIONS);
-	if (ext)
-	  {
-//	     if (strstr(ext, "GL_SGIS_generate_mipmap")) gc->ext.sgis_generate_mipmap = 1;
-//	     if (strstr(ext, "GL_NV_texture_rectangle")) gc->ext.nv_texture_rectangle = 1;
-//	     if (strstr(ext, "GL_EXT_texture_rectangle")) gc->ext.nv_texture_rectangle = 1;
-	     if (strstr(ext, "GL_ARB_texture_non_power_of_two")) gc->ext.arb_texture_non_power_of_two = 1;
-	     if (strstr(ext, "GL_ARB_shader_objects") && strstr(ext, "GL_ARB_vertex_shader")
-		&& strstr(ext, "GL_ARB_fragment_shader") && strstr(ext, "GL_ARB_shading_language"))
-	       gc->ext.arb_program = 1;
-//	     printf("GL EXT supported: GL_SGIS_generate_mipmap = %x\n", gc->ext.sgis_generate_mipmap);
-//	     printf("GL EXT supported: GL_NV_texture_rectangle = %x\n", gc->ext.nv_texture_rectangle);
-//	     printf("GL EXT supported: GL_ARB_texture_non_power_of_two = %x\n", gc->ext.arb_texture_non_power_of_two);
-// this causes at least nvidia's drivers to go into pathological pain when
-// changing textures a lot (doing video). so we wont do anything with this
-// for now, but it does work.
-//	     gc->ext.arb_texture_non_power_of_two = 0; printf("DISABLE GL_ARB_texture_non_power_of_two\n");
-//	     gc->ext.nv_texture_rectangle = 0; printf("DISABLE GL_NV_texture_rectangle\n");
-	  }
-	else
-	  {
-//	     printf("GL EXT supported: No extensions!!!!!\n");
-	  }
-
-        if (gc->ext.arb_program)
-          {
-             gc->yuv422p.prog = glCreateProgramObjectARB();
-             // on an nv 6600gt this is fast - but on a 5500fx its DEAD SLOW!!!!!   
-             // if (!gc->ext.arb_texture_non_power_of_two) return NULL;
-             /* BEGIN LEAK */
-             gc->yuv422p.fshad = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
-             {
-                const char *code =
-                   "uniform sampler2D ytex, utex, vtex;\n"
-                   "void main(void) {\n"
-                   "  float r, g, b, y, u, v;\n"
-                   "  y = texture2D(ytex, gl_TexCoord[0].st).r;\n"
-                   "  u = texture2D(utex, gl_TexCoord[0].st).r;\n"
-                   "  v = texture2D(vtex, gl_TexCoord[0].st).r;\n"
-                   "  y = (y - 0.0625) * 1.164;\n"
-                   "  u = u - 0.5;\n"
-                   "  v = v - 0.5;\n"
-                   "  r = y + (1.402   * v);\n"
-                   "  g = y - (0.34414 * u) - (0.71414 * v);\n"
-                   "  b = y + (1.772   * u);\n"
-                   "  gl_FragColor = vec4(r * gl_Color.r * gl_Color.a, g * gl_Color.g * gl_Color.a, b * gl_Color.b * gl_Color.a, gl_Color.a);\n"
-                   "}\n";
-                   glShaderSourceARB(gc->yuv422p.fshad, 1, &code, NULL);
-             }
-             glCompileShaderARB(gc->yuv422p.fshad);
-             glAttachObjectARB(gc->yuv422p.prog, gc->yuv422p.fshad);
-             /* END LEAK - something in the above leaks... beats me what. */
-             glLinkProgramARB(gc->yuv422p.prog);
-   
-             glUseProgramObjectARB(gc->yuv422p.prog);
-             glUniform1iARB(glGetUniformLocationARB(gc->yuv422p.prog, "ytex"), 0);
-             glUniform1iARB(glGetUniformLocationARB(gc->yuv422p.prog, "utex"), 1);
-             glUniform1iARB(glGetUniformLocationARB(gc->yuv422p.prog, "vtex"), 2);
-             glUseProgramObjectARB(0);
-          }
-          
-        gc->ext.checked = 1;
-     }
+//   if (_evas_gl_common_context == gc) return;
    _evas_gl_common_context = gc;
    _evas_gl_common_viewport_set(gc);
-   _evas_gl_common_dither_set(gc);
-   _evas_gl_common_blend_set(gc);
-   _evas_gl_common_color_set(gc);
-   _evas_gl_common_texture_set(gc);
-   _evas_gl_common_texture_set(gc);
-   _evas_gl_common_clip_set(gc);
-   _evas_gl_common_buf_set(gc);
-   _evas_gl_common_other_set(gc);
 }
 
 void
 evas_gl_common_context_resize(Evas_GL_Context *gc, int w, int h)
 {
-   //if ((gc->w == w) && (gc->h == h)) return;
+   if ((gc->w == w) && (gc->h == h)) return;
    gc->change.size = 1;
    gc->w = w;
    gc->h = h;
@@ -155,381 +336,515 @@ evas_gl_common_context_resize(Evas_GL_Context *gc, int w, int h)
 }
 
 void
-evas_gl_common_context_color_set(Evas_GL_Context *gc, int r, int g, int b, int a)
+evas_gl_common_context_target_surface_set(Evas_GL_Context *gc,
+                                          Evas_GL_Image *surface)
 {
-   if (r < 0) r = 0;
-   else if (r > 255) r = 255;
-   if (g < 0) g = 0;
-   else if (g > 255) g = 255;
-   if (b < 0) b = 0;
-   else if (b > 255) b = 255;
-   if (a < 0) a = 0;
-   else if (a > 255) a = 255;
-   if ((gc->r == r) && (gc->g == g) && (gc->b == b) && (gc->a == a)) return;
-   gc->change.color = 1;
-   gc->r = r;
-   gc->g = g;
-   gc->b = b;
-   gc->a = a;
-   if (_evas_gl_common_context == gc) _evas_gl_common_color_set(gc);
-}
+   if (surface == gc->shader.surface) return;
+   
+   evas_gl_common_context_flush(gc);
 
-void
-evas_gl_common_context_blend_set(Evas_GL_Context *gc, int blend)
-{
-   if (blend == 1)
-     {
-	if (gc->blend) return;
-	gc->change.blend = 1;
-	gc->blend = 1;
-	gc->blend_alpha = 0;
-     }
-   else if (blend == 2)
-     {
-	if (gc->blend_alpha) return;
-	gc->change.blend = 1;
-	gc->blend = 0;
-	gc->blend_alpha = 1;
-     }
+   gc->shader.surface = surface;
+   gc->change.size = 1;
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+# ifndef GL_FRAMEBUFFER
+#  define GL_FRAMEBUFFER GL_FRAMEBUFFER_OES
+# endif   
+#else
+# ifndef GL_FRAMEBUFFER
+#  define GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT
+# endif   
+#endif   
+   if (gc->shader.surface == gc->def_surface)
+     glsym_glBindFramebuffer(GL_FRAMEBUFFER, 0);
    else
-     {
-	if ((!gc->blend) && (!gc->blend_alpha)) return;
-	gc->change.blend = 1;
-	gc->blend = 0;
-	gc->blend_alpha = 0;
-     }
-   if (_evas_gl_common_context == gc) _evas_gl_common_blend_set(gc);
+     glsym_glBindFramebuffer(GL_FRAMEBUFFER, surface->tex->pt->fb);
+   _evas_gl_common_viewport_set(gc);
 }
 
-void
-evas_gl_common_context_dither_set(Evas_GL_Context *gc, int dither)
+#define PUSH_VERTEX(x, y, z) \
+   gc->array.vertex[nv++] = x; \
+   gc->array.vertex[nv++] = y; \
+   gc->array.vertex[nv++] = z
+#define PUSH_COLOR(r, g, b, a) \
+   gc->array.color[nc++] = r; \
+   gc->array.color[nc++] = g; \
+   gc->array.color[nc++] = b; \
+   gc->array.color[nc++] = a
+#define PUSH_TEXUV(u, v) \
+   gc->array.texuv[nu++] = u; \
+   gc->array.texuv[nu++] = v
+#define PUSH_TEXUV2(u, v) \
+   gc->array.texuv2[nu2++] = u; \
+   gc->array.texuv2[nu2++] = v
+#define PUSH_TEXUV3(u, v) \
+   gc->array.texuv3[nu3++] = u; \
+   gc->array.texuv3[nu3++] = v
+
+static inline void
+_evas_gl_common_context_array_alloc(Evas_GL_Context *gc)
 {
-   if (((dither) && (gc->dither)) || ((!dither) && (!gc->dither))) return;
-   gc->change.dither = 1;
-   gc->dither = dither;
-   if (_evas_gl_common_context == gc) _evas_gl_common_dither_set(gc);
+   if (gc->array.num <= gc->array.alloc) return;
+   gc->array.alloc += 6 * 1024;
+   gc->array.vertex = realloc(gc->array.vertex,
+                              gc->array.alloc * sizeof(GLshort) * 3);
+   gc->array.color  = realloc(gc->array.color,
+                              gc->array.alloc * sizeof(GLubyte) * 4);
+   gc->array.texuv  = realloc(gc->array.texuv,
+                              gc->array.alloc * sizeof(GLfloat) * 2);
+   gc->array.texuv2  = realloc(gc->array.texuv2,
+                               gc->array.alloc * sizeof(GLfloat) * 2);
+   gc->array.texuv3  = realloc(gc->array.texuv3,
+                               gc->array.alloc * sizeof(GLfloat) * 2);
 }
 
 void
-evas_gl_common_context_texture_set(Evas_GL_Context *gc, Evas_GL_Texture *tex, int smooth, int w, int h)
+evas_gl_common_context_rectangle_push(Evas_GL_Context *gc, 
+                                      int x, int y, int w, int h,
+                                      int r, int g, int b, int a)
 {
-   if (gc->font_texture > 0)
+   int pnum, nv, nc, nu, nt, i;
+   Eina_Bool blend = 0;
+   
+   if (a < 255) blend = 1;
+   if (gc->dc->render_op == EVAS_RENDER_COPY) blend = 0;
+   if ((gc->shader.cur_tex != 0)
+       || (gc->shader.cur_prog != gc->shared->shader.rect.prog)
+       || (gc->shader.blend != blend)
+       || (gc->shader.render_op != gc->dc->render_op)
+       )
      {
-	gc->font_texture = 0;
-	gc->change.texture = 1;
+        shader_array_flush(gc);
+        gc->shader.cur_tex = 0;
+        gc->shader.cur_prog = gc->shared->shader.rect.prog;
+        gc->shader.blend = blend;
+        gc->shader.render_op = gc->dc->render_op;
      }
-   if (gc->texture != tex)
+   
+   pnum = gc->array.num;
+   nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; nt = pnum * 4;
+   gc->array.num += 6;
+   _evas_gl_common_context_array_alloc(gc);
+  
+   PUSH_VERTEX(x    , y    , 0);
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x + w, y + h, 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   for (i = 0; i < 6; i++)
      {
-	if (gc->texture) gc->texture->references--;
-	gc->texture = tex;
-	gc->change.texture = 1;
-	if (tex) tex->references++;
+        PUSH_TEXUV(0.0, 0.0);
      }
-   if (tex)
+   for (i = 0; i < 6; i++)
      {
-	if (((smooth) && (!tex->smooth)) ||
-	    ((!smooth) && (tex->smooth)))
-	  {
-	     tex->smooth = smooth;
-	     tex->changed = 1;
-	  }
-	tex->uw = w;
-	tex->uh = h;
+        PUSH_COLOR(r, g, b, a);
      }
-   if (_evas_gl_common_context == gc) _evas_gl_common_texture_set(gc);
 }
 
 void
-evas_gl_common_context_font_texture_set(Evas_GL_Context *gc, Evas_GL_Font_Texture *ft)
+evas_gl_common_context_image_push(Evas_GL_Context *gc,
+                                  Evas_GL_Texture *tex,
+                                  double sx, double sy, double sw, double sh,
+                                  int x, int y, int w, int h,
+                                  int r, int g, int b, int a,
+                                  Eina_Bool smooth)
 {
-   if (gc->texture)
+   int pnum, nv, nc, nu, nt, i;
+   GLfloat tx1, tx2, ty1, ty2;
+   Eina_Bool blend = 1;
+
+   if (tex->pt->format == GL_RGB) blend = 0;
+   if (a < 255) blend = 1;
+   
+   if ((gc->shader.cur_tex != tex->pt->texture)
+       || (gc->shader.cur_prog != gc->shared->shader.img.prog)
+       || (gc->shader.smooth != smooth)
+       || (gc->shader.blend != blend)
+       || (gc->shader.render_op != gc->dc->render_op)
+       )
      {
-	if (gc->texture) gc->texture->references--;
-	gc->texture = NULL;
-	gc->change.texture = 1;
+        shader_array_flush(gc);
+        gc->shader.cur_tex = tex->pt->texture;
+        gc->shader.cur_prog = gc->shared->shader.img.prog;
+        gc->shader.smooth = smooth;
+        gc->shader.blend = blend;
+        gc->shader.render_op = gc->dc->render_op;
      }
-   if (gc->font_texture != ft->texture)
+   
+   pnum = gc->array.num;
+   nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; nt = pnum * 4;
+   gc->array.num += 6;
+   _evas_gl_common_context_array_alloc(gc);
+
+   tx1 = ((double)(tex->x) + sx) / (double)tex->pt->w;
+   ty1 = ((double)(tex->y) + sy) / (double)tex->pt->h;
+   tx2 = ((double)(tex->x) + sx + sw) / (double)tex->pt->w;
+   ty2 = ((double)(tex->y) + sy + sh) / (double)tex->pt->h;
+   
+   PUSH_VERTEX(x    , y    , 0);
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_TEXUV(tx1, ty1);
+   PUSH_TEXUV(tx2, ty1);
+   PUSH_TEXUV(tx1, ty2);
+   
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x + w, y + h, 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_TEXUV(tx2, ty1);
+   PUSH_TEXUV(tx2, ty2);
+   PUSH_TEXUV(tx1, ty2);
+
+   for (i = 0; i < 6; i++)
      {
-	gc->font_texture = ft->texture;
-	gc->font_texture_rectangle = ft->pool->rectangle;
-	gc->change.texture = 1;
+        PUSH_COLOR(r, g, b, a);
      }
-   if (!gc->change.texture) return;
-   if (_evas_gl_common_context == gc) _evas_gl_common_texture_set(gc);
 }
 
 void
-evas_gl_common_context_clip_set(Evas_GL_Context *gc, int on, int x, int y, int w, int h)
+evas_gl_common_context_font_push(Evas_GL_Context *gc,
+                                 Evas_GL_Texture *tex,
+                                 double sx, double sy, double sw, double sh,
+                                 int x, int y, int w, int h,
+                                 int r, int g, int b, int a)
 {
-   if (x < 0)
+   int pnum, nv, nc, nu, nt, i;
+   GLfloat tx1, tx2, ty1, ty2;
+
+   if ((gc->shader.cur_tex != tex->pt->texture)
+       || (gc->shader.cur_prog != gc->shared->shader.font.prog)
+       || (gc->shader.smooth != 0)
+       || (gc->shader.blend != 1)
+       || (gc->shader.render_op != gc->dc->render_op)
+       )
      {
-	w += x;
-	x = 0;
+        shader_array_flush(gc);
+        gc->shader.cur_tex = tex->pt->texture;
+        gc->shader.cur_prog = gc->shared->shader.font.prog;
+        gc->shader.smooth = 0;
+        gc->shader.blend = 1;
+        gc->shader.render_op = gc->dc->render_op;
      }
-   if (y < 0)
+   
+   pnum = gc->array.num;
+   nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; nt = pnum * 4;
+   gc->array.num += 6;
+   _evas_gl_common_context_array_alloc(gc);
+
+   if (sw == 0.0)
      {
-	h += y;
-	y = 0;
+        tx1 = tex->sx1;
+        ty1 = tex->sy1;
+        tx2 = tex->sx2;
+        ty2 = tex->sy2;
      }
-   if (w < 0) w = 0;
-   if (h < 0) h = 0;
-   if (((!on) && (!gc->clip.active)) ||
-       ((on) && (gc->clip.active) &&
-	(x == gc->clip.x) && (y == gc->clip.y) &&
-	(w == gc->clip.w) && (h == gc->clip.h)))
-     return;
-   gc->change.clip = 1;
-   gc->clip.active = on;
-   gc->clip.x = x;
-   gc->clip.y = y;
-   gc->clip.w = w;
-   gc->clip.h = h;
-   if (_evas_gl_common_context == gc) _evas_gl_common_clip_set(gc);
-}
+   else
+     {
+        tx1 = ((double)(tex->x) + sx) / (double)tex->pt->w;
+        ty1 = ((double)(tex->y) + sy) / (double)tex->pt->h;
+        tx2 = ((double)(tex->x) + sx + sw) / (double)tex->pt->w;
+        ty2 = ((double)(tex->y) + sy + sh) / (double)tex->pt->h;
+     }
+   
+   PUSH_VERTEX(x    , y    , 0);
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_TEXUV(tx1, ty1);
+   PUSH_TEXUV(tx2, ty1);
+   PUSH_TEXUV(tx1, ty2);
+   
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x + w, y + h, 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_TEXUV(tx2, ty1);
+   PUSH_TEXUV(tx2, ty2);
+   PUSH_TEXUV(tx1, ty2);
 
-void
-evas_gl_common_context_read_buf_set(Evas_GL_Context *gc, GLenum buf)
-{
-   if (gc->read_buf == buf) return;
-   gc->change.buf = 1;
-   gc->read_buf = buf;
-   if (_evas_gl_common_context == gc) _evas_gl_common_buf_set(gc);
+   for (i = 0; i < 6; i++)
+     {
+        PUSH_COLOR(r, g, b, a);
+     }
 }
 
 void
-evas_gl_common_context_write_buf_set(Evas_GL_Context *gc, GLenum buf)
+evas_gl_common_context_yuv_push(Evas_GL_Context *gc,
+                                Evas_GL_Texture *tex, 
+                                double sx, double sy, double sw, double sh,
+                                int x, int y, int w, int h,
+                                int r, int g, int b, int a,
+                                Eina_Bool smooth)
 {
-   if (gc->write_buf == buf) return;
-   gc->change.buf = 1;
-   gc->write_buf = buf;
-   if (_evas_gl_common_context == gc) _evas_gl_common_buf_set(gc);
-}
+   int pnum, nv, nc, nu, nu2, nu3, nt, i;
+   GLfloat tx1, tx2, ty1, ty2, t2x1, t2x2, t2y1, t2y2;
+   Eina_Bool blend = 0;
 
-static void
-_evas_gl_common_viewport_set(Evas_GL_Context *gc)
-{
-   if (!gc->change.size) return;
-   glViewport(0, 0, gc->w, gc->h);
-   glMatrixMode(GL_PROJECTION);
-   glLoadIdentity();
-   glOrtho(0, gc->w, 0, gc->h, -1, 1);
-   glMatrixMode(GL_MODELVIEW);
-   glLoadIdentity();
-   glScalef(1, -1, 1);
-   glTranslatef(0, - gc->h, 0);
-   gc->change.size = 0;
-}
+   if (a < 255) blend = 1;
+   
+   if ((gc->shader.cur_tex != tex->pt->texture)
+       || (gc->shader.cur_prog != gc->shared->shader.yuv.prog)
+       || (gc->shader.smooth != smooth)
+       || (gc->shader.blend != blend)
+       || (gc->shader.render_op != gc->dc->render_op)
+       )
+     {
+        shader_array_flush(gc);
+        gc->shader.cur_tex = tex->pt->texture;
+        gc->shader.cur_texu = tex->ptu->texture;
+        gc->shader.cur_texv = tex->ptv->texture;
+        gc->shader.cur_prog = gc->shared->shader.yuv.prog;
+        gc->shader.smooth = smooth;
+        gc->shader.blend = blend;
+        gc->shader.render_op = gc->dc->render_op;
+     }
+   
+   pnum = gc->array.num;
+   nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; 
+   nu2 = pnum * 2; nu3 = pnum * 2; nt = pnum * 4;
+   gc->array.num += 6;
+   _evas_gl_common_context_array_alloc(gc);
 
-static void
-_evas_gl_common_dither_set(Evas_GL_Context *gc)
-{
-   if (!gc->change.dither) return;
-   if (gc->dither)
-     glEnable(GL_DITHER);
-   else
-     glDisable(GL_DITHER);
-   gc->change.dither = 0;
+   tx1 = (sx) / (double)tex->pt->w;
+   ty1 = (sy) / (double)tex->pt->h;
+   tx2 = (sx + sw) / (double)tex->pt->w;
+   ty2 = (sy + sh) / (double)tex->pt->h;
+   
+   t2x1 = ((sx) / 2) / (double)tex->ptu->w;
+   t2y1 = ((sy) / 2) / (double)tex->ptu->h;
+   t2x2 = ((sx + sw) / 2) / (double)tex->ptu->w;
+   t2y2 = ((sy + sh) / 2) / (double)tex->ptu->h;
+   
+   PUSH_VERTEX(x    , y    , 0);
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_TEXUV(tx1, ty1);
+   PUSH_TEXUV(tx2, ty1);
+   PUSH_TEXUV(tx1, ty2);
+   
+   PUSH_TEXUV2(t2x1, t2y1);
+   PUSH_TEXUV2(t2x2, t2y1);
+   PUSH_TEXUV2(t2x1, t2y2);
+   
+   PUSH_TEXUV3(t2x1, t2y1);
+   PUSH_TEXUV3(t2x2, t2y1);
+   PUSH_TEXUV3(t2x1, t2y2);
+   
+   PUSH_VERTEX(x + w, y    , 0);
+   PUSH_VERTEX(x + w, y + h, 0);
+   PUSH_VERTEX(x    , y + h, 0);
+   
+   PUSH_TEXUV(tx2, ty1);
+   PUSH_TEXUV(tx2, ty2);
+   PUSH_TEXUV(tx1, ty2);
+
+   PUSH_TEXUV2(t2x2, t2y1);
+   PUSH_TEXUV2(t2x2, t2y2);
+   PUSH_TEXUV2(t2x1, t2y2);
+
+   PUSH_TEXUV3(t2x2, t2y1);
+   PUSH_TEXUV3(t2x2, t2y2);
+   PUSH_TEXUV3(t2x1, t2y2);
+
+   for (i = 0; i < 6; i++)
+     {
+        PUSH_COLOR(r, g, b, a);
+     }
 }
 
-static void
-_evas_gl_common_blend_set(Evas_GL_Context *gc)
+void
+evas_gl_common_context_image_map4_push(Evas_GL_Context *gc,
+                                       Evas_GL_Texture *tex,
+                                       RGBA_Map_Point *p,
+                                       int clip, int cx, int cy, int cw, int ch,
+                                       int r, int g, int b, int a,
+                                       Eina_Bool smooth, Eina_Bool tex_only)
 {
-   if (!gc->change.blend) return;
-   if (gc->blend_alpha)
+   int pnum, nv, nc, nu, nt, i;
+   const int points[6] = { 0, 1, 2, 0, 2, 3 };
+   GLfloat tx[4], ty[4];
+   Eina_Bool blend = 1;
+   RGBA_Map_Point *pt;
+   DATA32 cmul;
+
+   blend = 1;
+   
+//   if (tex->pt->format == GL_RGB) blend = 0;
+//   if (a < 255) blend = 1;
+   
+   if ((gc->shader.cur_tex != tex->pt->texture)
+       || ((tex_only) && (gc->shader.cur_prog != gc->shared->shader.tex.prog))
+       || ((!tex_only) && (gc->shader.cur_prog != gc->shared->shader.img.prog))
+       || (gc->shader.smooth != smooth)
+       || (gc->shader.blend != blend)
+       || (gc->shader.render_op != gc->dc->render_op)
+       )
+     {
+        shader_array_flush(gc);
+        gc->shader.cur_tex = tex->pt->texture;
+        if (tex_only)
+          gc->shader.cur_prog = gc->shared->shader.tex.prog;
+        else
+          gc->shader.cur_prog =gc->shared->shader.img.prog; 
+        gc->shader.smooth = smooth;
+        gc->shader.blend = blend;
+        gc->shader.render_op = gc->dc->render_op;
+     }
+   
+   pnum = gc->array.num;
+   nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; nt = pnum * 4;
+   gc->array.num += 6;
+   _evas_gl_common_context_array_alloc(gc);
+
+   for (i = 0; i < 4; i++)
      {
-	glEnable(GL_BLEND);
-        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+        tx[i] = ((double)(tex->x) + (((double)p[i].u) / FP1)) /
+          (double)tex->pt->w;
+        ty[i] = ((double)(tex->y) + (((double)p[i].v) / FP1)) / 
+          (double)tex->pt->h;
      }
-   else if (gc->blend)
+   cmul = ARGB_JOIN(a, r, g, b);
+   for (i = 0; i < 6; i++)
      {
-	glEnable(GL_BLEND);
-	glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+        DATA32 cl = MUL4_SYM(cmul, p[points[i]].col);
+        PUSH_VERTEX((p[points[i]].x >> FP), 
+                    (p[points[i]].y >> FP),
+                    0);
+//                    (p[points[i]].y >> FP) + 4096);
+//                    (p[points[i]].z >> FP));
+        PUSH_TEXUV(tx[points[i]],
+                   ty[points[i]]);
+        PUSH_COLOR(R_VAL(&cl),
+                   G_VAL(&cl),
+                   B_VAL(&cl),
+                   A_VAL(&cl));
      }
-   else
-     glDisable(GL_BLEND);
-   gc->change.blend = 0;
 }
 
-static void
-_evas_gl_common_color_set(Evas_GL_Context *gc)
+void
+evas_gl_common_context_flush(Evas_GL_Context *gc)
 {
-   if (!gc->change.color) return;
-   glColor4d((double)gc->r / 255.0,
-	     (double)gc->g / 255.0,
-	     (double)gc->b / 255.0,
-	     (double)gc->a / 255.0);
-   gc->change.color = 0;
+   shader_array_flush(gc);
+//   fprintf(stderr, "------------FRAME: done\n");
 }
 
 static void
-_evas_gl_common_texture_set(Evas_GL_Context *gc)
+shader_array_flush(Evas_GL_Context *gc)
 {
-   if (!gc->change.texture) return;
-   if (gc->font_texture > 0)
+   if (gc->array.num <= 0) return;
+
+//   fprintf(stderr, "  flush array %i\n", gc->array.num);
+   if (gc->shader.cur_prog != gc->shader.current.cur_prog)
+     glUseProgram(gc->shader.cur_prog);
+
+   if (gc->shader.cur_tex != gc->shader.current.cur_tex)
+     {
+        glActiveTexture(GL_TEXTURE0);
+        glBindTexture(GL_TEXTURE_2D, gc->shader.cur_tex);
+     }
+   if (gc->shader.render_op != gc->shader.current.render_op)
      {
-	if (gc->texture_program)
-	  {
-	     glUseProgramObjectARB(0);
-	     
-	     glActiveTexture(GL_TEXTURE1);
-	     glDisable(GL_TEXTURE_2D);
-	     glActiveTexture(GL_TEXTURE2);
-	     glDisable(GL_TEXTURE_2D);
-	     gc->texture_program = 0;
-	  }
-	if (gc->font_texture_rectangle)
-	  {
-	     glActiveTexture(GL_TEXTURE0);
-	     glEnable(GL_TEXTURE_2D);
-	     glEnable(GL_TEXTURE_RECTANGLE_NV);
-	     glBindTexture(GL_TEXTURE_RECTANGLE_NV, gc->font_texture);
-	  }
-	else
-	  {
-	     glActiveTexture(GL_TEXTURE0);
-	     if (gc->ext.nv_texture_rectangle)
-	       glDisable(GL_TEXTURE_RECTANGLE_NV);
-	     glEnable(GL_TEXTURE_2D);
-	     glBindTexture(GL_TEXTURE_2D, gc->font_texture);
-	  }
+        switch (gc->shader.render_op)
+          {
+          case EVAS_RENDER_BLEND: /**< default op: d = d*(1-sa) + s */
+             glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+             break;
+          case EVAS_RENDER_COPY: /**< d = s */
+             gc->shader.blend = 0;
+             glBlendFunc(GL_ONE, GL_ONE);
+             break;
+             // FIXME: fix blend funcs below!
+          case EVAS_RENDER_BLEND_REL: /**< d = d*(1 - sa) + s*da */
+          case EVAS_RENDER_COPY_REL: /**< d = s*da */
+          case EVAS_RENDER_ADD: /**< d = d + s */
+          case EVAS_RENDER_ADD_REL: /**< d = d + s*da */
+          case EVAS_RENDER_SUB: /**< d = d - s */
+          case EVAS_RENDER_SUB_REL: /**< d = d - s*da */
+          case EVAS_RENDER_TINT: /**< d = d*s + d*(1 - sa) + s*(1 - da) */
+          case EVAS_RENDER_TINT_REL: /**< d = d*(1 - sa + s) */
+          case EVAS_RENDER_MASK: /**< d = d*sa */
+          case EVAS_RENDER_MUL: /**< d = d*s */
+          default:
+             glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+             break;
+          }
      }
-   else if (gc->texture)
+   if (gc->shader.blend != gc->shader.current.blend)
      {
-	if (gc->texture->rectangle)
-	  {
-	     glActiveTexture(GL_TEXTURE0);
-	     glEnable(GL_TEXTURE_2D);
-	     glEnable(GL_TEXTURE_RECTANGLE_NV);
-	     glBindTexture(GL_TEXTURE_RECTANGLE_NV, gc->texture->texture);
-	  }
-	else
-	  {
-	     if (gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
-	     if ((gc->texture->prog) && 
-		 (gc->texture->texture2) && (gc->texture->texture3))
-	       {
-		  gc->texture_program = 1;
-		  glActiveTexture(GL_TEXTURE0);
-		  glEnable(GL_TEXTURE_2D);
-		  glBindTexture(GL_TEXTURE_2D, gc->texture->texture);
-
-		  glActiveTexture(GL_TEXTURE1);
-		  glEnable(GL_TEXTURE_2D);
-		  glBindTexture(GL_TEXTURE_2D, gc->texture->texture2);
-		  
-		  glActiveTexture(GL_TEXTURE2);
-		  glEnable(GL_TEXTURE_2D);
-		  glBindTexture(GL_TEXTURE_2D, gc->texture->texture3);
-		  glUseProgramObjectARB(gc->texture->prog);
-	       }
-	     else
-	       {
-		  if (gc->texture_program)
-		    {
-		       glUseProgramObjectARB(0);
-		       
-		       glActiveTexture(GL_TEXTURE1);
-		       glDisable(GL_TEXTURE_2D);
-		       glActiveTexture(GL_TEXTURE2);
-		       glDisable(GL_TEXTURE_2D);
-		       gc->texture_program = 0;
-		    }
-                  glActiveTexture(GL_TEXTURE0);
-		  glBindTexture(GL_TEXTURE_2D, gc->texture->texture);
-		  glEnable(GL_TEXTURE_2D);
-	       }
-	  }
-	if (gc->texture->rectangle)
-	  {
-	     if (gc->texture->changed)
-	       {
-		  gc->texture->changed = 0;
-	       }
-	  }
-	else
-	  {
-	     if (gc->texture->changed)
-	       {
-		  if (gc->texture->rectangle)
-		    {
-		       if (gc->texture->smooth)
-			 {
-			    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-			    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-			 }
-		       else
-			 {
-			    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-			    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-			 }
-		    }
-		  else
-		    {
-		       if (gc->texture->smooth)
-			 {
-			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
-			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-//			    if (gc->texture->have_mipmaps)
-//			      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
-//			    else
-			      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-			 }
-		       else
-			 {
-			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-			 }
-		    }
-		  gc->texture->changed = 0;
-	       }
-	  }
+        if (gc->shader.blend)
+          glEnable(GL_BLEND);
+        else 
+          glDisable(GL_BLEND);
      }
-   else if (gc->font_texture == 0)
+   if (gc->shader.smooth != gc->shader.current.smooth)
      {
-	glDisable(GL_TEXTURE_2D);
-	if (gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
+        if (gc->shader.smooth)
+          {
+#ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+#endif
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+          }
+        else
+          {
+#ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1);
+#endif
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+          }
      }
-   gc->change.texture = 0;
-}
 
-static void
-_evas_gl_common_clip_set(Evas_GL_Context *gc)
-{
-   if (!gc->change.clip) return;
-   /* might be faster using clip planes ??? glClipPlane() */
-   if (gc->clip.active)
+   glVertexAttribPointer(SHAD_VERTEX, 3, GL_SHORT, GL_FALSE, 0, gc->array.vertex);
+   glVertexAttribPointer(SHAD_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, gc->array.color);
+   glVertexAttribPointer(SHAD_TEXUV, 2, GL_FLOAT, GL_FALSE, 0, gc->array.texuv);
+   if ((gc->array.texuv2) && (gc->array.texuv3))
      {
-	glEnable(GL_SCISSOR_TEST);
-	glScissor(gc->clip.x,
-		  gc->h - gc->clip.y - gc->clip.h,
-		  gc->clip.w,
-		  gc->clip.h);
+        glEnableVertexAttribArray(SHAD_TEXUV2);
+        glEnableVertexAttribArray(SHAD_TEXUV3);
+        glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->array.texuv2);
+        glVertexAttribPointer(SHAD_TEXUV3, 2, GL_FLOAT, GL_FALSE, 0, gc->array.texuv3);
+        glActiveTexture(GL_TEXTURE1);
+        glBindTexture(GL_TEXTURE_2D, gc->shader.cur_texu);
+        glActiveTexture(GL_TEXTURE2);
+        glBindTexture(GL_TEXTURE_2D, gc->shader.cur_texv);
      }
    else
-     glDisable(GL_SCISSOR_TEST);
-   gc->change.clip = 0;
-}
-
-static void
-_evas_gl_common_buf_set(Evas_GL_Context *gc)
-{
-   if (!gc->change.buf) return;
-   glDrawBuffer(gc->write_buf);
-   glReadBuffer(gc->read_buf);
-   gc->change.buf = 0;
-}
+     {
+        glDisableVertexAttribArray(SHAD_TEXUV2);
+        glDisableVertexAttribArray(SHAD_TEXUV3);
+     }
+   
+   glDrawArrays(GL_TRIANGLES, 0, gc->array.num);
 
-static void
-_evas_gl_common_other_set(Evas_GL_Context *gc)
-{
-   if (!gc->change.other) return;
-   glShadeModel(GL_FLAT);
-   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
-//   glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
-   glDisable(GL_LINE_SMOOTH);
-   glDisable(GL_CULL_FACE);
-   glDepthMask(GL_FALSE);
-   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-   glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
-   gc->change.other = 0;
+   gc->shader.current.cur_prog = gc->shader.cur_prog;
+   gc->shader.current.cur_tex = gc->shader.cur_tex;
+   gc->shader.current.blend = gc->shader.blend;
+   gc->shader.current.smooth = gc->shader.smooth;
+   gc->shader.current.render_op = gc->shader.render_op;
+   
+   free(gc->array.vertex);
+   free(gc->array.color);
+   free(gc->array.texuv);
+   if (gc->array.texuv2) free(gc->array.texuv2);
+   if (gc->array.texuv3) free(gc->array.texuv3);
+   
+   gc->array.vertex = NULL;
+   gc->array.color = NULL;
+   gc->array.texuv = NULL;
+   gc->array.texuv2 = NULL;
+   gc->array.texuv3 = NULL;
+   
+   gc->array.num = 0;
+   gc->array.alloc = 0;
 }
diff --git a/src/modules/engines/gl_common/evas_gl_font.c b/src/modules/engines/gl_common/evas_gl_font.c
index d412118..4d622e3 100644
--- a/src/modules/engines/gl_common/evas_gl_font.c
+++ b/src/modules/engines/gl_common/evas_gl_font.c
@@ -1,42 +1,27 @@
 #include "evas_gl_private.h"
 
-static Evas_GL_Font_Texture_Pool_Allocation *_evas_gl_font_texture_pool_request(Evas_GL_Context *gc, int w, int h);
-static void                                  _evas_gl_font_texture_pool_relinquish(Evas_GL_Font_Texture_Pool_Allocation *fa);
-static int                                   _evas_gl_font_texture_pool_rect_find(Evas_GL_Font_Texture_Pool *fp, int w, int h, int *x, int *y);
-
-Evas_GL_Font_Texture *
+Evas_GL_Texture *
 evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg)
 {
-   Evas_GL_Font_Texture *ft;
+   Evas_GL_Texture *tex;
    DATA8 *data;
-   int w, h, j;
-
-   int nw;
+   int w, h, j, nw;
    DATA8 *ndata;
+   int fh;
 
-   if (fg->ext_dat) return fg->ext_dat;
+   if (fg->ext_dat) return fg->ext_dat; // FIXME: one engine at a time can do this :(
    
    w = fg->glyph_out->bitmap.width;
    h = fg->glyph_out->bitmap.rows;
-   
    if ((w == 0) || (h == 0)) return NULL;
-   ft = calloc(1, sizeof(Evas_GL_Font_Texture));
-   if (!ft) return NULL;
 
    data = fg->glyph_out->bitmap.buffer;
    j = fg->glyph_out->bitmap.pitch;
    if (j < w) j = w;
 
-   ft->gc = gc;
-
-   /* bug bug! glTexSubImage2D need a multiple of 4 pixels horizontally! :( */
-   nw = ((w + 3) / 4 ) * 4;
-   ndata = malloc(nw *h);
-   if (!ndata)
-     {
-	free(ft);
-	return NULL;
-     }
+   nw = ((w + 3) / 4) * 4;
+   ndata = alloca(nw *h);
+   if (!ndata) return NULL;
    if (fg->glyph_out->bitmap.num_grays == 256)
      {
 	int x, y;
@@ -60,7 +45,7 @@ evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg)
 	int bi, bj, end;
 	const DATA8 bitrepl[2] = {0x0, 0xff};
 	
-	tmpbuf = malloc(w);
+	tmpbuf = alloca(w);
 	if (tmpbuf)
 	  {
 	     int x, y;
@@ -91,373 +76,125 @@ evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg)
 		       p2++;
 		    }
 	       }
-	     free(tmpbuf);
 	  }
      }
-   
-   /* where in pool texture does this live */
-   ft->w = w;
-   ft->h = h;
-   ft->aw = nw;
-   ft->ah = h;
-
-   ft->alloc = _evas_gl_font_texture_pool_request(gc, ft->aw, ft->ah);
-   if (!ft->alloc)
-     {
-	free(ndata);
-	free(ft);
-	return NULL;
-     }
-   ft->x = ft->alloc->x;
-   ft->y = ft->alloc->y;
-   ft->pool = ft->alloc->pool;
-   ft->texture =  ft->pool->texture;
-   if (ft->pool->rectangle)
-     {
-	glEnable(GL_TEXTURE_RECTANGLE_NV);
-	glBindTexture(GL_TEXTURE_RECTANGLE_NV, ft->texture);
-	glTexSubImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
-			ft->x, ft->y, nw, ft->h,
-			GL_ALPHA, GL_UNSIGNED_BYTE, ndata);
-     }
-   else
-     {
-	glBindTexture(GL_TEXTURE_2D, ft->texture);
-	glTexSubImage2D(GL_TEXTURE_2D, 0,
-			ft->x, ft->y, nw, ft->h,
-			GL_ALPHA, GL_UNSIGNED_BYTE, ndata);
-     }
-   if (ndata) free(ndata);
-   if (gc->texture)
-     {
-	if (gc->texture) gc->texture->references--;
-	gc->texture = NULL;
-     }
-   gc->font_texture = ft->texture;
-   gc->font_texture_rectangle = ft->pool->rectangle;
-   gc->change.texture = 1;
-   if (ft->pool->rectangle)
-     {
-	ft->tx1 = ft->x;
-	ft->ty1 = ft->y;
-	ft->tx2 = ft->x + ft->w;
-	ft->ty2 = ft->y + ft->h;
-     }
-   else
-     {
-	ft->tx1 = (double)(ft->x        ) / (double)(ft->pool->w);
-	ft->ty1 = (double)(ft->y        ) / (double)(ft->pool->h);
-	ft->tx2 = (double)(ft->x + ft->w) / (double)(ft->pool->w);
-	ft->ty2 = (double)(ft->y + ft->h) / (double)(ft->pool->h);
-     }
-
-   return ft;
+//   fh = h;
+   fh = fg->fi->max_h;
+   tex = evas_gl_common_texture_alpha_new(gc, ndata, w, h, fh);
+   tex->sx1 = ((double)(tex->x)) / (double)tex->pt->w;
+   tex->sy1 = ((double)(tex->y)) / (double)tex->pt->h;
+   tex->sx2 = ((double)(tex->x + tex->w)) / (double)tex->pt->w;
+   tex->sy2 = ((double)(tex->y + tex->h)) / (double)tex->pt->h;
+   return tex;
 }
 
 void
-evas_gl_font_texture_free(Evas_GL_Font_Texture *ft)
+evas_gl_font_texture_free(Evas_GL_Texture *tex)
 {
-   if (!ft) return;
-   if (ft->gc->font_texture == ft->texture)
-     {
-	ft->gc->font_texture = 0;
-	ft->gc->change.texture = 1;
-     }
-   _evas_gl_font_texture_pool_relinquish(ft->alloc);
-   free(ft);
+   if (!tex) return;
+   evas_gl_common_texture_free(tex);
 }
 
 void
 evas_gl_font_texture_draw(Evas_GL_Context *gc, void *surface __UNUSED__, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y)
 {
-   Evas_GL_Font_Texture *ft;
-
-   if (dc != gc->dc)
-	return;
-
-   /* 35 */
-   ft = fg->ext_dat;
-   if (!ft) return;
-//   if (surface == 0)
-     {
-	int r, g, b, a;
-
-	a = (dc->col.col >> 24) & 0xff;
-	if (a == 0) return;
-	r = (dc->col.col >> 16) & 0xff;
-	g = (dc->col.col >> 8 ) & 0xff;
-	b = (dc->col.col      ) & 0xff;
-	/* have to un-premul the color - as we are using blend mode 2 (non-premul blend) */
-	r = (r * 255) / a;
-	g = (g * 255) / a;
-	b = (b * 255) / a;
-	evas_gl_common_context_color_set(gc, r, g, b, a);
-	if (dc->clip.use)
-	  evas_gl_common_context_clip_set(gc, 1,
-					  dc->clip.x, dc->clip.y,
-					  dc->clip.w, dc->clip.h);
-	else
-	  evas_gl_common_context_clip_set(gc, 0,
-					  0, 0, 0, 0);
-	evas_gl_common_context_blend_set(gc, 2);
-	evas_gl_common_context_read_buf_set(gc, GL_BACK);
-	evas_gl_common_context_write_buf_set(gc, GL_BACK);
-     }
-   /* 32 */
-   evas_gl_common_context_font_texture_set(gc, ft);
-   /* 32 */
-   glBegin(GL_QUADS);
-   glTexCoord2d(ft->tx1, ft->ty1); glVertex2i(x        , y        );
-   glTexCoord2d(ft->tx2, ft->ty1); glVertex2i(x + ft->w, y        );
-   glTexCoord2d(ft->tx2, ft->ty2); glVertex2i(x + ft->w, y + ft->h);
-   glTexCoord2d(ft->tx1, ft->ty2); glVertex2i(x        , y + ft->h);
-   glEnd();
-   /* 28 */
-}
-
-static Evas_GL_Font_Texture_Pool_Allocation *
-_evas_gl_font_texture_pool_request(Evas_GL_Context *gc, int w, int h)
-{
-   Eina_List *l;
-   Evas_GL_Font_Texture_Pool_Allocation *fa;
-   Evas_GL_Font_Texture_Pool *fp;
-   int minw = 256;
-   int minh = 256;
-   int shift;
-
-   EINA_LIST_FOREACH(gc->tex_pool, l, fp)
-     {
-	int x, y;
-
-	if (_evas_gl_font_texture_pool_rect_find(fp, w, h, &x, &y))
-	  {
-	     fa = calloc(1, sizeof(Evas_GL_Font_Texture_Pool_Allocation));
-	     if (!fa) return NULL;
-	     fa->pool = fp;
-	     fa->x = x;
-	     fa->y = y;
-	     fa->w = w;
-	     fa->h = h;
-	     fp->allocations = eina_list_prepend(fp->allocations, fa);
-	     if (eina_error_get())
-	       {
-		  free(fa);
-		  return NULL;
-	       }
-	     fp->references++;
-	     return fa;
-	  }
-     }
-   /* need new font texture pool entry */
-   /* minimum size either minw x minh OR the size of glyph up to power 2 */
-   if (w > minw)
-     {
-	minw = w;
-	shift = 1; while (minw > shift) shift = shift << 1; minw = shift;
-     }
-   if (h > minh)
-     {
-	minh = h;
-	shift = 1; while (minh > shift) shift = shift << 1; minh = shift;
-     }
-
-   fp = calloc(1, sizeof(Evas_GL_Font_Texture_Pool));
-   if (!fp) return NULL;
-   gc->tex_pool = eina_list_append(gc->tex_pool, fp);
-   if (eina_error_get())
-     {
-	free(fp);
-	return NULL;
-     }
-   fp->gc = gc;
-   fp->w = minw;
-   fp->h = minh;
-   if (gc->ext.nv_texture_rectangle) fp->rectangle = 1;
-
-   /* we dont want this mipmapped if sgis_generate_mipmap will mipmap it */
-   if (gc->ext.sgis_generate_mipmap)
-     glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_FALSE);
-//   glEnable(GL_TEXTURE_2D);
-   if (fp->rectangle)
-     {
-	glEnable(GL_TEXTURE_RECTANGLE_NV);
-	glGenTextures(1, &(fp->texture));
-	/* FIXME check gl error */
-
-	glBindTexture(GL_TEXTURE_RECTANGLE_NV, fp->texture);
-	glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_REPEAT);
-	glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_REPEAT);
-	glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-	glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
-		     GL_ALPHA4, fp->w, fp->h, 0,
-		     GL_ALPHA, GL_UNSIGNED_BYTE, NULL);
-	/* FIXME check gl error */
-     }
-   else
-     {
-	glEnable(GL_TEXTURE_2D);
-	glGenTextures(1, &(fp->texture));
-	/* FIXME check gl error */
-
-	glBindTexture(GL_TEXTURE_2D, fp->texture);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-	glTexImage2D(GL_TEXTURE_2D, 0,
-		     GL_ALPHA4, fp->w, fp->h, 0,
-		     GL_ALPHA, GL_UNSIGNED_BYTE, NULL);
-	/* FIXME check gl error */
-     }
-
-   /* new allocation entirely */
-   fa = calloc(1, sizeof(Evas_GL_Font_Texture_Pool_Allocation));
-   if (!fa)
-     {
-	gc->tex_pool = eina_list_remove(gc->tex_pool, fp);
-	glDeleteTextures(1, &(fp->texture));
-	free(fp);
-	return NULL;
-     }
-   fa->pool = fp;
-   fa->x = 0;
-   fa->y = 0;
-   fa->w = w;
-   fa->h = h;
-   fp->allocations = eina_list_prepend(fp->allocations, fa);
-   if (eina_error_get())
-     {
-	printf("alloc prob\n");
-	gc->tex_pool = eina_list_remove(gc->tex_pool, fp);
-	glDeleteTextures(1, &(fp->texture));
-	free(fa);
-	free(fp);
-	return NULL;
-     }
-   fp->references++;
-   return fa;
-}
-
-static void
-_evas_gl_font_texture_pool_relinquish(Evas_GL_Font_Texture_Pool_Allocation *fa)
-{
-   fa->pool->allocations = eina_list_remove(fa->pool->allocations, fa);
-   fa->pool->references--;
-   if (fa->pool->references <= 0)
-     {
-	fa->pool->gc->tex_pool =
-	  eina_list_remove(fa->pool->gc->tex_pool, fa->pool);
-	glDeleteTextures(1, &(fa->pool->texture));
-	free(fa->pool);
-     }
-   free(fa);
-}
-
-static int
-_evas_gl_font_texture_pool_rect_find(Evas_GL_Font_Texture_Pool *fp,
-				     int w, int h,
-				     int *x, int *y)
-{
-   Eina_List *l;
-   Evas_GL_Font_Texture_Pool_Allocation *fa;
-
-   if ((w > fp->w) || (h > fp->h)) return 0;
-   EINA_LIST_FOREACH(fp->allocations, l, fa)
-     {
-	Eina_List *l2;
-	Evas_GL_Font_Texture_Pool_Allocation *fa2;
-	int tx, ty, tw, th;
-	int t1, t2;
-	int intersects;
-
-	t1 = t2 = 1;
-	if ((fa->x + fa->w + w) > fp->w) t1 = 0;
-	if ((fa->y + h) > fp->h) t1 = 0;
-	if ((fa->y + fa->h + h) > fp->h) t2 = 0;
-	if ((fa->x + w) > fp->w) t2 = 0;
-	intersects = 0;
-	if (t1)
-	  {
-	     /* 1. try here:
-	      * +----++--+
-	      * |AAAA||??|
-	      * |AAAA|+--+
-	      * |AAAA|
-	      * +----+
-	      */
-	     tx = fa->x + fa->w;
-	     ty = fa->y;
-	     tw = w;
-	     th = h;
-	     EINA_LIST_FOREACH(fp->allocations, l2, fa2)
-	       {
-		  int rx, ry, rw, rh;
-
-		  /* dont do the rect we are just using as our offset */
-		  if (l2 == l) continue;
-		  rx = fa2->x;
-		  ry = fa2->y;
-		  rw = fa2->w;
-		  rh = fa2->h;
-		  if (RECTS_INTERSECT(tx, ty, tw, th, rx, ry, rw, rh))
-		    {
-		       intersects = 1;
-		       break;
-		    }
-	       }
-	     if (!intersects)
-	       {
-		  *x = tx;
-		  *y = ty;
-		  return 1;
-	       }
-	  }
-	intersects = 0;
-	if (t2)
-	  {
-	     /* 2. try here:
-	      * +----+
-	      * |AAAA|
-	      * |AAAA|
-	      * |AAAA|
-	      * +----+
-	      * +--+
-	      * |??|
-	      * +--+
-	      */
-	     tx = fa->x;
-	     ty = fa->y + fa->h;
-	     tw = w;
-	     th = h;
-	     EINA_LIST_FOREACH(fp->allocations, l2, fa2)
-	       {
-		  int rx, ry, rw, rh;
-
-		  /* dont do the rect we are just using as our offset */
-		  if (l2 == l) continue;
-		  /* hmmm crash here on mga... l2->data seems broken */
-		  /* so far it looks like memory corruption, but i can't */
-		  /* use valgrind to inspect any further due to the dri */
-		  /* hardware stuff :( */
-
-		  rx = fa2->x;
-		  ry = fa2->y;
-		  rw = fa2->w;
-		  rh = fa2->h;
-		  if (RECTS_INTERSECT(tx, ty, tw, th, rx, ry, rw, rh))
-		    {
-		       intersects = 1;
-		       break;
-		    }
-	       }
-	     if (!intersects)
-	       {
-		  *x = tx;
-		  *y = ty;
-		  return 1;
-	       }
-	  }
-     }
-   return 0;
+   Evas_GL_Texture *tex;
+   Cutout_Rects *rects;
+   Cutout_Rect  *rct;
+   int r, g, b, a;
+   double ssx, ssy, ssw, ssh;
+   int c, cx, cy, cw, ch;
+   int i;
+   int sx, sy, sw, sh;
+   
+   if (dc != gc->dc) return;
+   tex = fg->ext_dat;
+   if (!tex) return;
+   a = (dc->col.col >> 24) & 0xff;
+   if (a == 0) return;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   sx = 0; sy = 0; sw = tex->w, sh = tex->h;
+   if ((!gc->dc->cutout.rects) 
+//       || (gc->dc->cutout.active > 32)
+       )
+     {
+        if (gc->dc->clip.use)
+          {
+             int nx, ny, nw, nh;
+             
+             nx = x; ny = y; nw = tex->w; nh = tex->h;
+             RECTS_CLIP_TO_RECT(nx, ny, nw, nh,
+                                gc->dc->clip.x, gc->dc->clip.y,
+                                gc->dc->clip.w, gc->dc->clip.h);
+             if ((nw < 1) || (nh < 1)) return;
+             if ((nx == x) && (ny == y) && (nw == tex->w) && (nh == tex->h))
+               {
+                  evas_gl_common_context_font_push(gc, tex,
+                                                   0.0, 0.0, 0.0, 0.0,
+//                                                   sx, sy, sw, sh,
+                                                   x, y, tex->w, tex->h,
+                                                   r, g, b, a);
+                  return;
+               }
+             ssx = (double)sx + ((double)(sw * (nx - x)) / (double)(tex->w));
+             ssy = (double)sy + ((double)(sh * (ny - y)) / (double)(tex->h));
+             ssw = ((double)sw * (double)(nw)) / (double)(tex->w);
+             ssh = ((double)sh * (double)(nh)) / (double)(tex->h);
+             evas_gl_common_context_font_push(gc, tex, 
+                                              ssx, ssy, ssw, ssh,
+                                              nx, ny, nw, nh,
+                                              r, g, b, a);
+          }
+        else
+          {
+             evas_gl_common_context_font_push(gc, tex, 
+                                              0.0, 0.0, 0.0, 0.0,
+//                                              sx, sy, sw, sh,
+                                              x, y, tex->w, tex->h,
+                                              r, g, b, a);
+          }
+        return;
+     }
+   /* save out clip info */
+   c = gc->dc->clip.use; cx = gc->dc->clip.x; cy = gc->dc->clip.y; cw = gc->dc->clip.w; ch = gc->dc->clip.h;
+   evas_common_draw_context_clip_clip(gc->dc, 0, 0, gc->w, gc->h);
+   evas_common_draw_context_clip_clip(gc->dc, x, y, tex->w, tex->h);
+   /* our clip is 0 size.. abort */
+   if ((gc->dc->clip.w <= 0) || (gc->dc->clip.h <= 0))
+     {
+        gc->dc->clip.use = c; gc->dc->clip.x = cx; gc->dc->clip.y = cy; gc->dc->clip.w = cw; gc->dc->clip.h = ch;
+        return;
+     }
+   rects = evas_common_draw_context_apply_cutouts(dc);
+   for (i = 0; i < rects->active; ++i)
+     {
+        int nx, ny, nw, nh;
+        
+        rct = rects->rects + i;
+        nx = x; ny = y; nw = tex->w; nh = tex->h;
+        RECTS_CLIP_TO_RECT(nx, ny, nw, nh, rct->x, rct->y, rct->w, rct->h);
+        if ((nw < 1) || (nh < 1)) continue;
+        if ((nx == x) && (ny == y) && (nw == tex->w) && (nh == tex->h))
+          {
+             evas_gl_common_context_font_push(gc, tex,
+                                              0.0, 0.0, 0.0, 0.0,
+//                                              sx, sy, sw, sh,
+                                              x, y, tex->w, tex->h,
+                                              r, g, b, a);
+             continue;
+          }
+        ssx = (double)sx + ((double)(sw * (nx - x)) / (double)(tex->w));
+        ssy = (double)sy + ((double)(sh * (ny - y)) / (double)(tex->h));
+        ssw = ((double)sw * (double)(nw)) / (double)(tex->w);
+        ssh = ((double)sh * (double)(nh)) / (double)(tex->h);
+        evas_gl_common_context_font_push(gc, tex, 
+                                         ssx, ssy, ssw, ssh,
+                                         nx, ny, nw, nh,
+                                         r, g, b, a);
+     }
+   evas_common_draw_context_apply_clear_cutouts(rects);
+   /* restore clip info */
+   gc->dc->clip.use = c; gc->dc->clip.x = cx; gc->dc->clip.y = cy; gc->dc->clip.w = cw; gc->dc->clip.h = ch;
 }
diff --git a/src/modules/engines/gl_common/evas_gl_gradient.c b/src/modules/engines/gl_common/evas_gl_gradient.c
deleted file mode 100644
index 72c75d8..0000000
--- a/src/modules/engines/gl_common/evas_gl_gradient.c
+++ /dev/null
@@ -1,256 +0,0 @@
-#include "evas_gl_private.h"
-
-Evas_GL_Gradient *
-evas_gl_common_gradient_new(void)
-{
-   Evas_GL_Gradient *gr;
-
-   gr = calloc(1, sizeof(Evas_GL_Gradient));
-   if (!gr) return NULL;
-   gr->grad = evas_common_gradient_new();
-   if (!gr->grad) { free(gr);  return NULL; }
-   gr->changed = 1;
-   return gr;
-}
-
-void
-evas_gl_common_gradient_free(Evas_GL_Gradient *gr)
-{
-   if (!gr) return;
-   if (gr->grad) evas_common_gradient_free(gr->grad);
-   if (gr->tex) evas_gl_common_texture_free(gr->tex);
-   free(gr);
-}
-
-void
-evas_gl_common_gradient_color_stop_add(Evas_GL_Gradient *gr, int r, int g, int b, int a, int delta)
-{
-   if (!gr) return;
-   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_alpha_stop_add(Evas_GL_Gradient *gr, int a, int delta)
-{
-   if (!gr) return;
-   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_color_data_set(Evas_GL_Gradient *gr, void * map, int len, int has_alpha)
-{
-   if (!gr) return;
-   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_alpha_data_set(Evas_GL_Gradient *gr, void * alpha_map, int len)
-{
-   if (!gr) return;
-   evas_common_gradient_alpha_data_set(gr->grad, alpha_map, len);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_clear(Evas_GL_Gradient *gr)
-{
-   if (!gr) return;
-   evas_common_gradient_clear(gr->grad);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_fill_set(Evas_GL_Gradient *gr, int x, int y, int w, int h)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_fill_angle_set(Evas_GL_Gradient *gr, double angle)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_fill_spread_set(Evas_GL_Gradient *gr, int spread)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_spread_set(gr->grad, spread);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_map_angle_set(Evas_GL_Gradient *gr, double angle)
-{
-   if (!gr) return;
-   evas_common_gradient_map_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_map_offset_set(Evas_GL_Gradient *gr, float offset)
-{
-   if (!gr) return;
-   evas_common_gradient_map_offset_set(gr->grad, offset);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_map_direction_set(Evas_GL_Gradient *gr, int direction)
-{
-   if (!gr) return;
-   evas_common_gradient_map_direction_set(gr->grad, direction);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_type_set(Evas_GL_Gradient *gr, char *name, char *params)
-{
-   if (!gr) return;
-   evas_common_gradient_type_set(gr->grad, name, params);
-   gr->changed = 1;
-}
-
-int
-evas_gl_common_gradient_is_opaque(Evas_GL_Context *gc, Evas_GL_Gradient *gr,
-                                  int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc;
-
-   if (!gc || !gc->dc || !gr || !gr->grad || !gr->grad->type.geometer)  return 0;
-   dc = gc->dc;
-   return !(gr->grad->type.geometer->has_alpha(gr->grad, dc->render_op) |
-              gr->grad->type.geometer->has_mask(gr->grad, dc->render_op));
-}
-
-int
-evas_gl_common_gradient_is_visible(Evas_GL_Context *gc, Evas_GL_Gradient *gr,
-                                   int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   if (!gc || !gr)  return 0;
-   return 1;
-}
-
-void
-evas_gl_common_gradient_render_pre(Evas_GL_Context *gc, Evas_GL_Gradient *gr)
-{
-   int  len;
-   RGBA_Draw_Context *dc;
-   RGBA_Gradient     *grad;
-
-   if (!gr || !gc || !gr->grad || !gc->dc) return;
-   grad = gr->grad;
-   dc = gc->dc;
-   if (!grad->type.geometer) return;
-   grad->type.geometer->geom_set(grad);
-   len = grad->type.geometer->get_map_len(grad);
-   evas_common_gradient_map(dc, grad, len);
-   gr->changed = 1;
-}
-
-void
-evas_gl_common_gradient_render_post(Evas_GL_Gradient *gr __UNUSED__)
-{
-}
-
-void
-evas_gl_common_gradient_draw(Evas_GL_Context *gc,
-			     Evas_GL_Gradient *gr,
-			     int x, int y, int w, int h)
-{
-   int r, g, b, a;
-   RGBA_Draw_Context *dc;
-   double  tx2, ty2;
-   
-   if ((w < 1) || (h < 1)) return;
-   if (!gr || !gc || !gc->dc) return;
-   if (!gr->grad || !gr->grad->type.geometer) return;
-   
-   dc = gc->dc;
-   if (dc->mul.use)
-     {
-	a = (dc->mul.col >> 24) & 0xff;
-	r = (dc->mul.col >> 16) & 0xff;
-	g = (dc->mul.col >> 8 ) & 0xff;
-	b = (dc->mul.col      ) & 0xff;
-     }
-   else
-     {
-	r = g = b = a = 255;
-     }
-   evas_gl_common_context_color_set(gc, r, g, b, a);
-   
-   a = !evas_gl_common_gradient_is_opaque(gc, gr, x, y, w, h);
-   evas_gl_common_context_blend_set(gc, a);
-   
-   if (dc->clip.use)
-     evas_gl_common_context_clip_set(gc, 1,
-				     dc->clip.x, dc->clip.y,
-				     dc->clip.w, dc->clip.h);
-   else
-     evas_gl_common_context_clip_set(gc, 0,
-				     0, 0, 0, 0);
-   
-   if (!gr->tex) gr->changed = 1;
-   if (((w != gr->tw) || (h != gr->th)) && gr->tex)
-     {
-	evas_gl_common_texture_free(gr->tex);
-	gr->tex = NULL;
-	gr->changed = 1;
-     }
-   if (gr->changed)
-     {
-	RGBA_Image *im;
-	int op = dc->render_op, cuse = dc->clip.use;
-
-	im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
-        if (!im) return;
-        im = (RGBA_Image *) evas_cache_image_size_set(&im->cache_entry, w, h);
-	dc->render_op = _EVAS_RENDER_FILL;
-	dc->clip.use = 0;
-	evas_common_gradient_draw(im, dc, 0, 0, w, h, gr->grad);
-	if (!gr->tex)
-	  gr->tex = evas_gl_common_texture_new(gc, im, 0);
-	else
-	  evas_gl_common_texture_update(gr->tex, im, 0);
-
-	evas_cache_image_drop(&im->cache_entry);
-
-	dc->render_op = op;
-	dc->clip.use = cuse;
-	if (!gr->tex) return;
-     }
-   
-   if (gr->tex->rectangle)
-     {
-	tx2 = w;
-	ty2 = h;
-     }
-   else
-     {
-	tx2 = (double)w / (double)(gr->tex->w);
-	ty2 = (double)h / (double)(gr->tex->h);
-     }
-   
-   evas_gl_common_context_texture_set(gc, gr->tex, 0,
-				      gr->tex->tw, gr->tex->th);
-   
-   evas_gl_common_context_read_buf_set(gc, GL_BACK);
-   evas_gl_common_context_write_buf_set(gc, GL_BACK);
-   
-   glBegin(GL_QUADS);
-   glTexCoord2d(0.0,  0.0); glVertex2i(x, y);
-   glTexCoord2d(tx2,  0.0); glVertex2i(x + w, y);
-   glTexCoord2d(tx2,  ty2); glVertex2i(x + w, y + h);
-   glTexCoord2d(0.0,  ty2); glVertex2i(x, y + h);
-   glEnd();
-   gr->changed = 0;
-   gr->tw = w;  gr->th = h;
-}
diff --git a/src/modules/engines/gl_common/evas_gl_image.c b/src/modules/engines/gl_common/evas_gl_image.c
index 50f85fd..13c2341 100644
--- a/src/modules/engines/gl_common/evas_gl_image.c
+++ b/src/modules/engines/gl_common/evas_gl_image.c
@@ -10,13 +10,13 @@ evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key
    im_im = evas_common_load_image_from_file(file, key, lo);
    if (!im_im) return NULL;
 
-   EINA_LIST_FOREACH(gc->images, l, im)
+   EINA_LIST_FOREACH(gc->shared->images, l, im)
      {
 	if (im->im == im_im)
 	  {
              evas_cache_image_drop(&im_im->cache_entry);
-	     gc->images = eina_list_remove_list(gc->images, l);
-	     gc->images = eina_list_prepend(gc->images, im);
+	     gc->shared->images = eina_list_remove_list(gc->shared->images, l);
+	     gc->shared->images = eina_list_prepend(gc->shared->images, im);
 	     im->references++;
 	     return im;
 	  }
@@ -26,17 +26,15 @@ evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key
    if (!im) return NULL;
    im->references = 1;
    im->im = im_im;
-   if (!im->im)
-     {
-	free(im);
-	return NULL;
-     }
    im->gc = gc;
    im->references = 1;
    im->cached = 1;
    im->cs.space = EVAS_COLORSPACE_ARGB8888;
+   im->alpha = im->im->cache_entry.flags.alpha;
+   im->w = im->im->cache_entry.w;
+   im->h = im->im->cache_entry.h;
    if (lo) im->load_opts = *lo;
-   gc->images = eina_list_prepend(gc->images, im);
+   gc->shared->images = eina_list_prepend(gc->shared->images, im);
    return im;
 }
 
@@ -46,14 +44,14 @@ evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, DATA32 *da
    Evas_GL_Image *im;
    Eina_List *l;
 
-   EINA_LIST_FOREACH(gc->images, l, im)
+   EINA_LIST_FOREACH(gc->shared->images, l, im)
      {
 	if (((void *)(im->im->image.data) == (void *)data) &&
 	    (im->im->cache_entry.w == w) &&
 	    (im->im->cache_entry.h == h))
 	  {
-	     gc->images = eina_list_remove_list(gc->images, l);
-	     gc->images = eina_list_prepend(gc->images, im);
+	     gc->shared->images = eina_list_remove_list(gc->shared->images, l);
+	     gc->shared->images = eina_list_prepend(gc->shared->images, im);
 	     im->references++;
 	     return im;
 	  }
@@ -70,6 +68,9 @@ evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, DATA32 *da
      }
    im->gc = gc;
    im->cs.space = cspace;
+   im->alpha = im->im->cache_entry.flags.alpha;
+   im->w = im->im->cache_entry.w;
+   im->h = im->im->cache_entry.h;
    switch (cspace)
      {
       case EVAS_COLORSPACE_ARGB8888:
@@ -87,9 +88,8 @@ evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, DATA32 *da
      }
    /*
     im->cached = 1;
-    gc->images = eina_list_prepend(gc->images, im);
+    gc->shared->images = eina_list_prepend(gc->shared->images, im);
     */
-   printf("new im cs = %i\n", im->cs.space);
    return im;
 }
 
@@ -110,6 +110,9 @@ evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, int w, int h, DAT
      }
    im->gc = gc;
    im->cs.space = cspace;
+   im->alpha = im->im->cache_entry.flags.alpha;
+   im->w = im->im->cache_entry.w;
+   im->h = im->im->cache_entry.h;
    switch (cspace)
      {
       case EVAS_COLORSPACE_ARGB8888:
@@ -117,7 +120,7 @@ evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, int w, int h, DAT
       case EVAS_COLORSPACE_YCBCR422P601_PL:
       case EVAS_COLORSPACE_YCBCR422P709_PL:
         if (im->tex) evas_gl_common_texture_free(im->tex);
-	im->tex = NULL;
+        im->tex = NULL;
 	im->cs.no_free = 0;
         im->cs.data = calloc(1, im->im->cache_entry.h * sizeof(unsigned char *) * 2);
         if ((data) && (im->cs.data))
@@ -145,8 +148,11 @@ evas_gl_common_image_new(Evas_GL_Context *gc, int w, int h, int alpha, int cspac
 	return NULL;
      }
    im->gc = gc;
-   im->cs.space = cspace;
    im->im->cache_entry.flags.alpha = alpha ? 1 : 0;
+   im->cs.space = cspace;
+   im->alpha = im->im->cache_entry.flags.alpha;
+   im->w = im->im->cache_entry.w;
+   im->h = im->im->cache_entry.h;
    evas_cache_image_colorspace(&im->im->cache_entry, cspace);
    im->im = (RGBA_Image *) evas_cache_image_size_set(&im->im->cache_entry, w, h);
    switch (cspace)
@@ -177,50 +183,49 @@ evas_gl_common_image_free(Evas_GL_Image *im)
      {
 	if (!im->cs.no_free) free(im->cs.data);
      }
-   if (im->cached) im->gc->images = eina_list_remove(im->gc->images, im);
+   if (im->cached) im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
    if (im->im) evas_cache_image_drop(&im->im->cache_entry);
    if (im->tex) evas_gl_common_texture_free(im->tex);
    free(im);
 }
 
-void
-evas_gl_common_image_dirty(Evas_GL_Image *im)
+Evas_GL_Image *
+evas_gl_common_image_surface_new(Evas_GL_Context *gc, int w, int h, int alpha)
 {
-   im->im = (RGBA_Image *) evas_cache_image_dirty(&im->im->cache_entry, 0, 0, im->im->cache_entry.w, im->im->cache_entry.h);
-   im->dirty = 1;
+   Evas_GL_Image *im;
+
+   im = calloc(1, sizeof(Evas_GL_Image));
+   if (!im) return NULL;
+   im->references = 1;
+   im->gc = gc;
+   im->cs.space = EVAS_COLORSPACE_ARGB8888;
+   im->alpha = alpha;
+   im->w = w;
+   im->h = h;
+   im->tex = evas_gl_common_texture_render_new(gc, w, h, alpha);
+   im->tex_only = 1;
+   return im;
 }
 
 void
-evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth)
+evas_gl_common_image_dirty(Evas_GL_Image *im)
 {
-   RGBA_Draw_Context *dc;
-   int r, g, b, a;
-   double tx1, ty1, tx2, ty2;
-   int    ow, oh;
-   int    space;
-   Cutout_Rects *rects;
-   Cutout_Rect  *rct;
-   int          c, cx, cy, cw, ch;
-   int          i;
-   
-   if (sw < 1) sw = 1;
-   if (sh < 1) sh = 1;
-   dc = gc->dc;
-   if (dc->mul.use)
+   if (im->im)
      {
-	a = (dc->mul.col >> 24) & 0xff;
-	r = (dc->mul.col >> 16) & 0xff;
-	g = (dc->mul.col >> 8 ) & 0xff;
-	b = (dc->mul.col      ) & 0xff;
+        im->im = (RGBA_Image *) evas_cache_image_dirty(&im->im->cache_entry, 0, 0, im->im->cache_entry.w, im->im->cache_entry.h);
      }
-   else
-     {
-	r = g = b = a = 255;
-     }
-   
-   if (!gc->ext.arb_program && (im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL
-      || im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
+   im->dirty = 1;
+}
+
+static void
+_evas_gl_common_image_update(Evas_GL_Context *gc, Evas_GL_Image *im)
+{
+   if (!im->im) return;
+/*   
+   if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
      {
+        // SOFTWARE convert. do multi texture later
         if ((im->cs.data) && (*((unsigned char **)im->cs.data)))
           {
              if (im->dirty || !im->im->image.data)
@@ -236,103 +241,183 @@ evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy
         space = EVAS_COLORSPACE_ARGB8888;
      }
    else
-     space = im->cs.space;
-   
-/* leak in this switch */
-   switch (space)
+ */
+   switch (im->cs.space)
      {
       case EVAS_COLORSPACE_ARGB8888:
         evas_cache_image_load_data(&im->im->cache_entry);
 	if ((im->tex) && (im->dirty))
 	  {
-	     evas_gl_common_texture_update(im->tex, im->im, im->tex->smooth);
+	     evas_gl_common_texture_update(im->tex, im->im);
 	     im->dirty = 0;
 	  }
 	if (!im->tex)
-	  im->tex = evas_gl_common_texture_new(gc, im->im, smooth);
-	ow = (dw * im->tex->tw) / sw;
-	oh = (dh * im->tex->th) / sh;
-	if (im->tex->rectangle)
-	  {
-	     tx1 = sx;
-	     ty1 = sy;
-	     tx2 = sx + sw;
-	     ty2 = sy + sh;
-	  }
-	else
-	  {
-	     tx1 = (double)(sx     ) / (double)(im->tex->w);
-	     ty1 = (double)(sy     ) / (double)(im->tex->h);
-	     tx2 = (double)(sx + sw) / (double)(im->tex->w);
-	     ty2 = (double)(sy + sh) / (double)(im->tex->h);
-	  }
-	evas_gl_common_context_texture_set(gc, im->tex, smooth, ow, oh);
+	  im->tex = evas_gl_common_texture_new(gc, im->im);
+        if (!im->tex) return;
 	break;
       case EVAS_COLORSPACE_YCBCR422P601_PL:
       case EVAS_COLORSPACE_YCBCR422P709_PL:
-	if ((im->tex) && (im->dirty))
-	  {
-	     evas_gl_common_ycbcr601pl_texture_update(im->tex, im->cs.data, im->im->cache_entry.w, im->im->cache_entry.h, smooth);
-	     im->dirty = 0;
-	  }
-	if ((!im->tex) && (im->cs.data) && (*((unsigned char **)im->cs.data)))
-	  {
-	     im->tex = evas_gl_common_ycbcr601pl_texture_new(gc, im->cs.data, im->im->cache_entry.w, im->im->cache_entry.h, smooth);
-	  }
-	if (!im->tex) return;
-	ow = (dw * im->tex->tw) / sw;
-	oh = (dh * im->tex->th) / sh;
-	if (im->tex->rectangle)
-	  {
-	     tx1 = sx;
-	     ty1 = sy;
-	     tx2 = sx + sw;
-	     ty2 = sy + sh;
-	  }
-	else
-	  {
-	     tx1 = (double)(sx     ) / (double)(im->tex->w);
-	     ty1 = (double)(sy     ) / (double)(im->tex->h);
-	     tx2 = (double)(sx + sw) / (double)(im->tex->w);
-	     ty2 = (double)(sy + sh) / (double)(im->tex->h);
-	  }
-	evas_gl_common_context_texture_set(gc, im->tex, smooth, ow, oh);
-
-	break;
+        if ((im->tex) && (im->dirty))
+          {
+             evas_gl_common_texture_yuv_update(im->tex, im->cs.data,
+                                               im->im->cache_entry.w, 
+                                               im->im->cache_entry.h);
+             im->dirty = 0;
+          }
+        if ((!im->tex) && (im->cs.data) && (*((unsigned char **)im->cs.data)))
+          {
+             im->tex = evas_gl_common_texture_yuv_new(gc, im->cs.data,
+                                                      im->im->cache_entry.w, 
+                                                      im->im->cache_entry.h);
+             im->dirty = 0;
+          }
+        if (!im->tex) return;
+        break;
       default:
-	abort();
+        printf("unhandled img format\n");
 	break;
     }
+}
+
+void
+evas_gl_common_image_map4_draw(Evas_GL_Context *gc, Evas_GL_Image *im, 
+                               RGBA_Map_Point *p, int smooth, int level)
+{
+   RGBA_Draw_Context *dc;
+   int r, g, b, a;
+   int c, cx, cy, cw, ch;
+   
+   dc = gc->dc;
+   if (dc->mul.use)
+     {
+        a = (dc->mul.col >> 24) & 0xff;
+        r = (dc->mul.col >> 16) & 0xff;
+        g = (dc->mul.col >> 8 ) & 0xff;
+        b = (dc->mul.col      ) & 0xff;
+     }
+   else
+     {
+        r = g = b = a = 255;
+     }
    
-//   if ((!im->tex->have_mipmaps) && (smooth) &&
-//       ((im->tex->uw < im->tex->tw) || (im->tex->uh < im->tex->th)) &&
-//       (!gc->ext.sgis_generate_mipmap))
-//     evas_gl_common_texture_mipmaps_build(im->tex, im->im, smooth);
+   _evas_gl_common_image_update(gc, im);
 
-   evas_gl_common_context_color_set(gc, r, g, b, a);
-   if ((a < 255) || im->im->cache_entry.flags.alpha)
-     evas_gl_common_context_blend_set(gc, 1);
-   else evas_gl_common_context_blend_set(gc, 0);
-   evas_gl_common_context_read_buf_set(gc, GL_BACK);
-   evas_gl_common_context_write_buf_set(gc, GL_BACK);
+   // FIXME: need to handle clipping with a scissor. only sane way to do it.
+
+   glFlush();
+   
+   c = gc->dc->clip.use; 
+   cx = gc->dc->clip.x; cy = gc->dc->clip.y; 
+   cw = gc->dc->clip.w; ch = gc->dc->clip.h;
+   evas_gl_common_context_image_map4_push(gc, im->tex, p, 
+                                          c, cx, cy, cw, ch, 
+                                          r, g, b, a, smooth, im->tex_only);
+}
+
+void
+evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth)
+{
+   RGBA_Draw_Context *dc;
+   int r, g, b, a;
+   double ssx, ssy, ssw, ssh;
+   Cutout_Rects *rects;
+   Cutout_Rect  *rct;
+   int c, cx, cy, cw, ch;
+   int i;
+   int yuv = 0;
+   
+   if (sw < 1) sw = 1;
+   if (sh < 1) sh = 1;
+   dc = gc->dc;
+   if (dc->mul.use)
+     {
+	a = (dc->mul.col >> 24) & 0xff;
+	r = (dc->mul.col >> 16) & 0xff;
+	g = (dc->mul.col >> 8 ) & 0xff;
+	b = (dc->mul.col      ) & 0xff;
+     }
+   else
+     {
+	r = g = b = a = 255;
+     }
+   
+   _evas_gl_common_image_update(gc, im);
 
-   if (!gc->dc->cutout.rects)
+   if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     yuv = 1;
+   
+   if ((!gc->dc->cutout.rects)
+//       || (gc->dc->cutout.active > 32)
+       )
      {
         if (gc->dc->clip.use)
-          evas_gl_common_context_clip_set(gc, 1,
-                                          gc->dc->clip.x, gc->dc->clip.y,
-                                          gc->dc->clip.w, gc->dc->clip.h);
+          {
+             int nx, ny, nw, nh;
+             
+             nx = dx; ny = dy; nw = dw; nh = dh;
+             RECTS_CLIP_TO_RECT(nx, ny, nw, nh, 
+                                gc->dc->clip.x, gc->dc->clip.y,
+                                gc->dc->clip.w, gc->dc->clip.h);
+             if ((nw < 1) || (nh < 1)) return;
+             if ((nx == dx) && (ny == dy) && (nw == dw) && (nh == dh))
+               {
+                  if (yuv)
+                    evas_gl_common_context_yuv_push(gc,
+                                                    im->tex,
+                                                    sx, sy, sw, sh,
+                                                    dx, dy, dw, dh,
+                                                    r, g, b, a,
+                                                    smooth);
+                  else
+                    evas_gl_common_context_image_push(gc,
+                                                      im->tex,
+                                                      sx, sy, sw, sh,
+                                                      dx, dy, dw, dh,
+                                                      r, g, b, a,
+                                                      smooth);
+                  return;
+               }
+             
+             ssx = (double)sx + ((double)(sw * (nx - dx)) / (double)(dw));
+             ssy = (double)sy + ((double)(sh * (ny - dy)) / (double)(dh));
+             ssw = ((double)sw * (double)(nw)) / (double)(dw);
+             ssh = ((double)sh * (double)(nh)) / (double)(dh);
+             if (yuv)
+               evas_gl_common_context_yuv_push(gc,
+                                               im->tex,
+                                               ssx, ssy, ssw, ssh,
+                                               nx, ny, nw, nh,
+                                               r, g, b, a,
+                                               smooth);
+             else
+               evas_gl_common_context_image_push(gc,
+                                                 im->tex,
+                                                 ssx, ssy, ssw, ssh,
+                                                 nx, ny, nw, nh,
+                                                 r, g, b, a,
+                                                 smooth);
+          }
         else
-          evas_gl_common_context_clip_set(gc, 0,
-                                          0, 0, 0, 0);
-        glBegin(GL_QUADS);
-        glTexCoord2d(tx1, ty1); glVertex2i(dx     , dy     );
-        glTexCoord2d(tx2, ty1); glVertex2i(dx + dw, dy     );
-        glTexCoord2d(tx2, ty2); glVertex2i(dx + dw, dy + dh);
-        glTexCoord2d(tx1, ty2); glVertex2i(dx     , dy + dh);
-        glEnd();
+          {
+             if (yuv)
+               evas_gl_common_context_yuv_push(gc,
+                                               im->tex,
+                                               sx, sy, sw, sh,
+                                               dx, dy, dw, dh,
+                                               r, g, b, a,
+                                               smooth);
+             else
+               evas_gl_common_context_image_push(gc,
+                                                 im->tex,
+                                                 sx, sy, sw, sh,
+                                                 dx, dy, dw, dh,
+                                                 r, g, b, a,
+                                                 smooth);
+          }
         return;
      }
+   
    /* save out clip info */
    c = gc->dc->clip.use; cx = gc->dc->clip.x; cy = gc->dc->clip.y; cw = gc->dc->clip.w; ch = gc->dc->clip.h;
    evas_common_draw_context_clip_clip(gc->dc, 0, 0, gc->w, gc->h);
@@ -346,18 +431,48 @@ evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy
    rects = evas_common_draw_context_apply_cutouts(dc);
    for (i = 0; i < rects->active; ++i)
      {
+        int nx, ny, nw, nh;
+
         rct = rects->rects + i;
-        if (gc->dc->clip.use)
-          evas_gl_common_context_clip_set(gc, 1, rct->x, rct->y, rct->w, rct->h);
+        nx = dx; ny = dy; nw = dw; nh = dh;
+        RECTS_CLIP_TO_RECT(nx, ny, nw, nh, rct->x, rct->y, rct->w, rct->h);
+        if ((nw < 1) || (nh < 1)) continue;
+        if ((nx == dx) && (ny == dy) && (nw == dw) && (nh == dh))
+          {
+             if (yuv)
+               evas_gl_common_context_yuv_push(gc,
+                                               im->tex,
+                                               sx, sy, sw, sh,
+                                               dx, dy, dw, dh,
+                                               r, g, b, a,
+                                               smooth);
+             else
+               evas_gl_common_context_image_push(gc,
+                                                 im->tex,
+                                                 sx, sy, sw, sh,
+                                                 dx, dy, dw, dh,
+                                                 r, g, b, a,
+                                                 smooth);
+             continue;
+          }
+        ssx = (double)sx + ((double)(sw * (nx - dx)) / (double)(dw));
+        ssy = (double)sy + ((double)(sh * (ny - dy)) / (double)(dh));
+        ssw = ((double)sw * (double)(nw)) / (double)(dw);
+        ssh = ((double)sh * (double)(nh)) / (double)(dh);
+        if (yuv)
+          evas_gl_common_context_yuv_push(gc,
+                                          im->tex,
+                                          ssx, ssy, ssw, ssh,
+                                          nx, ny, nw, nh,
+                                          r, g, b, a,
+                                          smooth);
         else
-          evas_gl_common_context_clip_set(gc, 0,
-                                          0, 0, 0, 0);
-        glBegin(GL_QUADS);
-        glTexCoord2d(tx1, ty1); glVertex2i(dx     , dy     );
-        glTexCoord2d(tx2, ty1); glVertex2i(dx + dw, dy     );
-        glTexCoord2d(tx2, ty2); glVertex2i(dx + dw, dy + dh);
-        glTexCoord2d(tx1, ty2); glVertex2i(dx     , dy + dh);
-        glEnd();
+          evas_gl_common_context_image_push(gc,
+                                            im->tex,
+                                            ssx, ssy, ssw, ssh,
+                                            nx, ny, nw, nh,
+                                            r, g, b, a,
+                                            smooth);
      }
    evas_common_draw_context_apply_clear_cutouts(rects);
    /* restore clip info */
diff --git a/src/modules/engines/gl_common/evas_gl_line.c b/src/modules/engines/gl_common/evas_gl_line.c
deleted file mode 100644
index 238892a..0000000
--- a/src/modules/engines/gl_common/evas_gl_line.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "evas_gl_private.h"
-
-void
-evas_gl_common_line_draw(Evas_GL_Context *gc, int x1, int y1, int x2, int y2)
-{
-   int r, g, b, a;
-   RGBA_Draw_Context *dc = gc->dc;
-
-   a = (dc->col.col >> 24) & 0xff;
-   r = (dc->col.col >> 16) & 0xff;
-   g = (dc->col.col >> 8 ) & 0xff;
-   b = (dc->col.col      ) & 0xff;
-   evas_gl_common_context_color_set(gc, r, g, b, a);
-   if (a < 255) evas_gl_common_context_blend_set(gc, 1);
-   else evas_gl_common_context_blend_set(gc, 0);
-   if (dc->clip.use)
-     evas_gl_common_context_clip_set(gc, 1,
-				     dc->clip.x, dc->clip.y,
-				     dc->clip.w, dc->clip.h);
-   else
-     evas_gl_common_context_clip_set(gc, 0,
-				     0, 0, 0, 0);
-   evas_gl_common_context_texture_set(gc, NULL, 0, 0, 0);
-   evas_gl_common_context_read_buf_set(gc, GL_BACK);
-   evas_gl_common_context_write_buf_set(gc, GL_BACK);
-   glBegin(GL_LINES);
-   glVertex2i(x1, y1);
-   glVertex2i(x2, y2);
-   glEnd();
-}
diff --git a/src/modules/engines/gl_common/evas_gl_misc.c b/src/modules/engines/gl_common/evas_gl_misc.c
deleted file mode 100644
index 66483c7..0000000
--- a/src/modules/engines/gl_common/evas_gl_misc.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "evas_gl_private.h"
-
-void
-evas_gl_common_swap_rect(Evas_GL_Context *gc, int x, int y, int w, int h)
-{
-   evas_gl_common_context_read_buf_set(gc, GL_BACK);
-   evas_gl_common_context_write_buf_set(gc, GL_FRONT);
-   evas_gl_common_context_blend_set(gc, 0);
-   evas_gl_common_context_clip_set(gc, 0, 0, 0, 0, 0);
-   evas_gl_common_context_dither_set(gc, 0);
-   y = gc->h - y - h;
-   glRasterPos2i(x, gc->h - y);
-   glCopyPixels(x, y, w, h, GL_COLOR);
-}
diff --git a/src/modules/engines/gl_common/evas_gl_polygon.c b/src/modules/engines/gl_common/evas_gl_polygon.c
deleted file mode 100644
index 6f0ab10..0000000
--- a/src/modules/engines/gl_common/evas_gl_polygon.c
+++ /dev/null
@@ -1,168 +0,0 @@
-#include "evas_gl_private.h"
-
-#ifdef _WIN32
-# define EFL_STDCALL __stdcall
-#else
-# define EFL_STDCALL
-#endif
-
-#define GLU_TESS
-
-Evas_GL_Polygon *
-evas_gl_common_poly_point_add(Evas_GL_Polygon *poly, int x, int y)
-{
-   Evas_GL_Polygon_Point *pt;
-
-   if (!poly) poly = calloc(1, sizeof(Evas_GL_Polygon));
-   if (!poly) return NULL;
-   pt = calloc(1, sizeof(Evas_GL_Polygon_Point));
-   if (!pt) return NULL;
-   pt->x = x;
-   pt->y = y;
-   poly->points = eina_list_append(poly->points, pt);
-   poly->changed = 1;
-   return poly;
-}
-
-Evas_GL_Polygon *
-evas_gl_common_poly_points_clear(Evas_GL_Polygon *poly)
-{
-   if (!poly) return NULL;
-   while (poly->points)
-     {
-	Evas_GL_Polygon_Point *pt;
-
-	pt = poly->points->data;
-	poly->points = eina_list_remove(poly->points, pt);
-	free(pt);
-     }
-   if (poly->dl > 0) glDeleteLists(poly->dl, 1);
-   free(poly);
-   return NULL;
-}
-
-#ifdef GLU_TESS
-static void EFL_STDCALL _evas_gl_tess_begin_cb(GLenum which);
-static void EFL_STDCALL _evas_gl_tess_end_cb(void);
-static void EFL_STDCALL _evas_gl_tess_error_cb(GLenum errorcode);
-static void EFL_STDCALL _evas_gl_tess_vertex_cb(GLvoid *vertex);
-static void EFL_STDCALL _evas_gl_tess_combine_cb(GLdouble coords[3], GLdouble *vertex_data[4], GLfloat weight[4], GLdouble **data_out);
-
-static void EFL_STDCALL
-_evas_gl_tess_begin_cb(GLenum which)
-{
-   glBegin(which);
-}
-
-static void EFL_STDCALL
-_evas_gl_tess_end_cb(void)
-{
-   glEnd();
-}
-
-static void EFL_STDCALL
-_evas_gl_tess_error_cb(GLenum errorcode __UNUSED__)
-{
-}
-
-static void EFL_STDCALL
-_evas_gl_tess_vertex_cb(GLvoid *vertex)
-{
-   GLdouble *v;
-
-   v = vertex;
-   glVertex2d(v[0], v[1]);
-}
-
-static void EFL_STDCALL
-_evas_gl_tess_combine_cb(GLdouble coords[3], GLdouble *vertex_data[4] __UNUSED__, GLfloat weight[4] __UNUSED__, GLdouble **data_out)
-{
-   GLdouble *vertex;
-
-   vertex = (GLdouble *) malloc(6 * sizeof(GLdouble));
-   vertex[0] = coords[0];
-   vertex[1] = coords[1];
-   *data_out = vertex;
-}
-#endif
-
-void
-evas_gl_common_poly_draw(Evas_GL_Context *gc, Evas_GL_Polygon *poly)
-{
-   int r, g, b, a;
-   Eina_List *l;
-   static void *tess = NULL;
-   GLdouble *glp = NULL;
-   int i, num;
-   RGBA_Draw_Context *dc = gc->dc;
-   Evas_GL_Polygon_Point *p;
-
-   a = (dc->col.col >> 24) & 0xff;
-   r = (dc->col.col >> 16) & 0xff;
-   g = (dc->col.col >> 8 ) & 0xff;
-   b = (dc->col.col      ) & 0xff;
-   evas_gl_common_context_color_set(gc, r, g, b, a);
-   if (a < 255) evas_gl_common_context_blend_set(gc, 1);
-   else evas_gl_common_context_blend_set(gc, 0);
-   if (dc->clip.use)
-     evas_gl_common_context_clip_set(gc, 1,
-				     dc->clip.x, dc->clip.y,
-				     dc->clip.w, dc->clip.h);
-   else
-     evas_gl_common_context_clip_set(gc, 0,
-				     0, 0, 0, 0);
-   evas_gl_common_context_texture_set(gc, NULL, 0, 0, 0);
-   evas_gl_common_context_read_buf_set(gc, GL_BACK);
-   evas_gl_common_context_write_buf_set(gc, GL_BACK);
-
-   if (poly->changed || poly->dl <= 0)
-     {
-	if (poly->dl > 0) glDeleteLists(poly->dl, 1);
-	poly->dl = glGenLists(1);
-
-	glNewList(poly->dl, GL_COMPILE_AND_EXECUTE);
-#ifdef GLU_TESS
-	if (!tess)
-	  {
-	     tess = gluNewTess();
-
-	     gluTessCallback(tess, GLU_TESS_BEGIN, _evas_gl_tess_begin_cb);
-	     gluTessCallback(tess, GLU_TESS_END, _evas_gl_tess_end_cb);
-	     gluTessCallback(tess, GLU_TESS_ERROR, _evas_gl_tess_error_cb);
-	     gluTessCallback(tess, GLU_TESS_VERTEX, _evas_gl_tess_vertex_cb);
-	     gluTessCallback(tess, GLU_TESS_COMBINE, _evas_gl_tess_combine_cb);
-	  }
-	num = 0;
-	num = eina_list_count(poly->points);
-	i = 0;
-	glp = malloc(num * 6 * sizeof(GLdouble));
-	gluTessNormal(tess, 0, 0, 1);
-	gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
-	gluTessBeginPolygon(tess, NULL);
-	gluTessBeginContour(tess);
-	EINA_LIST_FOREACH(poly->points, l, p)
-	  {
-	     glp[i++] = p->x;
-	     glp[i++] = p->y;
-	     glp[i++] = 0;
-	     gluTessVertex(tess, &(glp[i - 3]), &(glp[i - 3]));
-	     i += 3;
-	  }
-	gluTessEndContour(tess);
-	gluTessEndPolygon(tess);
-	free(glp);
-#else
-	glBegin(GL_POLYGON);
-	EINA_LIST_FOREACH(poly->points, l, p)
-	  glVertex2i(p->x, p->y);
-	glEnd();
-#endif
-	glEndList();
-
-	poly->changed = 0;
-
-	return ;
-     }
-
-   glCallList(poly->dl);
-}
diff --git a/src/modules/engines/gl_common/evas_gl_private.h b/src/modules/engines/gl_common/evas_gl_private.h
index 8ad9f81..a7d6378 100644
--- a/src/modules/engines/gl_common/evas_gl_private.h
+++ b/src/modules/engines/gl_common/evas_gl_private.h
@@ -1,90 +1,7 @@
 #ifndef _EVAS_GL_PRIVATE_H
 #define _EVAS_GL_PRIVATE_H
-
 #include "evas_gl_common.h"
 
-#ifndef GL_TEXTURE_RECTANGLE_NV
-#define GL_TEXTURE_RECTANGLE_NV 0x84f5
-#endif
-
-#if 0
-#ifndef GL_WRITE_PIXEL_DATA_RANGE_NV
-/* nvidia extensions */
-extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
-extern void glPixelDataRangeNV(GLenum target, GLsizei length, void *pointer);
-extern void glFlushPixelDataRangeNV(GLenum target);
-# define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
-#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
-#endif
-
-/* arb extensions */
-void glBindBufferARB(GLenum target, uint buffer);
-void glDeleteBuffersARB(GLsizei n, const uint *buffers);
-void glGenBuffersARB(GLsizei n, GLuint *buffers);
-GLboolean glIsBufferARB(GLuint buffer);
-
-void glBufferDataARB(GLenum target, GLsizei size, const void *data,
-		                        GLenum usage);
-void glBufferSubDataARB(GLenum target, int offset, GLsizei size,
-			                      const void *data);
-void glGetBufferSubDataARB(GLenum target, int offset,
-			                            GLsizei size, void *data);
-
-void *glMapBufferARB(GLenum target, GLenum access);
-GLboolean glUnmapBufferARB(GLenum target);
-
-void glGetBufferParameterivARB(GLenum target, GLenum pname, int *params);
-void glGetBufferPointervARB(GLenum target, GLenum pname, void **params);
-
-#define GL_ARRAY_BUFFER_ARB                             0x8892
-#define GL_ELEMENT_ARRAY_BUFFER_ARB                     0x8893
-#define GL_ARRAY_BUFFER_BINDING_ARB                     0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB             0x8895
-#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB              0x8896
-#define GL_BNORMAL_ARRAY_BUFFER_BINDING_ARB             0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB               0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB               0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB       0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB           0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB     0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB      0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB              0x889E
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB       0x889F
-#define GL_STREAM_DRAW_ARB                              0x88E0
-#define GL_STREAM_READ_ARB                              0x88E1
-#define GL_STREAM_COPY_ARB                              0x88E2
-#define GL_STATIC_DRAW_ARB                              0x88E4
-#define GL_STATIC_READ_ARB                              0x88E5
-#define GL_STATIC_COPY_ARB                              0x88E6
-#define GL_DYNAMIC_DRAW_ARB                             0x88E8
-#define GL_DYNAMIC_READ_ARB                             0x88E9
-#define GL_DYNAMIC_COPY_ARB                             0x88EA
-#define GL_READ_ONLY_ARB                                0x88B8
-#define GL_WRITE_ONLY_ARB                               0x88B9
-#define GL_READ_WRITE_ARB                               0x88BA
-#define GL_BUFFER_SIZE_ARB                              0x8764
-#define GL_BUFFER_USAGE_ARB                             0x8765
-#define GL_BUFFER_ACCESS_ARB                            0x88BB
-#define GL_BUFFER_MAPPED_ARB                            0x88BC
-#define GL_BUFFER_MAP_POINTER_ARB                       0x88BD
-#endif
-
-
-
-
-
-
-/* evas ARGB pixel config */
-#define NATIVE_PIX_FORMAT GL_BGRA
-
-/* Big endian systems require the texture know the byte order is reversed */
-#ifdef WORDS_BIGENDIAN
-#define NATIVE_PIX_UNIT   GL_UNSIGNED_INT_8_8_8_8_REV
-#else
-/* fast on vidia */
-/*#define NATIVE_PIX_UNIT   GL_UNSIGNED_INT_8_8_8_8_REV*/
-/* fast on ati compared to GL_UNSIGNED_INT_8_8_8_8_REV */
-#define NATIVE_PIX_UNIT   GL_UNSIGNED_BYTE
-#endif
+#include <dlfcn.h>      /* dlopen,dlclose,etc */
 
 #endif
diff --git a/src/modules/engines/gl_common/evas_gl_rectangle.c b/src/modules/engines/gl_common/evas_gl_rectangle.c
index 96948c4..459a6bf 100644
--- a/src/modules/engines/gl_common/evas_gl_rectangle.c
+++ b/src/modules/engines/gl_common/evas_gl_rectangle.c
@@ -1,54 +1,27 @@
 #include "evas_gl_private.h"
 
-static void
-evas_gl_common_rect_draw_internal(Evas_GL_Context *gc, int x, int y, int w, int h)
-{
-   int r, g, b, a;
-   RGBA_Draw_Context *dc = gc->dc;
-
-   a = (dc->col.col >> 24) & 0xff;
-   r = (dc->col.col >> 16) & 0xff;
-   g = (dc->col.col >> 8 ) & 0xff;
-   b = (dc->col.col      ) & 0xff;
-   evas_gl_common_context_color_set(gc, r, g, b, a);
-   if (a < 255) evas_gl_common_context_blend_set(gc, 1);
-   else evas_gl_common_context_blend_set(gc, 0);
-   if (dc->clip.use)
-     evas_gl_common_context_clip_set(gc, 1,
-				     dc->clip.x, dc->clip.y,
-				     dc->clip.w, dc->clip.h);
-   else
-     evas_gl_common_context_clip_set(gc, 0,
-				     0, 0, 0, 0);
-   evas_gl_common_context_texture_set(gc, NULL, 0, 0, 0);
-   evas_gl_common_context_read_buf_set(gc, GL_BACK);
-   evas_gl_common_context_write_buf_set(gc, GL_BACK);
-   glBegin(GL_QUADS);
-   glVertex2i(x, y);
-   glVertex2i(x + w, y);
-   glVertex2i(x + w, y + h);
-   glVertex2i(x, y + h);
-   glEnd();
-}
-
 void
 evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h)
 {
    Cutout_Rects *rects;
    Cutout_Rect  *r;
-   int          c, cx, cy, cw, ch;
-   int          i;
+   int          c, cx, cy, cw, ch, cr, cg, cb, ca, i;
    
    if ((w <= 0) || (h <= 0)) return;
-   if (!(RECTS_INTERSECT(x, y, w, h, 0, 0, gc->w, gc->h)))
-     return;
+   if (!(RECTS_INTERSECT(x, y, w, h, 0, 0, gc->w, gc->h))) return;
    /* save out clip info */
    c = gc->dc->clip.use; cx = gc->dc->clip.x; cy = gc->dc->clip.y; cw = gc->dc->clip.w; ch = gc->dc->clip.h;
+   
+   ca = (gc->dc->col.col >> 24) & 0xff;
+//   if (ca <= 0) return;
+   cr = (gc->dc->col.col >> 16) & 0xff;
+   cg = (gc->dc->col.col >> 8 ) & 0xff;
+   cb = (gc->dc->col.col      ) & 0xff;
    evas_common_draw_context_clip_clip(gc->dc, 0, 0, gc->w, gc->h);
    /* no cutouts - cut right to the chase */
    if (!gc->dc->cutout.rects)
      {
-        evas_gl_common_rect_draw_internal(gc, x, y, w, h);
+        evas_gl_common_context_rectangle_push(gc, x, y, w, h, cr, cg, cb, ca);
      }
    else
      {
@@ -60,8 +33,10 @@ evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h)
              for (i = 0; i < rects->active; ++i)
                {
                   r = rects->rects + i;
-                  evas_common_draw_context_set_clip(gc->dc, r->x, r->y, r->w, r->h);
-                  evas_gl_common_rect_draw_internal(gc, x, y, w, h);
+                  if ((r->w > 0) && (r->h > 0))
+                    {
+                       evas_gl_common_context_rectangle_push(gc, r->x, r->y, r->w, r->h, cr, cg, cb, ca);
+                    }
                }
              evas_common_draw_context_apply_clear_cutouts(rects);
           }
diff --git a/src/modules/engines/gl_common/evas_gl_shader.c b/src/modules/engines/gl_common/evas_gl_shader.c
new file mode 100644
index 0000000..4ef99ca
--- /dev/null
+++ b/src/modules/engines/gl_common/evas_gl_shader.c
@@ -0,0 +1,280 @@
+#include "evas_gl_private.h"
+
+/////////////////////////////////////////////
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int rect_frag_bin[] =
+{
+# include "shader/rect_frag_bin_s3c6410.h"
+};
+#endif
+
+const char rect_frag_glsl[] =
+#include "shader/rect_frag.h"
+  ;
+Evas_GL_Program_Source shader_rect_frag_src =
+{
+   rect_frag_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     rect_frag_bin, sizeof(rect_frag_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int rect_vert_bin[] =
+{
+# include "shader/rect_vert_bin_s3c6410.h"
+};
+#endif
+const char rect_vert_glsl[] =
+#include "shader/rect_vert.h"
+  ;
+Evas_GL_Program_Source shader_rect_vert_src =
+{
+   rect_vert_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     rect_vert_bin, sizeof(rect_vert_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+/////////////////////////////////////////////
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int img_frag_bin[] =
+{
+# include "shader/img_frag_bin_s3c6410.h"
+};
+#endif
+
+const char img_frag_glsl[] =
+#include "shader/img_frag.h"
+  ;
+Evas_GL_Program_Source shader_img_frag_src =
+{
+   img_frag_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     img_frag_bin, sizeof(img_frag_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int img_vert_bin[] =
+{
+# include "shader/img_vert_bin_s3c6410.h"
+};
+#endif
+const char img_vert_glsl[] =
+#include "shader/img_vert.h"
+  ;
+Evas_GL_Program_Source shader_img_vert_src =
+{
+   img_vert_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     img_vert_bin, sizeof(img_vert_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+/////////////////////////////////////////////
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int font_frag_bin[] =
+{
+# include "shader/font_frag_bin_s3c6410.h"
+};
+#endif
+
+const char font_frag_glsl[] =
+#include "shader/font_frag.h"
+  ;
+Evas_GL_Program_Source shader_font_frag_src =
+{
+   font_frag_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     font_frag_bin, sizeof(font_frag_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int font_vert_bin[] =
+{
+# include "shader/font_vert_bin_s3c6410.h"
+};
+#endif
+const char font_vert_glsl[] =
+#include "shader/font_vert.h"
+  ;
+Evas_GL_Program_Source shader_font_vert_src =
+{
+   font_vert_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     font_vert_bin, sizeof(font_vert_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+/////////////////////////////////////////////
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int yuv_frag_bin[] =
+{
+# include "shader/yuv_frag_bin_s3c6410.h"
+};
+#endif
+
+const char yuv_frag_glsl[] =
+#include "shader/yuv_frag.h"
+  ;
+Evas_GL_Program_Source shader_yuv_frag_src =
+{
+   yuv_frag_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     yuv_frag_bin, sizeof(yuv_frag_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int yuv_vert_bin[] =
+{
+# include "shader/yuv_vert_bin_s3c6410.h"
+};
+#endif
+const char yuv_vert_glsl[] =
+#include "shader/yuv_vert.h"
+  ;
+Evas_GL_Program_Source shader_yuv_vert_src =
+{
+   yuv_vert_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     yuv_vert_bin, sizeof(yuv_vert_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+/////////////////////////////////////////////
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int tex_frag_bin[] =
+{
+# include "shader/tex_frag_bin_s3c6410.h"
+};
+#endif
+
+const char tex_frag_glsl[] =
+#include "shader/tex_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_frag_src =
+{
+   tex_frag_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     tex_frag_bin, sizeof(tex_frag_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+#if defined (GLES_VARIETY_S3C6410)
+const unsigned int tex_vert_bin[] =
+{
+# include "shader/tex_vert_bin_s3c6410.h"
+};
+#endif
+const char tex_vert_glsl[] =
+#include "shader/tex_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_vert_src =
+{
+   tex_vert_glsl,
+#if defined (GLES_VARIETY_S3C6410)
+     tex_vert_bin, sizeof(tex_vert_bin)
+#else     
+     NULL, 0
+#endif     
+};
+
+
+
+
+
+
+
+/////////////////////////////////////////////
+static void
+gl_compile_link_error(GLuint target, const char *action)
+{
+   int loglen = 0, chars = 0;
+   char *logtxt;
+   
+   glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen);
+   logtxt = calloc(loglen, sizeof(char));
+   if (logtxt)
+     {
+        glGetProgramInfoLog(target, loglen, &chars, logtxt);
+        printf("Failed to %s: %s\n", action, logtxt);
+        free(logtxt);
+     }
+}
+
+void
+evas_gl_common_shader_program_init(Evas_GL_Program *p, 
+                                   Evas_GL_Program_Source *vert,
+                                   Evas_GL_Program_Source *frag,
+                                   const char *name)
+{
+   GLint ok;
+
+   p->vert = glCreateShader(GL_VERTEX_SHADER);
+   p->frag = glCreateShader(GL_FRAGMENT_SHADER);
+#if defined (GLES_VARIETY_S3C6410)
+   glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size);
+   glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size);
+#else 
+   glShaderSource(p->vert, 1,
+                  (const char **)&(vert->src), NULL);
+   glCompileShader(p->vert);
+   glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok);
+   if (!ok)
+     {
+        gl_compile_link_error(p->vert, "compile vertex shader");
+        printf("Abort compile of shader vert (%s):\n%s\n", name, vert->src);
+        return;
+     }
+   glShaderSource(p->frag, 1,
+                  (const char **)&(frag->src), NULL);
+   glCompileShader(p->frag);
+   glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok);
+   if (!ok)
+     {
+        gl_compile_link_error(p->frag, "compile fragment shader");
+        printf("Abort compile of shader frag (%s):\n%s\n", name, frag->src);
+        return;
+     }
+#endif
+   p->prog = glCreateProgram();
+   glAttachShader(p->prog, p->vert);
+   glAttachShader(p->prog, p->frag);
+   
+   glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex");
+   glBindAttribLocation(p->prog, SHAD_COLOR, "color");
+   glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord");
+   glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2");
+   glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3");
+   
+   glLinkProgram(p->prog);
+   glGetProgramiv(p->prog, GL_LINK_STATUS, &ok);
+   if (!ok)
+     {
+        gl_compile_link_error(p->prog, "link fragment and vertex shaders");
+        printf("Abort compile of shader frag (%s):\n%s\n", name, frag->src);
+        printf("Abort compile of shader vert (%s):\n%s\n", name, vert->src);
+        return;
+     }
+}
diff --git a/src/modules/engines/gl_common/evas_gl_texture.c b/src/modules/engines/gl_common/evas_gl_texture.c
index 97d8fe7..61a9dbf 100644
--- a/src/modules/engines/gl_common/evas_gl_texture.c
+++ b/src/modules/engines/gl_common/evas_gl_texture.c
@@ -1,619 +1,552 @@
 #include "evas_gl_private.h"
 
-Evas_GL_Texture *
-evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im, int smooth)
-{
-   Evas_GL_Texture *tex;
-   DATA32 *im_data;
-   int im_w, im_h;
-   int tw, th;
-   int shift;
-   GLenum pixfmt, texfmt;
-
-   tex = calloc(1, sizeof(Evas_GL_Texture));
-   if (!tex) return NULL;
-
-   if ((gc->ext.nv_texture_rectangle) &&
-       (!(gc->ext.arb_texture_non_power_of_two &&
-	  gc->ext.sgis_generate_mipmap)))
-     {
-	tex->gc = gc;
-	tex->w = im->cache_entry.w;
-	tex->h = im->cache_entry.h;
-	tex->rectangle = 1;
-	tex->tw = im->cache_entry.w;
-	tex->th = im->cache_entry.h;
-	tex->references = 0;
-	tex->smooth = smooth;
-	tex->changed = 1;
-
-	glEnable(GL_TEXTURE_2D);
-	glEnable(GL_TEXTURE_RECTANGLE_NV);
-	glGenTextures(1, &(tex->texture));
-	glBindTexture(GL_TEXTURE_RECTANGLE_NV, tex->texture);
-	if (smooth)
-	  {
-	     glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	     glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-	  }
-	else
-	  {
-	     glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	     glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-	  }
+#if 1
+static const GLenum rgba_fmt   = GL_RGBA;
+static const GLenum rgba_ifmt  = GL_RGBA;
+//static const GLenum rgb_fmt    = GL_RGBA;
+//static const GLenum rgb_ifmt   = GL_RGBA;
+static const GLenum alpha_fmt  = GL_ALPHA;
+static const GLenum alpha_ifmt = GL_ALPHA;
+static const GLenum lum_fmt    = GL_LUMINANCE;
+static const GLenum lum_ifmt   = GL_LUMINANCE;
+#else
+static const GLenum rgba_fmt   = GL_RGBA;
+static const GLenum rgba_ifmt  = GL_COMPRESSED_RGBA;
+//static const GLenum rgb_fmt    = GL_RGBA;
+//static const GLenum rgb_ifmt   = GL_COMPRESSED_RGBA;
+static const GLenum alpha_fmt  = GL_ALPHA;
+static const GLenum alpha_ifmt = GL_COMPRESSED_ALPHA;
+static const GLenum lum_fmt    = GL_LUMINANCE;
+static const GLenum lum_ifmt   = GL_COMPRESSED_LUMINANCE;
+#endif
 
-	if (gc->texture) gc->texture->references--;
-	gc->texture = tex;
-	gc->change.texture = 1;
-	tex->references++;
+static int
+_nearest_pow2(int num)
+{
+   unsigned int n = num - 1;
+   n |= n >> 1;
+   n |= n >> 2;
+   n |= n >> 4;
+   n |= n >> 8;
+   n |= n >> 16;
+   return n + 1;
+}
 
-	if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
-	else texfmt = GL_RGB8;
-	pixfmt = NATIVE_PIX_FORMAT;
+static void
+_tex_adjust(Evas_GL_Context *gc, int *w, int *h)
+{
+   unsigned int n;
+   
+   if (gc->shared->info.tex_npo2) return;
+   /*if (gc->shared->info.tex_rect) return;*/
+   *w = _nearest_pow2(*w);
+   *h = _nearest_pow2(*h);
+}
 
-	glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
-		     texfmt, tex->w, tex->h, 0,
-		     pixfmt, NATIVE_PIX_UNIT, im->image.data);
-	return tex;
-     }
+static int
+_tex_round_slot(Evas_GL_Context *gc, int h)
+{
+   if (!gc->shared->info.tex_npo2)
+     h = _nearest_pow2(h);
+   return (h + 15) >> 4;
+}
 
-   if ((gc->ext.arb_texture_non_power_of_two) && (gc->ext.sgis_generate_mipmap))
-     {
-	tw = im->cache_entry.w;
-	th = im->cache_entry.h;
-     }
-   else
+static int
+_tex_format_index(GLuint format)
+{
+   switch (format)
      {
-	shift = 1; while (im->cache_entry.w > shift) shift = shift << 1; tw = shift;
-	shift = 1; while (im->cache_entry.h > shift) shift = shift << 1; th = shift;
+     case GL_RGBA:
+#ifdef GL_COMPRESSED_RGBA
+     case GL_COMPRESSED_RGBA:
+#endif        
+        return 0;
+     case GL_RGB:
+#ifdef GL_COMPRESSED_RGB        
+     case GL_COMPRESSED_RGB:
+#endif        
+        return 1;
+     case GL_ALPHA:
+#ifdef GL_COMPRESSED_ALPHA        
+     case GL_COMPRESSED_ALPHA:
+#endif        
+        return 2;
+     case GL_LUMINANCE:
+#ifdef GL_COMPRESSED_LUMINANCE        
+     case GL_COMPRESSED_LUMINANCE:
+#endif        
+        return 3;
+     default:
+        break;
      }
-   tex->gc = gc;
-   tex->w = tw;
-   tex->h = th;
-   tex->tw = im->cache_entry.w;
-   tex->th = im->cache_entry.h;
-   tex->references = 0;
-   tex->smooth = 0;
-   tex->changed = 1;
-   glEnable(GL_TEXTURE_2D);
-   glGenTextures(1, &(tex->texture));
-   glBindTexture(GL_TEXTURE_2D, tex->texture);
-   if (gc->texture) gc->texture->references--;
-   gc->texture = tex;
-   gc->change.texture = 1;
-   tex->references++;
+   return 0;
+}
 
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+static void
+_tex_2d(int intfmt, int w, int h, int fmt, int type)
+{
+   glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL);
+}
 
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+static void
+_tex_sub_2d(int x, int y, int w, int h, int fmt, int type, const void *pix)
+{
+   glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, fmt, type, pix);
+}
+
+static Evas_GL_Texture_Pool *
+_pool_tex_new(Evas_GL_Context *gc, int w, int h, int intformat, int format)
+{
+   Evas_GL_Texture_Pool *pt;
+   
+   pt = calloc(1, sizeof(Evas_GL_Texture_Pool));
+   if (!pt) return NULL;
+   h = _tex_round_slot(gc, h) << 4;
+   _tex_adjust(gc, &w, &h);
+   pt->gc = gc;
+   pt->w = w;
+   pt->h = h;
+   pt->intformat = intformat;
+   pt->format = format;
+   pt->dataformat = GL_UNSIGNED_BYTE;
+   pt->references = 0;
+   glGenTextures(1, &(pt->texture));
+   glBindTexture(GL_TEXTURE_2D, pt->texture);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat);
+   glBindTexture(GL_TEXTURE_2D, gc->shader.cur_tex);
+   return pt;
+}
 
-   im_data = im->image.data;
-   im_w = im->cache_entry.w;
-   im_h = im->cache_entry.h;
-
-   if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
-   else texfmt = GL_RGB8;
-   pixfmt = NATIVE_PIX_FORMAT;
+static int
+_pool_tex_alloc(Evas_GL_Texture_Pool *pt, int w, int h, int *u, int *v, Eina_List **l_after)
+{
+   Eina_List *l;
+   Evas_GL_Texture *tex, *tex2;
+   int nx, d, b;
 
-   glTexImage2D(GL_TEXTURE_2D, 0,
-		texfmt, tw, th, 0,
-		pixfmt, NATIVE_PIX_UNIT, NULL);
-/*   
+   if (pt->allocations)
      {
-	int ttw, tth;
-	int l;
-
-	ttw = tw;
-	tth = th;
-	l = 0;
-	while ((ttw > 1) || (tth > 1))
-	  {
-	     l++;
-	     ttw /= 2;
-	     tth /= 2;
-	     if (ttw < 1) ttw = 1;
-	     if (tth < 1) tth = 1;
-	     glTexImage2D(GL_TEXTURE_2D, l,
-			  texfmt, ttw, tth, 0,
-			  pixfmt, NATIVE_PIX_UNIT, NULL);
-	  }
+        tex = pt->allocations->data;
+        // if firest tex is not at left edge...
+        if (tex->x > (0 + 1))
+          {
+             if ((tex->x - 1) >= w)
+               {
+                  *u = 0;
+                  *v = 0;
+                  *l_after = NULL;
+                  return 1;
+               }
+          }
      }
- */
-   if (gc->ext.sgis_generate_mipmap)
+   EINA_LIST_FOREACH(pt->allocations, l, tex)
      {
-	glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
-	tex->have_mipmaps = 1;
+        b = tex->x + tex->w + 2;
+        if (l->next)
+          {
+             tex2 = l->next->data;
+             nx = tex2->x - 1;
+          }
+        else
+          nx = pt->w - 1;
+        d = nx - b;
+        if (d >= w)
+          {
+             *u = b;
+             *v = 0;
+             *l_after = l;
+             return 1;
+          }
      }
-   glTexSubImage2D(GL_TEXTURE_2D, 0,
-		   0, 0, im_w, im_h,
-		   pixfmt, NATIVE_PIX_UNIT,
-		   im_data);
-   if (im_w < tw)
-     glTexSubImage2D(GL_TEXTURE_2D, 0,
-		     im_w, 0, 1, im_h,
-		     pixfmt, NATIVE_PIX_UNIT,
-		     im_data + im_w - 1);
-   if (im_h < th)
-     glTexSubImage2D(GL_TEXTURE_2D, 0,
-		     0, im_h, im_w, 1,
-		     pixfmt, NATIVE_PIX_UNIT,
-		     im_data + (im_w * (im_h - 1)));
-   if ((im_w < tw) && (im_h < th))
-     glTexSubImage2D(GL_TEXTURE_2D, 0,
-		     im_w, im_h, 1, 1,
-		     pixfmt, NATIVE_PIX_UNIT,
-		     im_data + (im_w * (im_h - 1)) + im_w - 1);
-   return tex;
+   *l_after = NULL;
+   return 0;
 }
 
-void
-evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im, int smooth __UNUSED__)
+static Evas_GL_Texture_Pool *
+_pool_tex_find(Evas_GL_Context *gc, int w, int h, 
+               int intformat, int format, int *u, int *v, 
+               Eina_List **l_after, int atlas_w)
 {
-   DATA32 *im_data;
-   int im_w, im_h;
-   int tw, th;
-   GLenum pixfmt, texfmt, target;
-
-   if (tex->rectangle)
-     {
-	void *data;
-
-	glEnable(GL_TEXTURE_2D);
-	glEnable(GL_TEXTURE_RECTANGLE_NV);
-	glBindTexture(GL_TEXTURE_RECTANGLE_NV, tex->texture);
-
-	data = im->image.data;
-#if 0 // trying the glXAllocateMemoryNV() thing but its abysmally slow
-	tmp = glXAllocateMemoryNV(tex->w * tex->h * sizeof(DATA32),
-				  0.0, 1.0, 1.0);
-	if (tmp)
-	  {
-	     glEnableClientState(GL_WRITE_PIXEL_DATA_RANGE_NV);
-	     glPixelDataRangeNV(GL_WRITE_PIXEL_DATA_RANGE_NV,
-				tex->w * tex->h * sizeof(DATA32),
-				tmp);
-//	     evas_common_copy_pixels_rgba_to_rgba_mmx2(im->image->data, tmp,
-//						       tex->w * tex->h);
-	     memcpy(tmp, im->image.data,
-		    tex->w * tex->h * sizeof(DATA32));
-	     data = tmp;
-	  }
-#endif
-	if (tex->gc->texture) tex->gc->texture->references--;
-	tex->gc->texture = tex;
-	tex->gc->change.texture = 1;
-	tex->references++;
-
-	if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
-	else texfmt = GL_RGB8;
-	pixfmt = NATIVE_PIX_FORMAT;
-
-	glTexSubImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
-			0, 0, tex->w, tex->h,
-			pixfmt, NATIVE_PIX_UNIT,
-			data);
-#if 0 // trying the glXAllocateMemoryNV() thing but its abysmally slow
-	if (tmp)
-	  {
-	     glFlushPixelDataRangeNV(GL_WRITE_PIXEL_DATA_RANGE_NV);
-	     glXFreeMemoryNV(tmp);
-	  }
-#endif
-	return;
-     }
-   tw = tex->w;
-   th = tex->h;
-   tex->changed = 1;
-   tex->have_mipmaps = 0;
-//   if (tex->gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
-   glEnable(GL_TEXTURE_2D);
-   if (tex->rectangle)
+   Evas_GL_Texture_Pool *pt = NULL;
+   Eina_List *l;
+   int th, th2;
+   
+   if ((w > 512) || (h > 512))
      {
-	glEnable(GL_TEXTURE_RECTANGLE_NV);
-	target = GL_TEXTURE_RECTANGLE_NV;
+        pt = _pool_tex_new(gc, w, h, intformat, format);
+        gc->shared->tex.whole = eina_list_prepend(gc->shared->tex.whole, pt);
+        pt->slot = -1;
+        pt->fslot = -1;
+        pt->whole = 1;
+        *u = 0;
+        *v = 0;
+        *l_after = NULL;
+        return pt;
      }
-   else
+   
+   th = _tex_round_slot(gc, h);
+   th2 = _tex_format_index(format);
+   EINA_LIST_FOREACH(gc->shared->tex.atlas[th][th2], l, pt)
      {
-//	glDisable(GL_TEXTURE_RECTANGLE_NV);
-	glEnable(GL_TEXTURE_2D);//
-	target = GL_TEXTURE_2D;
+        if (_pool_tex_alloc(pt, w, h, u, v, l_after))
+          {
+             gc->shared->tex.atlas[th][th2] = 
+               eina_list_remove_list(gc->shared->tex.atlas[th][th2], l);
+             gc->shared->tex.atlas[th][th2] = 
+               eina_list_prepend(gc->shared->tex.atlas[th][th2], pt);
+             return pt;
+          }
      }
+   pt = _pool_tex_new(gc, atlas_w, h, intformat, format);
+   gc->shared->tex.atlas[th][th2] = 
+     eina_list_prepend(gc->shared->tex.atlas[th][th2], pt);
+   pt->slot = th;
+   pt->fslot = th2;
+   *u = 0;
+   *v = 0;
+   *l_after = NULL;
+   return pt;
+}
 
-   glBindTexture(GL_TEXTURE_2D, tex->texture);
-
-   if (tex->gc->texture) tex->gc->texture->references--;
-   tex->gc->texture = tex;
-   tex->gc->change.texture = 1;
-   tex->references++;
+Evas_GL_Texture *
+evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im)
+{
+   Evas_GL_Texture *tex;
+   Eina_List *l_after = NULL;
+   int u = 0, v = 0;
 
-   /*
-   if (!tex->opt)
+   tex = calloc(1, sizeof(Evas_GL_Texture));
+   if (!tex) return NULL;
+   
+   tex->gc = gc;
+   tex->references = 1;
+//   if (im->cache_entry.flags.alpha)
+   tex->pt = _pool_tex_find(gc, im->cache_entry.w + 2,
+                            im->cache_entry.h + 1, rgba_ifmt, rgba_fmt, 
+                            &u, &v, &l_after, 1024);
+//   else
+//     tex->pt = _pool_tex_find(gc, im->cache_entry.w + 3, 
+//                              im->cache_entry.h + 1, rgb_ifmt, rgb_fmt,
+//                              &u, &v, &l_after, 1024);
+   if (!tex->pt)
      {
-	glPixelDataRangeNV(GL_WRITE_PIXEL_DATA_RANGE_NV,
-			 im->image->w * im->image->h * 4,
-			 im->image->data);
-	tex->opt = 1;
+        free(tex);
+        return NULL;
      }
-   */
+   tex->x = u + 1;
+   tex->y = v;
+   tex->w = im->cache_entry.w;
+   tex->h = im->cache_entry.h;
+   if (l_after)
+     tex->pt->allocations = 
+     eina_list_append_relative_list(tex->pt->allocations, tex, l_after);
+   else
+     tex->pt->allocations = 
+     eina_list_prepend(tex->pt->allocations, tex);
+   tex->pt->references++;
+   evas_gl_common_texture_update(tex, im);
+   return tex;
+}
 
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+static Evas_GL_Texture_Pool *
+_pool_tex_render_new(Evas_GL_Context *gc, int w, int h, int intformat, int format)
+{
+   Evas_GL_Texture_Pool *pt;
+   
+   pt = calloc(1, sizeof(Evas_GL_Texture_Pool));
+   if (!pt) return NULL;
+   h = _tex_round_slot(gc, h) << 4;
+   _tex_adjust(gc, &w, &h);
+   pt->gc = gc;
+   pt->w = w;
+   pt->h = h;
+   pt->intformat = intformat;
+   pt->format = format;
+   pt->dataformat = GL_UNSIGNED_BYTE;
+   pt->references = 0;
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+# ifndef GL_FRAMEBUFFER
+#  define GL_FRAMEBUFFER GL_FRAMEBUFFER_OES
+# endif
+# ifndef GL_COLOR_ATTACHMENT0
+#  define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_OES
+# endif
+#else
+# ifndef GL_FRAMEBUFFER
+#  define GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT
+# endif
+# ifndef GL_COLOR_ATTACHMENT0
+#  define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT
+# endif
+#endif  
+   glGenTextures(1, &(pt->texture));
+   glBindTexture(GL_TEXTURE_2D, pt->texture);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-   tex->smooth = 0;
-
-   im_data = im->image.data;
-   im_w = im->cache_entry.w;
-   im_h = im->cache_entry.h;
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat);
+   
+   glsym_glGenFramebuffers(1, &(pt->fb));
+   glsym_glBindFramebuffer(GL_FRAMEBUFFER, pt->fb);
+   glsym_glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, pt->texture, 0);
+   glsym_glBindFramebuffer(GL_FRAMEBUFFER, 0);
+   
+   glBindTexture(GL_TEXTURE_2D, gc->shader.cur_tex);
+   return pt;
+}
 
-   if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
-   else texfmt = GL_RGB8;
-   pixfmt = NATIVE_PIX_FORMAT;
+Evas_GL_Texture *
+evas_gl_common_texture_render_new(Evas_GL_Context *gc, int w, int h, int alpha)
+{
+   Evas_GL_Texture *tex;
+   Eina_List *l_after = NULL;
+   int u = 0, v = 0;
 
-   if (tex->gc->ext.sgis_generate_mipmap)
+   tex = calloc(1, sizeof(Evas_GL_Texture));
+   if (!tex) return NULL;
+   
+   tex->gc = gc;
+   tex->references = 1;
+   tex->pt = _pool_tex_render_new(gc, w, h, rgba_ifmt, rgba_fmt);
+   if (!tex->pt)
      {
-	glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
-	tex->have_mipmaps = 1;
+        free(tex);
+        return NULL;
      }
-   glTexSubImage2D(GL_TEXTURE_2D, 0,
-		   0, 0, im_w, im_h,
-		   pixfmt, NATIVE_PIX_UNIT,
-		   im_data);
-#if 1 // this is sloooow... well slower than just the above...
-   if (im_w < tw)
-     glTexSubImage2D(GL_TEXTURE_2D, 0,
-		     im_w, 0, 1, im_h,
-		     pixfmt, NATIVE_PIX_UNIT,
-		     im_data + im_w - 1);
-   if (im_h < th)
-     glTexSubImage2D(GL_TEXTURE_2D, 0,
-		     0, im_h, im_w, 1,
-		     pixfmt, NATIVE_PIX_UNIT,
-		     im_data + (im_w * (im_h - 1)));
-   if ((im_w < tw) && (im_h < th))
-     glTexSubImage2D(GL_TEXTURE_2D, 0,
-		     im_w, im_h, 1, 1,
-		     pixfmt, NATIVE_PIX_UNIT,
-		     im_data + (im_w * (im_h - 1)) + im_w - 1);
-#endif
+   tex->x = 0;
+   tex->y = 0;
+   tex->w = w;
+   tex->h = h;
+   tex->pt->references++;
+   return tex;
 }
 
 void
-evas_gl_common_texture_free(Evas_GL_Texture *tex)
+evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im)
 {
-   if (tex->references > 0)
-     {
-	/* FIXME: could be in more gc's */
-     }
-   if (tex->gc->texture == tex)
-     {
-	tex->gc->texture = NULL;
-	tex->gc->change.texture = 1;
-     }
-   glDeleteTextures(1, &tex->texture);
-   if (tex->texture2) glDeleteTextures(1, &tex->texture2);
-   if (tex->texture3) glDeleteTextures(1, &tex->texture3);
-/*   
-   if (tex->fshad)
-     {
-	glDeleteObjectARB(tex->fshad);
-     }
-   if (tex->prog)
-     {
-	glDeleteObjectARB(tex->prog);
-     }
- */
-   free(tex);
+   glBindTexture(GL_TEXTURE_2D, tex->pt->texture);
+#ifdef GL_UNPACK_ROW_LENGTH   
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+#endif   
+   glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
+   //  +-+
+   //  +-+
+   // 
+   _tex_sub_2d(tex->x, tex->y, 
+               im->cache_entry.w, im->cache_entry.h,
+               tex->pt->format, tex->pt->dataformat,
+               im->image.data);
+   // |xxx
+   // |xxx
+   // 
+   _tex_sub_2d(tex->x - 1, tex->y, 
+               1, im->cache_entry.h,
+               tex->pt->format, tex->pt->dataformat,
+               im->image.data);
+   //  xxx|
+   //  xxx|
+   // 
+   _tex_sub_2d(tex->x + im->cache_entry.w, tex->y, 
+               1, im->cache_entry.h,
+               tex->pt->format, tex->pt->dataformat,
+               im->image.data + (im->cache_entry.w - 1));
+   //  xxx
+   //  xxx
+   //  ---
+   _tex_sub_2d(tex->x, tex->y + im->cache_entry.h,
+               im->cache_entry.w, 1,
+               tex->pt->format, tex->pt->dataformat,
+               im->image.data + ((im->cache_entry.h - 1) * im->cache_entry.w));
+   //  xxx
+   //  xxx
+   // o
+   _tex_sub_2d(tex->x - 1, tex->y + im->cache_entry.h,
+               1, 1,
+               tex->pt->format, tex->pt->dataformat,
+               im->image.data + ((im->cache_entry.h - 1) * im->cache_entry.w));
+   //  xxx
+   //  xxx
+   //     o
+   _tex_sub_2d(tex->x + im->cache_entry.w, tex->y + im->cache_entry.h,
+               1, 1,
+               tex->pt->format, tex->pt->dataformat,
+               im->image.data + ((im->cache_entry.h - 1) * im->cache_entry.w) + (im->cache_entry.w - 1));
+   if (tex->pt->texture != tex->gc->shader.cur_tex)
+     glBindTexture(GL_TEXTURE_2D, tex->gc->shader.cur_tex);
 }
 
-void
-evas_gl_common_texture_mipmaps_build(Evas_GL_Texture *tex, RGBA_Image *im, int smooth)
+static void
+pt_unref(Evas_GL_Texture_Pool *pt)
 {
-   DATA32 *im_data;
-   int tw, th;
-   int im_w, im_h, w, h;
-   GLenum pixfmt, texfmt;
-   int level;
-   RGBA_Image *im1 = NULL, *im2 = NULL;
-#ifdef BUILD_MMX
-   int mmx, sse, sse2;
-#endif
-
-   if (!smooth) return;
-   if (tex->rectangle) return;
-#ifdef BUILD_MMX
-   evas_common_cpu_can_do(&mmx, &sse, &sse2);
-#endif
-   tw = tex->w;
-   th = tex->h;
-   w = im->cache_entry.w;
-   h = im->cache_entry.h;
-   level = 0;
-   im1 = im;
-
-   if (tex->gc->texture != tex)
-     {
-	if (tex->gc->texture) tex->gc->texture->references--;
-	tex->gc->texture = tex;
-	tex->gc->change.texture = 1;
-	if (tex) tex->references++;
-     }
-
-   if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
-   else texfmt = GL_RGB8;
-   pixfmt = NATIVE_PIX_FORMAT;
-
-   if (tex->gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
-   glEnable(GL_TEXTURE_2D);
-   glBindTexture(GL_TEXTURE_2D, tex->texture);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
-   while ((w > 1) || (h > 1))
-     {
-	int pw, ph;
-
-	pw = w;
-	ph = h;
-	w /= 2;
-	h /= 2;
-	if (w < 1) w = 1;
-	if (h < 1) h = 1;
-	tw /= 2;
-	th /= 2;
-
-	level++;
-	im2 = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
-        im2 = (RGBA_Image *) evas_cache_image_size_set(&im2->cache_entry, w, h);
-#ifdef BUILD_MMX
-	if (mmx)
-	  {
-	     evas_common_scale_rgba_mipmap_down_2x2_mmx(im1->image.data,
-							im2->image.data,
-							pw, ph);
-	  }
-	else
-#endif
-	  {
-	     if (im->cache_entry.flags.alpha)
-	       evas_common_scale_rgba_mipmap_down_2x2_c(im1->image.data,
-							im2->image.data,
-							pw, ph);
-	     else
-	       evas_common_scale_rgb_mipmap_down_2x2_c(im1->image.data,
-						       im2->image.data,
-						       pw, ph);
-	  }
-	if (im1 != im) evas_cache_image_drop(&im1->cache_entry);
-	im1 = NULL;
+   pt->references--;
+   if (pt->references > 0) return;
+   if (pt->whole)
+     pt->gc->shared->tex.whole = eina_list_remove(pt->gc->shared->tex.whole, pt);
+   else
+     pt->gc->shared->tex.atlas [pt->slot][pt->fslot] =
+     eina_list_remove(pt->gc->shared->tex.atlas[pt->slot][pt->fslot], pt);
+   glDeleteTextures(1, &(pt->texture));
+   if (pt->fb) glsym_glDeleteFramebuffers(1, &(pt->fb));
+   free(pt);
+}
 
-	im_data = im2->image.data;
-	im_w = w;
-	im_h = h;
-	glTexSubImage2D(GL_TEXTURE_2D, level,
-			0, 0, im_w, im_h,
-			pixfmt, NATIVE_PIX_UNIT,
-			im_data);
-	if (im_w < tw)
-	  glTexSubImage2D(GL_TEXTURE_2D, level,
-			  im_w, 0, 1, im_h,
-			  pixfmt, NATIVE_PIX_UNIT,
-			  im_data + im_w - 1);
-	if (im_h < th)
-	  glTexSubImage2D(GL_TEXTURE_2D, level,
-			  0, im_h, im_w, 1,
-			  pixfmt, NATIVE_PIX_UNIT,
-			  im_data + (im_w * (im_h - 1)));
-	if ((im_w < tw) && (im_h < th))
-	  glTexSubImage2D(GL_TEXTURE_2D, level,
-			  im_w, im_h, 1, 1,
-			  pixfmt, NATIVE_PIX_UNIT,
-			  im_data + (im_w * (im_h - 1)) + im_w - 1);
-	im1 = im2;
-	im2 = NULL;
-     }
-   if ((im1 != im) && (im1)) evas_cache_image_drop(&im1->cache_entry);
-   tex->have_mipmaps = 1;
-#ifdef BUILD_MMX
-   if (mmx) evas_common_cpu_end_opt();
-#endif
+void
+evas_gl_common_texture_free(Evas_GL_Texture *tex)
+{
+   if (!tex) return;
+   tex->references--;
+   if (tex->references > 0) return;
+   tex->pt->allocations = eina_list_remove(tex->pt->allocations, tex);
+   pt_unref(tex->pt);
+   if (tex->ptu) pt_unref(tex->ptu);
+   if (tex->ptv) pt_unref(tex->ptv);
+   free(tex);
 }
 
 Evas_GL_Texture *
-evas_gl_common_ycbcr601pl_texture_new(Evas_GL_Context *gc, unsigned char **rows, int w, int h, int smooth)
+evas_gl_common_texture_alpha_new(Evas_GL_Context *gc, DATA8 *pixels, 
+                                 int w, int h, int fh)
 {
    Evas_GL_Texture *tex;
-   int tw, th;
-   GLenum texfmt;
-  
-// on an nv 6600gt this is fast - but on a 5500fx its DEAD SLOW!!!!!   
-//   if (!gc->ext.arb_texture_non_power_of_two) return NULL;
-   
+   Eina_List *l_after = NULL;
+   int u = 0, v = 0;
+   int tw = 4096;
+
    tex = calloc(1, sizeof(Evas_GL_Texture));
    if (!tex) return NULL;
    
-   tw = w;
-   th = h;
    tex->gc = gc;
-   tex->w = tw;
-   tex->h = th;
-   tex->tw = w;
-   tex->th = h;
-   tex->references = 0;
-   tex->smooth = 0;
-   tex->changed = 1;
-
-   tex->prog = gc->yuv422p.prog;
-   
-   glEnable(GL_TEXTURE_2D);
-   texfmt = GL_LUMINANCE;
-
-   glUseProgramObjectARB(tex->prog);
-   
-   glGenTextures(1, &(tex->texture));
-   glBindTexture(GL_TEXTURE_2D, tex->texture);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-   if (smooth)
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-     }
-   else
+   tex->references = 1;
+   if (tw > gc->shared->info.max_texture_size)
+     tw = gc->shared->info.max_texture_size;
+   tex->pt = _pool_tex_find(gc, w + 3, fh, alpha_ifmt, alpha_fmt, &u, &v, 
+                            &l_after, tw);
+   if (!tex->pt)
      {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-     }
-   glTexImage2D(GL_TEXTURE_2D, 0, texfmt, tex->w, tex->h, 0,
-		texfmt, GL_UNSIGNED_BYTE, NULL);
-   if (tex->h >= 2)
-     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[1] - rows[0]);
-   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w, tex->h,
-		   texfmt, GL_UNSIGNED_BYTE, rows[0]);
-//   for (y = 0; y < tex->h; y++)
-//     glTexSubImage2D(GL_TEXTURE_2D, 0,
-//		     0, y, tex->w, 1,
-//		     texfmt, GL_UNSIGNED_BYTE, rows[y]);
-   
-   glGenTextures(1, &(tex->texture2));
-   glBindTexture(GL_TEXTURE_2D, tex->texture2);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-   if (smooth)
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        free(tex);
+        return NULL;
      }
+   tex->x = u + 1;
+   tex->y = v;
+   tex->w = w;
+   tex->h = h;
+   if (l_after)
+     tex->pt->allocations = 
+     eina_list_append_relative_list(tex->pt->allocations, tex, l_after);
    else
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-     }
-   glTexImage2D(GL_TEXTURE_2D, 0, texfmt, tex->w / 2, tex->h / 2, 0,
-		texfmt, GL_UNSIGNED_BYTE, NULL);
-   if (tex->h >= 4)
-     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + 1] - rows[tex->h]);
-   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
-		   texfmt, GL_UNSIGNED_BYTE, rows[tex->h]);
-//   for (y = 0; y < (tex->h / 2); y++)
-//     glTexSubImage2D(GL_TEXTURE_2D, 0,
-//		     0, y, tex->w / 2, 1,
-//		     texfmt, GL_UNSIGNED_BYTE, rows[tex->h + y]);
-   
-   glGenTextures(1, &(tex->texture3));
-   glBindTexture(GL_TEXTURE_2D, tex->texture3);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-   if (smooth)
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-     }
-   else
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-     }
-   glTexImage2D(GL_TEXTURE_2D, 0,
-		texfmt, tex->w / 2, tex->h / 2, 0,
-		texfmt, GL_UNSIGNED_BYTE, NULL);
-   if (tex->h >= 4)
-     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + (tex->h / 2) + 1] - rows[tex->h + (tex->h / 2)]);
-   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
-		   texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2)]);
-//   for (y = 0; y < (tex->h / 2); y++)
-//     glTexSubImage2D(GL_TEXTURE_2D, 0,
-//		     0, y, tex->w / 2, 1,
-//		     texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2) + y]);
-   
+     tex->pt->allocations = eina_list_prepend(tex->pt->allocations, tex);
+   tex->pt->references++;
+   evas_gl_common_texture_alpha_update(tex, pixels, w, h, fh);
+   return tex;
+}
+
+void
+evas_gl_common_texture_alpha_update(Evas_GL_Texture *tex, DATA8 *pixels, 
+                                    int w, int h, int fh)
+{
+   glBindTexture(GL_TEXTURE_2D, tex->pt->texture);
+#ifdef GL_UNPACK_ROW_LENGTH   
    glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
-   glUseProgramObjectARB(0);
-   
-   if (gc->texture) gc->texture->references--;
-   gc->texture = tex;
-   gc->change.texture = 1;
-   tex->references++;
+#endif   
+   glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
+   _tex_sub_2d(tex->x, tex->y, w, h, tex->pt->format, tex->pt->dataformat, 
+               pixels);
+   if (tex->pt->texture != tex->gc->shader.cur_tex)
+     glBindTexture(GL_TEXTURE_2D, tex->gc->shader.cur_tex);
+}
+
+Evas_GL_Texture *
+evas_gl_common_texture_yuv_new(Evas_GL_Context *gc, DATA8 **rows, int w, int h)
+{
+   Evas_GL_Texture *tex;
+   Eina_List *l_after = NULL;
+   int u = 0, v = 0;
 
+   tex = calloc(1, sizeof(Evas_GL_Texture));
+   if (!tex) return NULL;
+   
+   tex->gc = gc;
+   tex->references = 1;
+   tex->pt = _pool_tex_new(gc, w + 1, h  + 1, lum_ifmt, lum_fmt);
+   gc->shared->tex.whole = eina_list_prepend(gc->shared->tex.whole, tex->pt);
+   tex->pt->slot = -1;
+   tex->pt->fslot = -1;
+   tex->pt->whole = 1;
+   tex->ptu = _pool_tex_new(gc, (w / 2) + 1, (h / 2)  + 1, lum_ifmt, lum_fmt);
+   gc->shared->tex.whole = eina_list_prepend(gc->shared->tex.whole, tex->ptu);
+   tex->ptu->slot = -1;
+   tex->ptu->fslot = -1;
+   tex->ptu->whole = 1;
+   tex->ptv = _pool_tex_new(gc, (w / 2) + 1, (h / 2)  + 1, lum_ifmt, lum_fmt);
+   gc->shared->tex.whole = eina_list_prepend(gc->shared->tex.whole, tex->ptv);
+   tex->ptv->slot = -1;
+   tex->ptv->fslot = -1;
+   tex->ptv->whole = 1;
+   tex->x = 0;
+   tex->y = 0;
+   tex->w = w;
+   tex->h = h;
+   tex->pt->allocations = eina_list_prepend(tex->pt->allocations, tex);
+   tex->ptu->allocations = eina_list_prepend(tex->ptu->allocations, tex);
+   tex->ptv->allocations = eina_list_prepend(tex->ptv->allocations, tex);
+   tex->pt->references++;
+   tex->ptu->references++;
+   tex->ptv->references++;
+   evas_gl_common_texture_yuv_update(tex, rows, w, h);
    return tex;
 }
 
 void
-evas_gl_common_ycbcr601pl_texture_update(Evas_GL_Texture *tex, unsigned char **rows, int w __UNUSED__, int h __UNUSED__, int smooth)
+evas_gl_common_texture_yuv_update(Evas_GL_Texture *tex, DATA8 **rows, int w, int h)
 {
-   int texfmt;
-
-   /* FIXME: should use subimage */
-   glEnable(GL_TEXTURE_2D);
-   texfmt = GL_LUMINANCE;
+   int y;
    
-   glBindTexture(GL_TEXTURE_2D, tex->texture);
-   if (smooth)
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-     }
+   // FIXME: works on lowest size 4 pixel high buffers. must also be multiple of 2
+#ifdef GL_UNPACK_ROW_LENGTH
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[1] - rows[0]);
+   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+   glBindTexture(GL_TEXTURE_2D, tex->pt->texture);
+   _tex_sub_2d(0, 0, w, h, tex->pt->format, tex->pt->dataformat, rows[0]);
+   glBindTexture(GL_TEXTURE_2D, tex->ptu->texture);
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[h + 1] - rows[h]);
+   _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptu->format, tex->ptu->dataformat, rows[h]);
+   glBindTexture(GL_TEXTURE_2D, tex->ptv->texture);
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[h + (h / 2) + 1] - rows[h + (h / 2)]);
+   _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptv->format, tex->ptv->dataformat, rows[h + (h / 2)]);
+#else
+   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+   glBindTexture(GL_TEXTURE_2D, tex->pt->texture);
+   if ((rows[1] - rows[0]) == w)
+     _tex_sub_2d(0, 0, w, h, tex->pt->format, tex->pt->dataformat, rows[0]);
    else
      {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-     }
-   if (tex->h >= 2)
-     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[1] - rows[0]);
-   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w, tex->h,
-		   texfmt, GL_UNSIGNED_BYTE, rows[0]);
-//   for (y = 0; y < tex->h; y++)
-//     glTexSubImage2D(GL_TEXTURE_2D, 0,
-//		     0, y, tex->w, 1,
-//		     texfmt, GL_UNSIGNED_BYTE, rows[y]);
-   
-   glBindTexture(GL_TEXTURE_2D, tex->texture2);
-   if (smooth)
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        for (y = 0; y < h; y++)
+          _tex_sub_2d(0, y, w, 1, tex->pt->format, tex->pt->dataformat, rows[y]);
      }
+
+   glBindTexture(GL_TEXTURE_2D, tex->ptu->texture);
+   if ((rows[h + 1] - rows[h]) == (w / 2))
+     _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptu->format, tex->ptu->dataformat, rows[h]);
    else
      {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        for (y = 0; y < (h / 2); y++)
+          _tex_sub_2d(0, y, w / 2, 1, tex->ptu->format, tex->ptu->dataformat, rows[h + y]);
      }
-   if (tex->h >= 4)
-     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + 1] - rows[tex->h]);
-   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
-		   texfmt, GL_UNSIGNED_BYTE, rows[tex->h]);
-//   for (y = 0; y < (tex->h / 2); y++)
-//     glTexSubImage2D(GL_TEXTURE_2D, 0,
-//		     0, y, tex->w / 2, 1,
-//		     texfmt, GL_UNSIGNED_BYTE, rows[tex->h + y]);
    
-   glBindTexture(GL_TEXTURE_2D, tex->texture3);
-   if (smooth)
-     {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-     }
+   glBindTexture(GL_TEXTURE_2D, tex->ptv->texture);
+   if ((rows[h + (h / 2) + 1] - rows[h + (h / 2)]) == (w / 2))
+     _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptv->format, tex->ptv->dataformat, rows[h + (h / 2)]);
    else
      {
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        for (y = 0; y < (h / 2); y++)
+          _tex_sub_2d(0, y, w / 2, 1, tex->ptv->format, tex->ptv->dataformat, rows[h + (h / 2) + y]);
      }
-   if (tex->h >= 4)
-     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + (tex->h / 2) + 1] - rows[tex->h + (tex->h / 2)]);
-   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
-		   texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2)]);
-//   for (y = 0; y < (tex->h / 2); y++)
-//     glTexSubImage2D(GL_TEXTURE_2D, 0,
-//		     0, y, tex->w / 2, 1,
-//		     texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2) + y]);
-   glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
-
-   if (tex->gc->texture) tex->gc->texture->references--;
-   tex->gc->texture = tex;
-   tex->gc->change.texture = 1;
-   tex->references++;
+#endif   
+   if (tex->pt->texture != tex->gc->shader.cur_tex)
+     glBindTexture(GL_TEXTURE_2D, tex->gc->shader.cur_tex);
 }
diff --git a/src/modules/engines/gl_common/shader/compile-s3c6410.sh b/src/modules/engines/gl_common/shader/compile-s3c6410.sh
new file mode 100755
index 0000000..0de88d4
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/compile-s3c6410.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+ORIONEXE=/home/raster/Data/orion/orion.exe
+OPTS="-O --nolodcalc -lp"
+
+function compile()
+{
+  F=$1
+
+  make-c-str.sh $F"_frag.shd" > $F"_frag.h"
+  if test -f $F"_frag_s3c6410.asm"; then
+    wine $ORIONEXE -a $OPTS -f $F"_frag_s3c6410.asm"
+    make-c-bin.sh $F"_frag_s3c6410.bin" > $F"_frag_bin_s3c6410.h"
+    rm -f   $F"_frag_s3c6410.bin"   $F"_frag_s3c6410.h"
+  else
+    wine $ORIONEXE $OPTS -f $F"_frag.shd"
+    make-c-bin.sh $F"_frag.shd.bin" > $F"_frag_bin_s3c6410.h"
+    rm -f   $F"_frag.shd.bin"   $F"_frag.shd.asm"   $F"_frag.shd.h"
+  fi
+
+  make-c-str.sh $F"_vert.shd" > $F"_vert.h"
+  if test -f $F"_vert_s3c6410.asm"; then
+    wine $ORIONEXE -a $OPTS -v $F"_vert_s3c6410.asm"
+    make-c-bin.sh $F"_vert_s3c6410.bin" > $F"_vert_bin_s3c6410.h"
+    rm -f   $F"_vert_s3c6410.bin"   $F"_vert_s3c6410.h"
+  else
+    wine $ORIONEXE $OPTS -v $F"_vert.shd"
+    make-c-bin.sh $F"_vert.shd.bin" > $F"_vert_bin_s3c6410.h"
+    rm -f   $F"_vert.shd.bin"   $F"_vert.shd.asm"   $F"_vert.shd.h"
+  fi
+}
+
+compile rect
+compile img
+compile font
+compile yuv
+compile tex
diff --git a/src/modules/engines/gl_common/shader/compile-sgx.sh b/src/modules/engines/gl_common/shader/compile-sgx.sh
new file mode 100755
index 0000000..b14d69c
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/compile-sgx.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+function compile()
+{
+  F=$1
+
+  make-c-str.sh $F"_frag.shd" > $F"_frag.h"
+  make-c-str.sh $F"_vert.shd" > $F"_vert.h"
+}
+
+compile rect
+compile img
+compile font
+compile yuv
+compile tex
diff --git a/src/modules/engines/gl_common/shader/font_frag.h b/src/modules/engines/gl_common/shader/font_frag.h
new file mode 100644
index 0000000..afe2222
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_frag.h
@@ -0,0 +1,10 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"uniform sampler2D tex;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_FragColor = texture2D(tex, tex_c.xy).aaaa * col;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/font_frag.shd b/src/modules/engines/gl_common/shader/font_frag.shd
new file mode 100644
index 0000000..cae4293
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_frag.shd
@@ -0,0 +1,10 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+uniform sampler2D tex;
+varying vec4 col;
+varying vec2 tex_c;
+void main()
+{
+   gl_FragColor = texture2D(tex, tex_c.xy).aaaa * col;
+}
diff --git a/src/modules/engines/gl_common/shader/font_frag_bin_s3c6410.h b/src/modules/engines/gl_common/shader/font_frag_bin_s3c6410.h
new file mode 100644
index 0000000..daca692
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_frag_bin_s3c6410.h
@@ -0,0 +1,9 @@
+0x20205350, 0xffff0008, 0x00000048, 0x01020000, 0x00000003, 0x00000000, 
+0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000000, 
+0x00000000, 0x0000e407, 0x307820e4, 0x00000000, 0x01000000, 0x0100e400, 
+0x237a10ff, 0x00000000, 0x00000000, 0x00000000, 0x1e000000, 0x00000000, 
+0x00000004, 0x00000003, 0x00000009, 0x00000000, 0x00000004, 0x00000008, 
+0x00000005, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 
+0x0000000f, 0x00030005, 0x00000000, 0x00786574, 0x006c6f63, 0x5f786574, 
+0x00000063, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/font_frag_s3c6410.asm b/src/modules/engines/gl_common/shader/font_frag_s3c6410.asm
new file mode 100644
index 0000000..4ed116f
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_frag_s3c6410.asm
@@ -0,0 +1,26 @@
+#-------------------------------------------------
+# ORION - OpenGL ES 2.0 Shading Language Compiler
+# SAMSUNG INDIA SOFTWARE OPERATIONS PVT. LTD.
+# Compiler Version      : v04.00.09
+# Release Date          : 19.01.2009
+# FIMG VERSION      : FIMGv1.5
+# Optimizer Options :  -O --nolodcalc
+#-------------------------------------------------
+
+# hand optimised - removed useless ops
+
+ps_3_0
+
+fimg_version    0x01020000
+
+dcl_s2_tex      s0
+dcl_f4_col      v1.x
+dcl_f2_tex_c    v0.x
+
+label start
+label main_
+texld r0.xyzw, v0.xyzw, s0      # tex=s0
+mul_sat oColor.xyzw, r0.wwww, v1.xyzw   # gl_FragColor=oColor.xyzw, col=v1.xyzw
+label main_end
+ret
+# 4 instructions, 4 C regs, 1 R regs
diff --git a/src/modules/engines/gl_common/shader/font_vert.h b/src/modules/engines/gl_common/shader/font_vert.h
new file mode 100644
index 0000000..ef035c8
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_vert.h
@@ -0,0 +1,15 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"attribute vec4 vertex;\n"
+"attribute vec4 color;\n"
+"attribute vec2 tex_coord;\n"
+"uniform mat4 mvp;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   col = color;\n"
+"   tex_c = tex_coord;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/font_vert.shd b/src/modules/engines/gl_common/shader/font_vert.shd
new file mode 100644
index 0000000..cf98501
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_vert.shd
@@ -0,0 +1,15 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+attribute vec4 vertex;
+attribute vec4 color;
+attribute vec2 tex_coord;
+uniform mat4 mvp;
+varying vec4 col;
+varying vec2 tex_c;
+void main()
+{
+   gl_Position = mvp * vertex;
+   col = color;
+   tex_c = tex_coord;
+}
diff --git a/src/modules/engines/gl_common/shader/font_vert_bin_s3c6410.h b/src/modules/engines/gl_common/shader/font_vert_bin_s3c6410.h
new file mode 100644
index 0000000..1402448
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/font_vert_bin_s3c6410.h
@@ -0,0 +1,20 @@
+0x20205356, 0xffff0008, 0x00000048, 0x01020000, 0x00000007, 0x00000006, 
+0x00000000, 0x00000000, 0x00000003, 0x00000003, 0x00000001, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000031, 0x00000000, 
+0x00000000, 0x02020000, 0x237820e4, 0x00000000, 0x00e40100, 0x02035500, 
+0x2ef820e4, 0x00000000, 0x00e40100, 0x0204aa00, 0x2ef820e4, 0x00000000, 
+0x00e40100, 0x0205ff00, 0x2ef800e4, 0x00000000, 0x00000000, 0x00010000, 
+0x20f801e4, 0x00000000, 0x00000000, 0x00020000, 0x20980254, 0x00000000, 
+0x00000000, 0x00000000, 0x1e000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000c, 0x00000006, 
+0x00000009, 0x00000000, 0x00000000, 0x00000013, 0x00000005, 0x00000009, 
+0x00000000, 0x00000004, 0x00000019, 0x00000009, 0x00000003, 0x00000000, 
+0x00000008, 0x00000000, 0x0000000b, 0x00000009, 0x00010004, 0x00000000, 
+0x00000027, 0x00000003, 0x00000009, 0x00010004, 0x00000004, 0x0000002b, 
+0x00000005, 0x00000003, 0x00010004, 0x00000008, 0x00000023, 0x00000003, 
+0x0000000e, 0x00020001, 0x00000008, 0x505f6c67, 0x7469736f, 0x006e6f69, 
+0x74726576, 0x63007865, 0x726f6c6f, 0x78657400, 0x6f6f635f, 0x6d006472, 
+0x63007076, 0x74006c6f, 0x635f7865, 0x00000000, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/img_frag.h b/src/modules/engines/gl_common/shader/img_frag.h
new file mode 100644
index 0000000..e665c30
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_frag.h
@@ -0,0 +1,10 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"uniform sampler2D tex;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_FragColor = texture2D(tex, tex_c.xy).bgra * col;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/img_frag.shd b/src/modules/engines/gl_common/shader/img_frag.shd
new file mode 100644
index 0000000..ce3b517
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_frag.shd
@@ -0,0 +1,10 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+uniform sampler2D tex;
+varying vec4 col;
+varying vec2 tex_c;
+void main()
+{
+   gl_FragColor = texture2D(tex, tex_c.xy).bgra * col;
+}
diff --git a/src/modules/engines/gl_common/shader/img_frag_bin_s3c6410.h b/src/modules/engines/gl_common/shader/img_frag_bin_s3c6410.h
new file mode 100644
index 0000000..3518e8d
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_frag_bin_s3c6410.h
@@ -0,0 +1,9 @@
+0x20205350, 0xffff0008, 0x00000048, 0x01020000, 0x00000003, 0x00000000, 
+0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000000, 
+0x00000000, 0x0000e407, 0x307820e4, 0x00000000, 0x01000000, 0x0100e400, 
+0x237a10c6, 0x00000000, 0x00000000, 0x00000000, 0x1e000000, 0x00000000, 
+0x00000004, 0x00000003, 0x00000009, 0x00000000, 0x00000004, 0x00000008, 
+0x00000005, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 
+0x0000000f, 0x00030005, 0x00000000, 0x00786574, 0x006c6f63, 0x5f786574, 
+0x00000063, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/img_frag_s3c6410.asm b/src/modules/engines/gl_common/shader/img_frag_s3c6410.asm
new file mode 100644
index 0000000..3716bce
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_frag_s3c6410.asm
@@ -0,0 +1,26 @@
+
+#-------------------------------------------------
+# ORION - OpenGL ES 2.0 Shading Language Compiler
+# SAMSUNG INDIA SOFTWARE OPERATIONS PVT. LTD.
+# Compiler Version	: v04.00.09
+# Release Date		: 19.01.2009
+# FIMG VERSION      : FIMGv1.5
+# Optimizer Options :  -O --nolodcalc
+#-------------------------------------------------
+
+# hand optimised - removed useless ops
+
+ps_3_0
+
+fimg_version	0x01020000
+
+dcl_s2_tex	s0
+dcl_f4_col	v1.x
+dcl_f2_tex_c	v0.x
+
+label start
+label main_
+texld r0.xyzw, v0.xyzw, s0	# tex=s0
+mul_sat oColor.xyzw, r0.zyxw, v1.xyzw	# gl_FragColor=oColor.xyzw, col=v1.xyzw
+label main_end
+ret
diff --git a/src/modules/engines/gl_common/shader/img_vert.h b/src/modules/engines/gl_common/shader/img_vert.h
new file mode 100644
index 0000000..ef035c8
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_vert.h
@@ -0,0 +1,15 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"attribute vec4 vertex;\n"
+"attribute vec4 color;\n"
+"attribute vec2 tex_coord;\n"
+"uniform mat4 mvp;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   col = color;\n"
+"   tex_c = tex_coord;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/img_vert.shd b/src/modules/engines/gl_common/shader/img_vert.shd
new file mode 100644
index 0000000..cf98501
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_vert.shd
@@ -0,0 +1,15 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+attribute vec4 vertex;
+attribute vec4 color;
+attribute vec2 tex_coord;
+uniform mat4 mvp;
+varying vec4 col;
+varying vec2 tex_c;
+void main()
+{
+   gl_Position = mvp * vertex;
+   col = color;
+   tex_c = tex_coord;
+}
diff --git a/src/modules/engines/gl_common/shader/img_vert_bin_s3c6410.h b/src/modules/engines/gl_common/shader/img_vert_bin_s3c6410.h
new file mode 100644
index 0000000..1402448
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/img_vert_bin_s3c6410.h
@@ -0,0 +1,20 @@
+0x20205356, 0xffff0008, 0x00000048, 0x01020000, 0x00000007, 0x00000006, 
+0x00000000, 0x00000000, 0x00000003, 0x00000003, 0x00000001, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000031, 0x00000000, 
+0x00000000, 0x02020000, 0x237820e4, 0x00000000, 0x00e40100, 0x02035500, 
+0x2ef820e4, 0x00000000, 0x00e40100, 0x0204aa00, 0x2ef820e4, 0x00000000, 
+0x00e40100, 0x0205ff00, 0x2ef800e4, 0x00000000, 0x00000000, 0x00010000, 
+0x20f801e4, 0x00000000, 0x00000000, 0x00020000, 0x20980254, 0x00000000, 
+0x00000000, 0x00000000, 0x1e000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000c, 0x00000006, 
+0x00000009, 0x00000000, 0x00000000, 0x00000013, 0x00000005, 0x00000009, 
+0x00000000, 0x00000004, 0x00000019, 0x00000009, 0x00000003, 0x00000000, 
+0x00000008, 0x00000000, 0x0000000b, 0x00000009, 0x00010004, 0x00000000, 
+0x00000027, 0x00000003, 0x00000009, 0x00010004, 0x00000004, 0x0000002b, 
+0x00000005, 0x00000003, 0x00010004, 0x00000008, 0x00000023, 0x00000003, 
+0x0000000e, 0x00020001, 0x00000008, 0x505f6c67, 0x7469736f, 0x006e6f69, 
+0x74726576, 0x63007865, 0x726f6c6f, 0x78657400, 0x6f6f635f, 0x6d006472, 
+0x63007076, 0x74006c6f, 0x635f7865, 0x00000000, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/make-c-bin.sh b/src/modules/engines/gl_common/shader/make-c-bin.sh
new file mode 100755
index 0000000..2902df6
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/make-c-bin.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+od --width=4 -t x4 -v $1 | \
+awk '{ if (NF > 1) printf("0x%s, ", $2); L = L + 1; if (L > 5) { L = 0; printf("\n");}}'
diff --git a/src/modules/engines/gl_common/shader/make-c-str.sh b/src/modules/engines/gl_common/shader/make-c-str.sh
new file mode 100755
index 0000000..fe7e80a
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/make-c-str.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+awk '{printf("\"%s\\n\"\n", $0);}' $1
diff --git a/src/modules/engines/gl_common/shader/rect_frag.h b/src/modules/engines/gl_common/shader/rect_frag.h
new file mode 100644
index 0000000..a879550
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_frag.h
@@ -0,0 +1,9 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"uniform sampler2D tex;\n"
+"varying vec4 col;\n"
+"void main()\n"
+"{\n"
+"   gl_FragColor = col;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/rect_frag.shd b/src/modules/engines/gl_common/shader/rect_frag.shd
new file mode 100644
index 0000000..bb9221b
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_frag.shd
@@ -0,0 +1,9 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+uniform sampler2D tex;
+varying vec4 col;
+void main()
+{
+   gl_FragColor = col;
+}
diff --git a/src/modules/engines/gl_common/shader/rect_frag_bin_s3c6410.h b/src/modules/engines/gl_common/shader/rect_frag_bin_s3c6410.h
new file mode 100644
index 0000000..ee94467
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_frag_bin_s3c6410.h
@@ -0,0 +1,6 @@
+0x20205350, 0xffff0008, 0x00000048, 0x01020000, 0x00000002, 0x00000000, 
+0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 
+0x00000000, 0x00000000, 0x20fa10e4, 0x00000000, 0x00000000, 0x00000000, 
+0x1e000000, 0x00000000, 0x00000000, 0x00000003, 0x00000009, 0x00000000, 
+0x00000000, 0x006c6f63, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/rect_frag_s3c6410.asm b/src/modules/engines/gl_common/shader/rect_frag_s3c6410.asm
new file mode 100644
index 0000000..24c47ac
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_frag_s3c6410.asm
@@ -0,0 +1,24 @@
+
+#-------------------------------------------------
+# ORION - OpenGL ES 2.0 Shading Language Compiler
+# SAMSUNG INDIA SOFTWARE OPERATIONS PVT. LTD.
+# Compiler Version	: v04.00.09
+# Release Date		: 19.01.2009
+# FIMG VERSION      : FIMGv1.5
+# Optimizer Options :  -O --nolodcalc
+#-------------------------------------------------
+
+# hand optimised - removed useless ops
+
+ps_3_0
+
+fimg_version	0x01020000
+
+dcl_f4_col	v0.x
+
+label start
+label main_
+label main_end
+mov_sat oColor.xyzw, v0.xyzw
+ret
+
diff --git a/src/modules/engines/gl_common/shader/rect_vert.h b/src/modules/engines/gl_common/shader/rect_vert.h
new file mode 100644
index 0000000..a504cd0
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_vert.h
@@ -0,0 +1,13 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"attribute vec4 vertex;\n"
+"attribute vec4 color;\n"
+"attribute vec2 tex_coord;\n"
+"uniform mat4 mvp;\n"
+"varying vec4 col;\n"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   col = color;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/rect_vert.shd b/src/modules/engines/gl_common/shader/rect_vert.shd
new file mode 100644
index 0000000..3ea4c8b
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_vert.shd
@@ -0,0 +1,13 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+attribute vec4 vertex;
+attribute vec4 color;
+attribute vec2 tex_coord;
+uniform mat4 mvp;
+varying vec4 col;
+void main()
+{
+   gl_Position = mvp * vertex;
+   col = color;
+}
diff --git a/src/modules/engines/gl_common/shader/rect_vert_bin_s3c6410.h b/src/modules/engines/gl_common/shader/rect_vert_bin_s3c6410.h
new file mode 100644
index 0000000..3130684
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/rect_vert_bin_s3c6410.h
@@ -0,0 +1,17 @@
+0x20205356, 0xffff0008, 0x00000048, 0x01020000, 0x00000006, 0x00000006, 
+0x00000000, 0x00000000, 0x00000002, 0x00000002, 0x00000001, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000021, 0x00000000, 
+0x00000000, 0x02020000, 0x237820e4, 0x00000000, 0x00e40100, 0x02035500, 
+0x2ef820e4, 0x00000000, 0x00e40100, 0x0204aa00, 0x2ef820e4, 0x00000000, 
+0x00e40100, 0x0205ff00, 0x2ef800e4, 0x00000000, 0x00000000, 0x00010000, 
+0x20f801e4, 0x00000000, 0x00000000, 0x00000000, 0x1e000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 
+0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x0000000c, 0x00000006, 0x00000009, 0x00000000, 0x00000000, 0x00000013, 
+0x00000005, 0x00000009, 0x00000000, 0x00000004, 0x00000000, 0x0000000b, 
+0x00000009, 0x00010004, 0x00000000, 0x0000001d, 0x00000003, 0x00000009, 
+0x00010004, 0x00000004, 0x00000019, 0x00000003, 0x0000000e, 0x00020001, 
+0x00000008, 0x505f6c67, 0x7469736f, 0x006e6f69, 0x74726576, 0x63007865, 
+0x726f6c6f, 0x70766d00, 0x6c6f6300, 0x00000000, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/tex_frag.h b/src/modules/engines/gl_common/shader/tex_frag.h
new file mode 100644
index 0000000..29449f2
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_frag.h
@@ -0,0 +1,10 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"uniform sampler2D tex;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_FragColor = texture2D(tex, tex_c.xy) * col;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/tex_frag.shd b/src/modules/engines/gl_common/shader/tex_frag.shd
new file mode 100644
index 0000000..eb65760
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_frag.shd
@@ -0,0 +1,10 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+uniform sampler2D tex;
+varying vec4 col;
+varying vec2 tex_c;
+void main()
+{
+   gl_FragColor = texture2D(tex, tex_c.xy) * col;
+}
diff --git a/src/modules/engines/gl_common/shader/tex_frag_bin_s3c6410.h b/src/modules/engines/gl_common/shader/tex_frag_bin_s3c6410.h
new file mode 100644
index 0000000..24af537
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_frag_bin_s3c6410.h
@@ -0,0 +1,9 @@
+0x20205350, 0xffff0008, 0x00000048, 0x01020000, 0x00000003, 0x00000000, 
+0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000000, 
+0x00000000, 0x0000e407, 0x307820e4, 0x00000000, 0x01000000, 0x0100e400, 
+0x237a10e4, 0x00000000, 0x00000000, 0x00000000, 0x1e000000, 0x00000000, 
+0x00000004, 0x00000003, 0x00000009, 0x00000000, 0x00000004, 0x00000008, 
+0x00000005, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 
+0x0000000f, 0x00030005, 0x00000000, 0x00786574, 0x006c6f63, 0x5f786574, 
+0x00000063, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/tex_frag_s3c6410.asm b/src/modules/engines/gl_common/shader/tex_frag_s3c6410.asm
new file mode 100644
index 0000000..14bbfa1
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_frag_s3c6410.asm
@@ -0,0 +1,26 @@
+
+#-------------------------------------------------
+# ORION - OpenGL ES 2.0 Shading Language Compiler
+# SAMSUNG INDIA SOFTWARE OPERATIONS PVT. LTD.
+# Compiler Version	: v04.00.09
+# Release Date		: 19.01.2009
+# FIMG VERSION      : FIMGv1.5
+# Optimizer Options :  -O --nolodcalc
+#-------------------------------------------------
+
+# hand optimised - removed useless ops
+
+ps_3_0
+
+fimg_version	0x01020000
+
+dcl_s2_tex	s0
+dcl_f4_col	v1.x
+dcl_f2_tex_c	v0.x
+
+label start
+label main_
+texld r0.xyzw, v0.xyzw, s0	# tex=s0
+mul_sat oColor.xyzw, r0.xyzw, v1.xyzw	# gl_FragColor=oColor.xyzw, col=v1.xyzw
+label main_end
+ret
diff --git a/src/modules/engines/gl_common/shader/tex_vert.h b/src/modules/engines/gl_common/shader/tex_vert.h
new file mode 100644
index 0000000..ef035c8
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_vert.h
@@ -0,0 +1,15 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"attribute vec4 vertex;\n"
+"attribute vec4 color;\n"
+"attribute vec2 tex_coord;\n"
+"uniform mat4 mvp;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   col = color;\n"
+"   tex_c = tex_coord;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/tex_vert.shd b/src/modules/engines/gl_common/shader/tex_vert.shd
new file mode 100644
index 0000000..cf98501
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_vert.shd
@@ -0,0 +1,15 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+attribute vec4 vertex;
+attribute vec4 color;
+attribute vec2 tex_coord;
+uniform mat4 mvp;
+varying vec4 col;
+varying vec2 tex_c;
+void main()
+{
+   gl_Position = mvp * vertex;
+   col = color;
+   tex_c = tex_coord;
+}
diff --git a/src/modules/engines/gl_common/shader/tex_vert_bin_s3c6410.h b/src/modules/engines/gl_common/shader/tex_vert_bin_s3c6410.h
new file mode 100644
index 0000000..1402448
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/tex_vert_bin_s3c6410.h
@@ -0,0 +1,20 @@
+0x20205356, 0xffff0008, 0x00000048, 0x01020000, 0x00000007, 0x00000006, 
+0x00000000, 0x00000000, 0x00000003, 0x00000003, 0x00000001, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000031, 0x00000000, 
+0x00000000, 0x02020000, 0x237820e4, 0x00000000, 0x00e40100, 0x02035500, 
+0x2ef820e4, 0x00000000, 0x00e40100, 0x0204aa00, 0x2ef820e4, 0x00000000, 
+0x00e40100, 0x0205ff00, 0x2ef800e4, 0x00000000, 0x00000000, 0x00010000, 
+0x20f801e4, 0x00000000, 0x00000000, 0x00020000, 0x20980254, 0x00000000, 
+0x00000000, 0x00000000, 0x1e000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000c, 0x00000006, 
+0x00000009, 0x00000000, 0x00000000, 0x00000013, 0x00000005, 0x00000009, 
+0x00000000, 0x00000004, 0x00000019, 0x00000009, 0x00000003, 0x00000000, 
+0x00000008, 0x00000000, 0x0000000b, 0x00000009, 0x00010004, 0x00000000, 
+0x00000027, 0x00000003, 0x00000009, 0x00010004, 0x00000004, 0x0000002b, 
+0x00000005, 0x00000003, 0x00010004, 0x00000008, 0x00000023, 0x00000003, 
+0x0000000e, 0x00020001, 0x00000008, 0x505f6c67, 0x7469736f, 0x006e6f69, 
+0x74726576, 0x63007865, 0x726f6c6f, 0x78657400, 0x6f6f635f, 0x6d006472, 
+0x63007076, 0x74006c6f, 0x635f7865, 0x00000000, 
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/shader/yuv_frag.h b/src/modules/engines/gl_common/shader/yuv_frag.h
new file mode 100644
index 0000000..af1aa48
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_frag.h
@@ -0,0 +1,19 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"uniform sampler2D tex, texu, texv;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"varying vec2 tex_c2;\n"
+"varying vec2 tex_c3;\n"
+"void main()\n"
+"{\n"
+"   mat4 yuv2rgb = mat4( 1.16400,  1.16400,  1.16400, 0.00000,\n"
+"                        0.00000, -0.34410,  1.77200, 0.00000,\n"
+"                        1.40200, -0.71410,  0.00000, 0.00000,\n"
+"                       -0.77380,  0.45630, -0.95880, 1.00000);\n"
+"   vec4 yuv = vec4(texture2D(tex, tex_c.xy).r,\n"
+"                   texture2D(texu, tex_c2.xy).r,\n"
+"                   texture2D(texv, tex_c3.xy).r, 1.0);\n"
+"   gl_FragColor = (yuv2rgb * yuv) * col;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/yuv_frag.shd b/src/modules/engines/gl_common/shader/yuv_frag.shd
new file mode 100644
index 0000000..7da2546
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_frag.shd
@@ -0,0 +1,19 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+uniform sampler2D tex, texu, texv;
+varying vec4 col;
+varying vec2 tex_c;
+varying vec2 tex_c2;
+varying vec2 tex_c3;
+void main()
+{
+   mat4 yuv2rgb = mat4( 1.16400,  1.16400,  1.16400, 0.00000,
+                        0.00000, -0.34410,  1.77200, 0.00000,
+                        1.40200, -0.71410,  0.00000, 0.00000,
+                       -0.77380,  0.45630, -0.95880, 1.00000);
+   vec4 yuv = vec4(texture2D(tex, tex_c.xy).r,
+                   texture2D(texu, tex_c2.xy).r,
+                   texture2D(texv, tex_c3.xy).r, 1.0);
+   gl_FragColor = (yuv2rgb * yuv) * col;
+}
diff --git a/src/modules/engines/gl_common/shader/yuv_frag_bin_s3c6410.h b/src/modules/engines/gl_common/shader/yuv_frag_bin_s3c6410.h
new file mode 100644
index 0000000..cd301dc
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_frag_bin_s3c6410.h
@@ -0,0 +1,24 @@
+0x20205350, 0xffff0008, 0x00000048, 0x01020000, 0x0000000d, 0x00000007, 
+0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000026, 0x00000000, 
+0x00000000, 0x02065400, 0x23782050, 0x00000000, 0x00000000, 0x0100e407, 
+0x307820e4, 0x00000000, 0x01000000, 0x02065400, 0x23782150, 0x00000000, 
+0x01000000, 0x0101e407, 0x307821e4, 0x00000000, 0x02000000, 0x02065400, 
+0x23782250, 0x00000000, 0x02000000, 0x0102e407, 0x307822e4, 0x00000000, 
+0x00000000, 0x02020001, 0x237823e4, 0x00000000, 0x01e40103, 0x02030001, 
+0x2ef823e4, 0x00000000, 0x02e40103, 0x02040001, 0x2ef823e4, 0x00000000, 
+0x00000000, 0x02050000, 0x20f824e4, 0x00000000, 0x06e40103, 0x01040002, 
+0x2ef823e4, 0x00000000, 0x03000000, 0x0103e400, 0x237a10e4, 0x00000000, 
+0x00000000, 0x00000000, 0x1e000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x3f94fdf4, 0x3f94fdf4, 0x3f94fdf4, 0x00000000, 0x00000000, 0xbeb02de0, 
+0x3fe2d0e5, 0x00000000, 0x3fb374bc, 0xbf36cf42, 0x00000000, 0x00000000, 
+0xbf4617c2, 0x3ee9a027, 0xbf7573eb, 0x3f800000, 0x3f800000, 0x00000000, 
+0x00000000, 0x00000000, 0x0000000e, 0x00000003, 0x00000009, 0x00000000, 
+0x0000000c, 0x00000012, 0x00000005, 0x00000003, 0x00000000, 0x00000000, 
+0x00000018, 0x00000006, 0x00000003, 0x00000000, 0x00000004, 0x0000001f, 
+0x00000006, 0x00000003, 0x00000000, 0x00000008, 0x00000000, 0x00000003, 
+0x0000000f, 0x00030005, 0x00000000, 0x00000004, 0x00000004, 0x0000000f, 
+0x00030005, 0x00000004, 0x00000009, 0x00000004, 0x0000000f, 0x00030005, 
+0x00000008, 0x00786574, 0x75786574, 0x78657400, 0x6f630076, 0x6574006c, 
+0x00635f78, 0x5f786574, 0x74003263, 0x635f7865, 0x00000033, 
diff --git a/src/modules/engines/gl_common/shader/yuv_frag_s3c6410.asm b/src/modules/engines/gl_common/shader/yuv_frag_s3c6410.asm
new file mode 100644
index 0000000..9a10bf0
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_frag_s3c6410.asm
@@ -0,0 +1,46 @@
+
+#-------------------------------------------------
+# ORION - OpenGL ES 2.0 Shading Language Compiler
+# SAMSUNG INDIA SOFTWARE OPERATIONS PVT. LTD.
+# Compiler Version	: v04.00.09
+# Release Date		: 19.01.2009
+# FIMG VERSION      : FIMGv1.5
+# Optimizer Options :  -O --nolodcalc
+#-------------------------------------------------
+
+# hand optimised - removed useless ops
+
+ps_3_0
+
+fimg_version	0x01020000
+
+dcl_s2_tex	s0
+dcl_s2_texu	s1
+dcl_s2_texv	s2
+dcl_f4_col	v3.x
+dcl_f2_tex_c	v0.x
+dcl_f2_tex_c2	v1.x
+dcl_f2_tex_c3	v2.x
+
+def c2, 1.164000, 1.164000, 1.164000, 0.000000
+def c3, 0.000000, -0.344100, 1.772000, 0.000000
+def c4, 1.402000, -0.714100, 0.000000, 0.000000
+def c5, -0.773800, 0.456300, -0.958800, 1.000000
+def c6, 1.000000, 0.000000, 0.000000, 0.000000
+
+label start
+label main_
+mul r0.xyzw, c6.xxyy, v0.xyyy	# tex_c=v0.xyyy
+texld r0.xyzw, r0.xyzw, s0	# tex=s0
+mul r1.xyzw, c6.xxyy, v1.xyyy	# tex_c2=v1.xyyy
+texld r1.xyzw, r1.xyzw, s1	# texu=s1
+mul r2.xyzw, c6.xxyy, v2.xyyy	# tex_c3=v2.xyyy
+texld r2.xyzw, r2.xyzw, s2	# texv=s2
+mul r3.xyzw, c2.xyzw, r0.xxxx	# yuv=r0.xxxx
+mad r3.xyzw, c3.xyzw, r1.xxxx, r3.xyzw	# yuv=r1.xxxx
+mad r3.xyzw, c4.xyzw, r2.xxxx, r3.xyzw	# yuv=r2.xxxx
+mov r4.xyzw, c5.xyzw
+mad r3.xyzw, r4.xyzw, c6.xxxx, r3.xyzw	# yuv=c6.xxxx
+mul_sat oColor.xyzw, r3.xyzw, v3.xyzw	# gl_FragColor=oColor.xyzw, col=v3.xyzw
+label main_end
+ret
diff --git a/src/modules/engines/gl_common/shader/yuv_vert.h b/src/modules/engines/gl_common/shader/yuv_vert.h
new file mode 100644
index 0000000..5b82148
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_vert.h
@@ -0,0 +1,21 @@
+"#ifdef GL_ES\n"
+"precision mediump float;\n"
+"#endif\n"
+"attribute vec4 vertex;\n"
+"attribute vec4 color;\n"
+"attribute vec2 tex_coord;\n"
+"attribute vec2 tex_coord2;\n"
+"attribute vec2 tex_coord3;\n"
+"uniform mat4 mvp;\n"
+"varying vec4 col;\n"
+"varying vec2 tex_c;\n"
+"varying vec2 tex_c2;\n"
+"varying vec2 tex_c3;\n"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   col = color;\n"
+"   tex_c = tex_coord;\n"
+"   tex_c2 = tex_coord2;\n"
+"   tex_c3 = tex_coord3;\n"
+"}\n"
diff --git a/src/modules/engines/gl_common/shader/yuv_vert.shd b/src/modules/engines/gl_common/shader/yuv_vert.shd
new file mode 100644
index 0000000..b09477f
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_vert.shd
@@ -0,0 +1,21 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+attribute vec4 vertex;
+attribute vec4 color;
+attribute vec2 tex_coord;
+attribute vec2 tex_coord2;
+attribute vec2 tex_coord3;
+uniform mat4 mvp;
+varying vec4 col;
+varying vec2 tex_c;
+varying vec2 tex_c2;
+varying vec2 tex_c3;
+void main()
+{
+   gl_Position = mvp * vertex;
+   col = color;
+   tex_c = tex_coord;
+   tex_c2 = tex_coord2;
+   tex_c3 = tex_coord3;
+}
diff --git a/src/modules/engines/gl_common/shader/yuv_vert_bin_s3c6410.h b/src/modules/engines/gl_common/shader/yuv_vert_bin_s3c6410.h
new file mode 100644
index 0000000..e757b6d
--- /dev/null
+++ b/src/modules/engines/gl_common/shader/yuv_vert_bin_s3c6410.h
@@ -0,0 +1,26 @@
+0x20205356, 0xffff0008, 0x00000048, 0x01020000, 0x00000009, 0x00000006, 
+0x00000000, 0x00000000, 0x00000005, 0x00000005, 0x00000001, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000055, 0x00000000, 
+0x00000000, 0x02020000, 0x237820e4, 0x00000000, 0x00e40100, 0x02035500, 
+0x2ef820e4, 0x00000000, 0x00e40100, 0x0204aa00, 0x2ef820e4, 0x00000000, 
+0x00e40100, 0x0205ff00, 0x2ef800e4, 0x00000000, 0x00000000, 0x00010000, 
+0x20f801e4, 0x00000000, 0x00000000, 0x00020000, 0x20980254, 0x00000000, 
+0x00000000, 0x00030000, 0x20980354, 0x00000000, 0x00000000, 0x00040000, 
+0x20980454, 0x00000000, 0x00000000, 0x00000000, 0x1e000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 
+0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+0x0000000c, 0x00000006, 0x00000009, 0x00000000, 0x00000000, 0x00000013, 
+0x00000005, 0x00000009, 0x00000000, 0x00000004, 0x00000019, 0x00000009, 
+0x00000003, 0x00000000, 0x00000008, 0x00000023, 0x0000000a, 0x00000003, 
+0x00000000, 0x0000000c, 0x0000002e, 0x0000000a, 0x00000003, 0x00000000, 
+0x00000010, 0x00000000, 0x0000000b, 0x00000009, 0x00010004, 0x00000000, 
+0x0000003d, 0x00000003, 0x00000009, 0x00010004, 0x00000004, 0x00000041, 
+0x00000005, 0x00000003, 0x00010004, 0x00000008, 0x00000047, 0x00000006, 
+0x00000003, 0x00010004, 0x0000000c, 0x0000004e, 0x00000006, 0x00000003, 
+0x00010004, 0x00000010, 0x00000039, 0x00000003, 0x0000000e, 0x00020001, 
+0x00000008, 0x505f6c67, 0x7469736f, 0x006e6f69, 0x74726576, 0x63007865, 
+0x726f6c6f, 0x78657400, 0x6f6f635f, 0x74006472, 0x635f7865, 0x64726f6f, 
+0x65740032, 0x6f635f78, 0x3364726f, 0x70766d00, 0x6c6f6300, 0x78657400, 
+0x7400635f, 0x635f7865, 0x65740032, 0x33635f78, 0x00000000, 
diff --git a/src/modules/engines/gl_glew/Makefile.am b/src/modules/engines/gl_glew/Makefile.am
index 47461a4..0c80c19 100644
--- a/src/modules/engines/gl_glew/Makefile.am
+++ b/src/modules/engines/gl_glew/Makefile.am
@@ -28,7 +28,7 @@ pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES  = $(GL_GLEW_SOURCES)
 module_la_LIBADD = $(GL_GLEW_LIBADD) $(top_builddir)/src/lib/libevas.la
-module_la_LDFLAGS = -no-undefined -module -avoid-version
+module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
 else
diff --git a/src/modules/engines/gl_glew/Makefile.in b/src/modules/engines/gl_glew/Makefile.in
index 703275a..8778560 100644
--- a/src/modules/engines/gl_glew/Makefile.in
+++ b/src/modules/engines/gl_glew/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -308,17 +308,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -342,7 +345,7 @@ AM_CPPFLAGS = \
 @BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_FALSE at pkg_LTLIBRARIES = module.la
 @BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_FALSE at module_la_SOURCES = $(GL_GLEW_SOURCES)
 @BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_FALSE at module_la_LIBADD = $(GL_GLEW_LIBADD) $(top_builddir)/src/lib/libevas.la
- at BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_FALSE at module_la_LDFLAGS = -no-undefined -module -avoid-version
+ at BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_FALSE at module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 @BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_FALSE at module_la_LIBTOOLFLAGS = --tag=disable-static
 @BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_TRUE at noinst_LTLIBRARIES = libevas_engine_gl_glew.la
 @BUILD_ENGINE_GL_GLEW_TRUE@@EVAS_STATIC_BUILD_GL_GLEW_TRUE at libevas_engine_gl_glew_la_SOURCES = $(GL_GLEW_SOURCES)
@@ -356,8 +359,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -496,7 +499,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/gl_glew/evas_engine.c b/src/modules/engines/gl_glew/evas_engine.c
index 6386e36..2d94a1b 100644
--- a/src/modules/engines/gl_glew/evas_engine.c
+++ b/src/modules/engines/gl_glew/evas_engine.c
@@ -1,6 +1,6 @@
 #include "evas_engine.h"
-#include "Evas_Engine_GL_Glew.h"
 
+int _evas_engine_GL_glew_log_dom = -1;
 
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
@@ -9,32 +9,26 @@ typedef struct _Render_Engine Render_Engine;
 
 struct _Render_Engine
 {
-   HWND                 win;
-   HDC                  dc;
-   HGLRC                context;
    Evas_GL_Glew_Window *window;
    int                  end;
 };
 
 static void *
-eng_info(Evas *e)
+eng_info(Evas *e __UNUSED__)
 {
    Evas_Engine_Info_GL_Glew *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_GL_Glew));
    if (!info) return NULL;
-
    info->magic.magic = rand();
-
    return info;
-   e = NULL;
 }
 
 static void
-eng_info_free(Evas *e, void *info)
+eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_GL_Glew *in;
 
+   eina_log_domain_unregister(_evas_engine_GL_glew_log_dom);
    in = (Evas_Engine_Info_GL_Glew *)info;
    free(in);
 }
@@ -51,18 +45,8 @@ eng_setup(Evas *e, void *in)
 	re = calloc(1, sizeof(Render_Engine));
 	if (!re) return 0;
 
-        if (!evas_glew_init(info->info.window, &re->dc, &re->context))
-          {
-	     free(re);
-	     e->engine.data.output = NULL;
-	     return 0;
-          }
-
-        re->win = info->info.window;
 	e->engine.data.output = re;
 	re->window = eng_window_new(info->info.window,
-                                    re->dc,
-                                    re->context,
                                     info->info.depth,
                                     e->output.w,
                                     e->output.h);
@@ -89,20 +73,9 @@ eng_setup(Evas *e, void *in)
      }
    else
      {
-
-        if (!evas_glew_init(info->info.window, &re->dc, &re->context))
-          {
-	     free(re);
-	     e->engine.data.output = NULL;
-	     return 0;
-          }
-
-        re->win = info->info.window;
 	re = e->engine.data.output;
 	eng_window_free(re->window);
 	re->window = eng_window_new(info->info.window,
-                                    re->dc,
-                                    re->context,
                                     info->info.depth,
                                     e->output.w,
                                     e->output.h);
@@ -112,6 +85,7 @@ eng_setup(Evas *e, void *in)
    if (!e->engine.data.context)
      e->engine.data.context =
        e->engine.func->context_new(e->engine.data.output);
+   eng_window_use(re->window);
 
    return 1;
 }
@@ -123,7 +97,6 @@ eng_output_free(void *data)
 
    re = (Render_Engine *)data;
    eng_window_free(re->window);
-   evas_glew_shutdown(re->win, re->dc, re->context);
    free(re);
 
    evas_common_font_shutdown();
@@ -142,11 +115,8 @@ eng_output_resize(void *data, int w, int h)
 }
 
 static void
-eng_output_tile_size_set(void *data, int w, int h)
+eng_output_tile_size_set(void *data __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
 }
 
 static void
@@ -182,11 +152,8 @@ eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
 }
 
 static void
-eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+eng_output_redraws_rect_del(void *data __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
 }
 
 static void
@@ -199,6 +166,8 @@ eng_output_redraws_clear(void *data)
 }
 
 #define SLOW_GL_COPY_RECT 1
+/* vsync games - not for now though */
+//#define VSYNC_TO_SCREEN 1
 
 static void *
 eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
@@ -206,6 +175,7 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   evas_gl_common_context_flush(re->window->gl_context);
    /* get the upate rect surface - return engine data as dummy */
    if (!re->window->draw.redraw)
      {
@@ -240,11 +210,14 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i
    if (cw) *cw = re->window->draw.x2 - re->window->draw.x1 + 1;
    if (ch) *ch = re->window->draw.y2 - re->window->draw.y1 + 1;
 #endif
+// clear buffer. only needed for dest alpha
+//   glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+//   glClear(GL_COLOR_BUFFER_BIT);
    return re;
 }
 
 static void
-eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+eng_output_redraws_next_update_push(void *data, void *surface __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
    Render_Engine *re;
 
@@ -252,6 +225,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
    /* put back update surface.. in this case just unflag redraw */
    re->window->draw.redraw = 0;
    re->window->draw.drew = 1;
+   evas_gl_common_context_flush(re->window->gl_context);
 }
 
 static void
@@ -265,8 +239,11 @@ eng_output_flush(void *data)
    re->window->draw.drew = 0;
    eng_window_use(re->window);
 
+#ifdef VSYNC_TO_SCREEN
+   eng_window_vsync_set(1);
+#endif
 #ifdef SLOW_GL_COPY_RECT
-   SwapBuffers(re->dc);
+   eng_window_swap_buffers(re->window);
 #else
    /* SLOW AS ALL HELL */
    evas_gl_common_swap_rect(re->window->gl_context,
@@ -277,35 +254,20 @@ eng_output_flush(void *data)
 }
 
 static void
-eng_output_idle_flush(void *data)
+eng_output_idle_flush(void *data __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
 }
 
 static void
-eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
+eng_context_cutout_add(void *data __UNUSED__, void *context, int x, int y, int w, int h)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-#ifndef EVAS_GL_COMMON_NOCUTOUTS
-   re->window->gl_context->dc = context;
    evas_common_draw_context_add_cutout(context, x, y, w, h);
-#endif
 }
 
 static void
-eng_context_cutout_clear(void *data, void *context)
+eng_context_cutout_clear(void *data __UNUSED__, void *context)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-#ifndef EVAS_GL_COMMON_NOCUTOUTS
-   re->window->gl_context->dc = context;
    evas_common_draw_context_clear_cutouts(context);
-#endif
 }
 
 static void
@@ -325,8 +287,9 @@ eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2,
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   eng_window_use(re->window);
    re->window->gl_context->dc = context;
-   evas_gl_common_line_draw(re->window->gl_context, x1, y1, x2, y2);
+//-//   evas_gl_common_line_draw(re->win->gl_context, x1, y1, x2, y2);
 }
 
 static void *
@@ -335,7 +298,8 @@ eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y)
    Render_Engine *re;
 
    re = (Render_Engine *)data;
-   return evas_gl_common_poly_point_add(polygon, x, y);
+//--//      return evas_gl_common_poly_point_add(polygon, x, y);
+   return NULL;
 
 }
 
@@ -345,7 +309,8 @@ eng_polygon_points_clear(void *data, void *context, void *polygon)
    Render_Engine *re;
 
    re = (Render_Engine *)data;
-   return evas_gl_common_poly_points_clear(polygon);
+//--//      return evas_gl_common_poly_points_clear(polygon);
+   return NULL;
 }
 
 static void
@@ -355,91 +320,199 @@ eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
 
    re = (Render_Engine *)data;
    re->window->gl_context->dc = context;
-   evas_gl_common_poly_draw(re->window->gl_context, polygon);
+//--//      evas_gl_common_poly_draw(re->win->gl_context, polygon);
+}
+
+static void
+eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, float pos __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient __UNUSED__, void *transform __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_fill_spread_set
+(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
+{
+}
+
+static void *
+eng_gradient2_linear_new(void *data __UNUSED__)
+{
+   return NULL;
+}
+
+static void
+eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient __UNUSED__, int x0 __UNUSED__, int y0 __UNUSED__, int x1 __UNUSED__, int y1 __UNUSED__)
+{
+}
+
+static int
+eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
+{
+   return 1;
+}
+
+static int
+eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
+{
+   return 1;
+}
+
+static void
+eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
+{
 }
 
 static void *
-eng_gradient_new(void *data)
+eng_gradient2_radial_new(void *data __UNUSED__)
 {
-   return evas_gl_common_gradient_new();
+   return NULL;
 }
 
 static void
-eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient __UNUSED__)
+{
+}
+
+static void
+eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient __UNUSED__, float cx __UNUSED__, float cy __UNUSED__, float rx __UNUSED__, float ry __UNUSED__)
+{
+}
+
+static int
+eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
-   evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+   return 1;
+}
+
+static int
+eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
+{
+   return 1;
 }
 
 static void
-eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__)
 {
-   evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
 }
 
 static void
-eng_gradient_clear(void *data, void *gradient)
+eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
 {
-   evas_gl_common_gradient_clear(gradient);
 }
 
 static void
-eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
-   evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void *
+eng_gradient_new(void *data __UNUSED__)
+{
+//--//      return evas_gl_common_gradient_new();
+   return NULL;
 }
 
 static void
-eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, int delta)
 {
-   evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
+//--//      evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
 }
 
 static void
-eng_gradient_free(void *data, void *gradient)
+eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient, int a, int delta)
 {
-   evas_gl_common_gradient_free(gradient);
+//--//      evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
 }
 
 static void
-eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+eng_gradient_clear(void *data __UNUSED__, void *gradient)
 {
-   evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
+//--//      evas_gl_common_gradient_clear(gradient);
 }
 
 static void
-eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+eng_gradient_color_data_set(void *data __UNUSED__, void *gradient, void *map, int len, int has_alpha)
 {
-   evas_gl_common_gradient_fill_angle_set(gradient, angle);
+//--//      evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
 }
 
 static void
-eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient, void *alpha_map, int len)
 {
-   evas_gl_common_gradient_fill_spread_set(gradient, spread);
+//--//      evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
 }
 
 static void
-eng_gradient_angle_set(void *data, void *gradient, double angle)
+eng_gradient_free(void *data __UNUSED__, void *gradient)
 {
-   evas_gl_common_gradient_map_angle_set(gradient, angle);
+//--//      evas_gl_common_gradient_free(gradient);
 }
 
 static void
-eng_gradient_offset_set(void *data, void *gradient, float offset)
+eng_gradient_fill_set(void *data __UNUSED__, void *gradient, int x, int y, int w, int h)
 {
-   evas_gl_common_gradient_map_offset_set(gradient, offset);
+//--//      evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
 }
 
 static void
-eng_gradient_direction_set(void *data, void *gradient, int direction)
+eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient, double angle)
 {
-   evas_gl_common_gradient_map_direction_set(gradient, direction);
+//--//      evas_gl_common_gradient_fill_angle_set(gradient, angle);
 }
 
 static void
-eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
 {
-   evas_gl_common_gradient_type_set(gradient, name, params);
+//--//      evas_gl_common_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data __UNUSED__, void *gradient, double angle)
+{
+//--//      evas_gl_common_gradient_map_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data __UNUSED__, void *gradient, float offset)
+{
+//--//      evas_gl_common_gradient_map_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data __UNUSED__, void *gradient, int direction)
+{
+//--//      evas_gl_common_gradient_map_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data __UNUSED__, void *gradient, char *name, char *params)
+{
+//--//      evas_gl_common_gradient_type_set(gradient, name, params);
 }
 
 static int
@@ -448,7 +521,8 @@ eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y,
    Render_Engine *re = (Render_Engine *)data;
 
    re->window->gl_context->dc = context;
-   return evas_gl_common_gradient_is_opaque(re->window->gl_context, gradient, x, y, w, h);
+//--//      return evas_gl_common_gradient_is_opaque(re->window->gl_context, gradient, x, y, w, h);
+   return 0;
 }
 
 static int
@@ -457,7 +531,8 @@ eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y,
    Render_Engine *re = (Render_Engine *)data;
 
    re->window->gl_context->dc = context;
-   return evas_gl_common_gradient_is_visible(re->window->gl_context, gradient, x, y, w, h);
+//--//      return evas_gl_common_gradient_is_visible(re->window->gl_context, gradient, x, y, w, h);
+   return 0;
 }
 
 static void
@@ -466,33 +541,31 @@ eng_gradient_render_pre(void *data, void *context, void *gradient)
    Render_Engine *re = (Render_Engine *)data;
 
    re->window->gl_context->dc = context;
-   evas_gl_common_gradient_render_pre(re->window->gl_context, gradient);
+//--//      evas_gl_common_gradient_render_pre(re->window->gl_context, gradient);
 }
 
 static void
-eng_gradient_render_post(void *data, void *gradient)
+eng_gradient_render_post(void *data __UNUSED__, void *gradient)
 {
-   evas_gl_common_gradient_render_post(gradient);
+//--//      evas_gl_common_gradient_render_post(gradient);
 }
 
 static void
-eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+eng_gradient_draw(void *data, void *context, void *surface __UNUSED__, void *gradient, int x, int y, int w, int h)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
    eng_window_use(re->window);
    re->window->gl_context->dc = context;
-   evas_gl_common_gradient_draw(re->window->gl_context, gradient, x, y, w, h);
+//--//      evas_gl_common_gradient_draw(re->window->gl_context, gradient, x, y, w, h);
 }
 
 static int
 eng_image_alpha_get(void *data, void *image)
 {
-   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
    if (!image) return 1;
    im = image;
    /* FIXME: can move to gl_common */
@@ -509,10 +582,8 @@ eng_image_alpha_get(void *data, void *image)
 static int
 eng_image_colorspace_get(void *data, void *image)
 {
-   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
    if (!image) return EVAS_COLORSPACE_ARGB8888;
    im = image;
    return im->cs.space;
@@ -550,41 +621,31 @@ eng_image_alpha_set(void *data, void *image, int has_alpha)
 }
 
 static void *
-eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+eng_image_border_set(void *data __UNUSED__, void *image, int l __UNUSED__, int r __UNUSED__, int t __UNUSED__, int b __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
    return image;
 }
 
 static void
-eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+eng_image_border_get(void *data __UNUSED__, void *image __UNUSED__, int *l __UNUSED__, int *r __UNUSED__, int *t __UNUSED__, int *b __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
 }
 
 static char *
-eng_image_comment_get(void *data, void *image, char *key)
+eng_image_comment_get(void *data __UNUSED__, void *image, char *key __UNUSED__)
 {
-   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
    if (!image) return NULL;
-   im = image;
+   im = (Evas_GL_Image *)image;
    return im->im->info.comment;
 }
 
 static char *
-eng_image_format_get(void *data, void *image)
+eng_image_format_get(void *data __UNUSED__, void *image)
 {
-   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
    im = image;
    return NULL;
 }
@@ -600,6 +661,7 @@ eng_image_colorspace_set(void *data, void *image, int cspace)
    im = image;
    /* FIXME: can move to gl_common */
    if (im->cs.space == cspace) return;
+   eng_window_use(re->window);
    evas_cache_image_colorspace(&im->im->cache_entry, cspace);
    switch (cspace)
      {
@@ -630,12 +692,12 @@ eng_image_colorspace_set(void *data, void *image, int cspace)
 }
 
 static void
-eng_image_native_set(void *data, void *image, void *native)
+eng_image_native_set(void *data __UNUSED__, void *image __UNUSED__, void *native __UNUSED__)
 {
 }
 
 static void *
-eng_image_native_get(void *data, void *image)
+eng_image_native_get(void *data __UNUSED__, void *image __UNUSED__)
 {
    return NULL;
 }
@@ -683,11 +745,8 @@ eng_image_free(void *data, void *image)
 }
 
 static void
-eng_image_size_get(void *data, void *image, int *w, int *h)
+eng_image_size_get(void *data __UNUSED__, void *image, int *w, int *h)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
    if (!image)
      {
 	*w = 0;
@@ -736,12 +795,13 @@ eng_image_size_set(void *data, void *image, int w, int h)
 }
 
 static void *
-eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+eng_image_dirty_region(void *data, void *image, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
    if (!image) return NULL;
+   eng_window_use(re->window);
    evas_gl_common_image_dirty(image);
    return image;
 }
@@ -845,7 +905,7 @@ eng_image_data_put(void *data, void *image, DATA32 *image_data)
 }
 
 static void
-eng_image_data_preload_request(void *data, void *image, const void *target)
+eng_image_data_preload_request(void *data __UNUSED__, void *image, const void *target)
 {
    Evas_GL_Image *gim = image;
    RGBA_Image *im;
@@ -857,7 +917,7 @@ eng_image_data_preload_request(void *data, void *image, const void *target)
 }
 
 static void
-eng_image_data_preload_cancel(void *data, void *image, const void *target)
+eng_image_data_preload_cancel(void *data __UNUSED__, void *image, const void *target)
 {
    Evas_GL_Image *gim = image;
    RGBA_Image *im;
@@ -869,7 +929,7 @@ eng_image_data_preload_cancel(void *data, void *image, const void *target)
 }
 
 static void
-eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+eng_image_draw(void *data, void *context, void *surface __UNUSED__, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
 {
    Render_Engine *re;
 
@@ -884,30 +944,51 @@ eng_image_draw(void *data, void *context, void *surface, void *image, int src_x,
 }
 
 static void
-eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
+eng_image_scale_hint_set(void *data __UNUSED__, void *image __UNUSED__, int hint __UNUSED__)
 {
 }
 
 static int
-eng_image_scale_hint_get(void *data __UNUSED__, void *image)
+eng_image_scale_hint_get(void *data __UNUSED__, void *image __UNUSED__)
 {
    return EVAS_IMAGE_SCALE_HINT_NONE;
 }
 
 static void
+eng_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
+{
+   // XXX
+}
+
+static void *
+eng_image_map_surface_new(void *data __UNUSED__, int w, int h, int alpha)
+{
+   // XXX
+   return NULL;
+}
+
+static void
+eng_image_map_surface_free(void *data __UNUSED__, void *surface)
+{
+   // XXX
+}
+
+static void
 eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   eng_window_use(re->window);
      {
+        // FIXME: put im into context so we can free it
 	static RGBA_Image *im = NULL;
 
 	if (!im)
           im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
-        if (!im) return ;
-        evas_cache_image_surface_alloc(&im->cache_entry, re->window->width, re->window->height);
-
+        if (!im) return;
+        im->cache_entry.w = re->window->width;
+        im->cache_entry.h = re->window->height;
 	evas_common_draw_context_font_ext_set(context,
 					      re->window->gl_context,
 					      evas_gl_font_texture_new,
@@ -922,12 +1003,25 @@ eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y
      }
 }
 
+static Eina_Bool
+eng_canvas_alpha_get(void *data __UNUSED__, void *info __UNUSED__)
+{
+   // FIXME: support ARGB gl targets!!!
+   return EINA_FALSE;
+}
+
 static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   _evas_engine_GL_glew_log_dom = eina_log_domain_register("EvasGLGlew", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_GL_glew_log_dom < 0) 
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for GL (Glew) engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -935,6 +1029,7 @@ module_open(Evas_Module *em)
    ORD(info);
    ORD(info_free);
    ORD(setup);
+   ORD(canvas_alpha_get);
    ORD(output_free);
    ORD(output_resize);
    ORD(output_tile_size_set);
@@ -952,6 +1047,28 @@ module_open(Evas_Module *em)
    ORD(polygon_point_add);
    ORD(polygon_points_clear);
    ORD(polygon_draw);
+
+   ORD(gradient2_color_np_stop_insert);
+   ORD(gradient2_clear);
+   ORD(gradient2_fill_transform_set);
+   ORD(gradient2_fill_spread_set);
+   ORD(gradient2_linear_new);
+   ORD(gradient2_linear_free);
+   ORD(gradient2_linear_fill_set);
+   ORD(gradient2_linear_is_opaque);
+   ORD(gradient2_linear_is_visible);
+   ORD(gradient2_linear_render_pre);
+   ORD(gradient2_linear_render_post);
+   ORD(gradient2_linear_draw);
+   ORD(gradient2_radial_new);
+   ORD(gradient2_radial_free);
+   ORD(gradient2_radial_fill_set);
+   ORD(gradient2_radial_is_opaque);
+   ORD(gradient2_radial_is_visible);
+   ORD(gradient2_radial_render_pre);
+   ORD(gradient2_radial_render_post);
+   ORD(gradient2_radial_draw);
+
    ORD(gradient_new);
    ORD(gradient_free);
    ORD(gradient_color_stop_add);
@@ -971,6 +1088,7 @@ module_open(Evas_Module *em)
    ORD(gradient_render_pre);
    ORD(gradient_render_post);
    ORD(gradient_draw);
+
    ORD(image_load);
    ORD(image_new_from_data);
    ORD(image_new_from_copied_data);
@@ -993,11 +1111,16 @@ module_open(Evas_Module *em)
    ORD(image_colorspace_get);
    ORD(image_native_set);
    ORD(image_native_get);
+
    ORD(font_draw);
    
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
    
+   ORD(image_map4_draw);
+   ORD(image_map_surface_new);
+   ORD(image_map_surface_free);
+   
    /* now advertise out own api */
    em->functions = (void *)(&func);
    return 1;
@@ -1006,6 +1129,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_GL_glew_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/gl_glew/evas_engine.h b/src/modules/engines/gl_glew/evas_engine.h
index 8df1782..d38c4fa 100644
--- a/src/modules/engines/gl_glew/evas_engine.h
+++ b/src/modules/engines/gl_glew/evas_engine.h
@@ -1,18 +1,50 @@
 #ifndef __EVAS_ENGINE_H__
 #define __EVAS_ENGINE_H__
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <windows.h>
 
 #include "evas_gl_common.h"
+#include "Evas_Engine_GL_Glew.h"
+
+extern int _evas_engine_GL_glew_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_GL_glew_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_GL_glew_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_GL_glew_log_dom, __VA_ARGS__)
 
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_GL_glew_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_GL_glew_log_dom, __VA_ARGS__)
 
 typedef struct _Evas_GL_Glew_Window Evas_GL_Glew_Window;
 
 struct _Evas_GL_Glew_Window
 {
+#ifdef _WIN32
    HWND             window;
    HDC              dc;
    HGLRC            context;
+#endif
    int              width;
    int              height;
    int              depth;
@@ -27,21 +59,17 @@ struct _Evas_GL_Glew_Window
    } draw;
 };
 
-int evas_glew_init(HWND window, HDC *dc, HGLRC *context);
-
-void evas_glew_shutdown(HWND  window,
-                        HDC   dc,
-                        HGLRC context);
-
+#ifdef _WIN32
 Evas_GL_Glew_Window *eng_window_new(HWND window,
-                                    HDC   dc,
-                                    HGLRC context,
                                     int  depth,
                                     int  width,
                                     int  height);
+#endif
 
 void eng_window_free(Evas_GL_Glew_Window *gw);
 void eng_window_use(Evas_GL_Glew_Window *gw);
+void eng_window_swap_buffers(Evas_GL_Glew_Window *gw);
+void eng_window_vsync_set(int on);
 
 
 #endif /* __EVAS_ENGINE_H__ */
diff --git a/src/modules/engines/gl_glew/evas_glew_main.c b/src/modules/engines/gl_glew/evas_glew_main.c
index 1981719..aea7ce5 100644
--- a/src/modules/engines/gl_glew/evas_glew_main.c
+++ b/src/modules/engines/gl_glew/evas_glew_main.c
@@ -1,19 +1,30 @@
-#include "evas_common.h"
 #include "evas_engine.h"
-#include "Evas_Engine_GL_Glew.h"
 
+#ifdef HAVE_GL_GLEW_H
+# include <GL/wglew.h>
+#endif
 
 static Evas_GL_Glew_Window *_evas_gl_glew_window = NULL;
 
-int
-evas_glew_init(HWND window, HDC *dc, HGLRC *context)
+Evas_GL_Glew_Window *
+eng_window_new(HWND  window,
+               int   depth,
+               int   width,
+               int   height)
 {
    PIXELFORMATDESCRIPTOR pfd;
+   Evas_GL_Glew_Window  *gw;
    int                   format;
 
-   *dc = GetDC(window);
-   if (!*dc)
-    goto no_dc;
+   gw = calloc(1, sizeof(Evas_GL_Glew_Window));
+   if (!gw) return NULL;
+
+   gw->window = window;
+   gw->depth = depth;
+
+   gw->dc = GetDC(window);
+   if (!gw->dc)
+    goto free_window;
 
    ZeroMemory(&pfd, sizeof (pfd));
    pfd.nSize = sizeof (pfd);
@@ -24,85 +35,60 @@ evas_glew_init(HWND window, HDC *dc, HGLRC *context)
    pfd.cDepthBits = 32;
    pfd.iLayerType = PFD_MAIN_PLANE;
 
-   format = ChoosePixelFormat(*dc, &pfd);
+   format = ChoosePixelFormat(gw->dc, &pfd);
    if (!format)
-     goto no_format;
+     goto release_dc;
 
-   SetPixelFormat(*dc, format, &pfd);
+   SetPixelFormat(gw->dc, format, &pfd);
 
    if (pfd.iPixelType != PFD_TYPE_RGBA)
-     goto no_format;
+     goto release_dc;
 
-   *context = wglCreateContext(*dc);
-   if (!*context)
-     goto no_format;
+   gw->context = wglCreateContext(gw->dc);
+   if (!gw->context)
+     goto release_dc;
 
-   wglMakeCurrent(*dc, *context);
+   wglMakeCurrent(gw->dc, gw->context);
 
    if (glewInit() != GLEW_OK)
-     goto glew_init_failed;
+     goto delete_context;
 
-   if (GLEW_VERSION_2_0)
+   if (!GLEW_VERSION_2_0)
      {
-       printf ("2.0\n");
+        fprintf(stderr, "\nERROR: OpenGL 2.0 not supported. Exiting...\n\n");
+        goto delete_context;
      }
 
-   return 1;
-
- glew_init_failed:
-   wglMakeCurrent(NULL, NULL);
-   wglDeleteContext(*context);
- no_format:
-   ReleaseDC(window, *dc);
- no_dc:
-
-  return 0;
-}
-
-void
-evas_glew_shutdown(HWND  window,
-                   HDC   dc,
-                   HGLRC context)
-{
-   wglMakeCurrent(NULL, NULL);
-   wglDeleteContext(context);
-   ReleaseDC(window, dc);
-}
-
-Evas_GL_Glew_Window *
-eng_window_new(HWND  window,
-               HDC   dc,
-               HGLRC context,
-               int   depth,
-               int   width,
-               int   height)
-{
-   Evas_GL_Glew_Window *gw;
-
-   gw = calloc(1, sizeof(Evas_GL_Glew_Window));
-   if (!gw) return NULL;
-
-   gw->window = window;
-   gw->dc = dc;
-   gw->context = context;
-   gw->depth = depth;
+   _evas_gl_glew_window = gw;
 
    gw->gl_context = evas_gl_common_context_new();
    if (!gw->gl_context)
-     {
-	free(gw);
-	return NULL;
-     }
+     goto delete_context;
    evas_gl_common_context_resize(gw->gl_context, width, height);
 
    return gw;
+
+ delete_context:
+   wglMakeCurrent(NULL, NULL);
+   wglDeleteContext(gw->context);
+ release_dc:
+   ReleaseDC(window, gw->dc);
+ free_window:
+   free(gw);
+
+   return NULL;
 }
 
 void
 eng_window_free(Evas_GL_Glew_Window *gw)
 {
+   if (!gw)
+     return;
    if (gw == _evas_gl_glew_window) _evas_gl_glew_window = NULL;
    evas_gl_common_context_free(gw->gl_context);
+   wglMakeCurrent(NULL, NULL);
+   wglDeleteContext(gw->context);
+   ReleaseDC(gw->window, gw->dc);
    free(gw);
 }
 
@@ -111,8 +97,37 @@ eng_window_use(Evas_GL_Glew_Window *gw)
 {
    if (_evas_gl_glew_window != gw)
      {
-	_evas_gl_glew_window = gw;
-	wglMakeCurrent(gw->dc, gw->context);
+        if (_evas_gl_glew_window)
+          evas_gl_common_context_flush(_evas_gl_glew_window->gl_context);
+        _evas_gl_glew_window = gw;
+        wglMakeCurrent(gw->dc, gw->context);
      }
    evas_gl_common_context_use(gw->gl_context);
 }
+
+void
+eng_window_swap_buffers(Evas_GL_Glew_Window *gw)
+{
+   SwapBuffers(gw->dc);
+}
+
+void
+eng_window_vsync_set(int on)
+{
+#if 1 /* Using Glew */
+   wglSwapIntervalEXT(on);
+#else /* Using plain OpenGL */
+   const char *extensions = glGetString(GL_EXTENSIONS);
+
+   /* check if WGL_EXT_swap_control extension is supported */
+   if (strstr(extensions, "WGL_EXT_swap_control") == 0)
+     return;
+   else
+     {
+        wglSwapIntervalEXT = (PFNWGLSWAPINTERVALFARPROC)wglGetProcAddress("wglSwapIntervalEXT");
+
+        if (wglSwapIntervalEXT)
+          wglSwapIntervalEXT(on);
+     }
+#endif
+}
diff --git a/src/modules/engines/gl_x11/Makefile.in b/src/modules/engines/gl_x11/Makefile.in
index a6f7b0b..15faf0a 100644
--- a/src/modules/engines/gl_x11/Makefile.in
+++ b/src/modules/engines/gl_x11/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -308,17 +308,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -356,8 +359,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -496,7 +499,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/gl_x11/evas_engine.c b/src/modules/engines/gl_x11/evas_engine.c
index 8eb5576..b4d4b01 100644
--- a/src/modules/engines/gl_x11/evas_engine.c
+++ b/src/modules/engines/gl_x11/evas_engine.c
@@ -1,28 +1,18 @@
-#ifdef HAVE_GL_GLEW_H
-# include <GL/glxew.h>
-#else
-# include <GL/glx.h>
-#endif
-
-#include "evas_gl_common.h"
-
-#include <X11/Xlib.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-#include "evas_common.h"
-#include "evas_private.h"
 #include "evas_engine.h"
-#include "Evas_Engine_GL_X11.h"
 
+// EGL / GLES
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+# if defined(GLES_VARIETY_S3C6410)
+# elif defined(GLES_VARIETY_SGX)
+# endif
+// GLX
+#else
+#endif
 
+int _evas_engine_GL_X11_log_dom = -1;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
-static Visual *eng_best_visual_get(Display *disp, int screen);
-static Colormap eng_best_colormap_get(Display *disp, int screen);
-static int eng_best_depth_get(Display *disp, int screen);
-
 typedef struct _Render_Engine Render_Engine;
 
 struct _Render_Engine
@@ -35,9 +25,7 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_GL_X11 *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_GL_X11));
-   if (!info) return NULL;
    info->magic.magic = rand();
    info->func.best_visual_get = eng_best_visual_get;
    info->func.best_colormap_get = eng_best_colormap_get;
@@ -50,7 +38,8 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_GL_X11 *in;
-
+// dont free! why bother? its not worth it   
+//   eina_log_domain_unregister(_evas_engine_GL_X11_log_dom);
    in = (Evas_Engine_Info_GL_X11 *)info;
    free(in);
 }
@@ -65,7 +54,10 @@ eng_setup(Evas *e, void *in)
    info = (Evas_Engine_Info_GL_X11 *)in;
    if (!e->engine.data.output)
      {
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+#else        
 	if (!glXQueryExtension(info->info.display, &eb, &evb)) return 0;
+#endif
 	re = calloc(1, sizeof(Render_Engine));
 	if (!re) return 0;
 	e->engine.data.output = re;
@@ -110,12 +102,14 @@ eng_setup(Evas *e, void *in)
 				 info->info.depth,
 				 e->output.w,
 				 e->output.h);
+        
      }
    if (!e->engine.data.output) return 0;
    if (!e->engine.data.context)
      e->engine.data.context =
      e->engine.func->context_new(e->engine.data.output);
-
+   eng_window_use(re->win);
+   
    return 1;
 }
 
@@ -140,15 +134,16 @@ eng_output_resize(void *data, int w, int h)
    re = (Render_Engine *)data;
    re->win->w = w;
    re->win->h = h;
+   eng_window_use(re->win);
    evas_gl_common_context_resize(re->win->gl_context, w, h);
 }
 
 static void
 eng_output_tile_size_set(void *data, int w __UNUSED__, int h __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
 }
 
 static void
@@ -186,9 +181,9 @@ eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
 static void
 eng_output_redraws_rect_del(void *data, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
 }
 
 static void
@@ -198,7 +193,7 @@ eng_output_redraws_clear(void *data)
 
    re = (Render_Engine *)data;
    re->win->draw.redraw = 0;
-//   printf("GL: finish update cycle!\n");
+//   INF("GL: finish update cycle!");
 }
 
 /* at least the nvidia drivers are so abysmal that copying from the backbuffer
@@ -217,6 +212,7 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   evas_gl_common_context_flush(re->win->gl_context);
    /* get the upate rect surface - return engine data as dummy */
    if (!re->win->draw.redraw)
      {
@@ -251,7 +247,11 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i
    if (cw) *cw = re->win->draw.x2 - re->win->draw.x1 + 1;
    if (ch) *ch = re->win->draw.y2 - re->win->draw.y1 + 1;
 #endif
-   return re;
+// clear buffer. only needed for dest alpha
+//   glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+//   glClear(GL_COLOR_BUFFER_BIT);
+//x//   printf("frame -> new\n");
+   return re->win->gl_context->def_surface;
 }
 
 static void
@@ -261,9 +261,10 @@ eng_output_redraws_next_update_push(void *data, void *surface __UNUSED__, int x
 
    re = (Render_Engine *)data;
    /* put back update surface.. in this case just unflag redraw */
-//   printf("GL: update done.\n");
    re->win->draw.redraw = 0;
    re->win->draw.drew = 1;
+   evas_gl_common_context_flush(re->win->gl_context);
+//x//   printf("frame -> push\n");
 }
 
 static void
@@ -273,85 +274,87 @@ eng_output_flush(void *data)
 
    re = (Render_Engine *)data;
    if (!re->win->draw.drew) return;
+//x//   printf("frame -> flush\n");
    re->win->draw.drew = 0;
-//   printf("GL: flush your mush!\n");
    eng_window_use(re->win);
 
-#ifdef VSYNC_TO_SCREEN
-   glFlush();
+//   glFlush();
+# if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+   eglSwapBuffers(re->win->egl_disp, re->win->egl_surface[0]);
+#else
+# ifdef VSYNC_TO_SCREEN
      {
 	unsigned int rc;
-
+        
 	glXGetVideoSyncSGI(&rc);
 	glXWaitVideoSyncSGI(2, (rc + 1) % 2, &rc);
      }
-#endif
-#ifdef SLOW_GL_COPY_RECT
+# endif
+# ifdef SLOW_GL_COPY_RECT
    glXSwapBuffers(re->win->disp, re->win->win);
-#else
+# else
    /* SLOW AS ALL HELL! */
    evas_gl_common_swap_rect(re->win->gl_context,
 			    re->win->draw.x1, re->win->draw.y1,
 			    re->win->draw.x2 - re->win->draw.x1 + 1,
 			    re->win->draw.y2 - re->win->draw.y1 + 1);
-#endif
+# endif
 //   glFlush();
 //   glXWaitGL();
 //   XSync(re->win->disp, False);
-//   printf("SYNC! %i\n", fr++);
+#endif   
 }
 
 static void
 eng_output_idle_flush(void *data)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
 }
 
 static void
 eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-#ifndef EVAS_GL_COMMON_NOCUTOUTS
-   re->win->gl_context->dc = context;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
+//   re->win->gl_context->dc = context;
    evas_common_draw_context_add_cutout(context, x, y, w, h);
-#endif
 }
 
 static void
 eng_context_cutout_clear(void *data, void *context)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-#ifndef EVAS_GL_COMMON_NOCUTOUTS
-   re->win->gl_context->dc = context;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
+//   re->win->gl_context->dc = context;
    evas_common_draw_context_clear_cutouts(context);
-#endif
 }
 
 static void
-eng_rectangle_draw(void *data, void *context, void *surface __UNUSED__, int x, int y, int w, int h)
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
    eng_window_use(re->win);
+   evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
    re->win->gl_context->dc = context;
    evas_gl_common_rect_draw(re->win->gl_context, x, y, w, h);
 }
 
 static void
-eng_line_draw(void *data, void *context, void *surface __UNUSED__, int x1, int y1, int x2, int y2)
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
    re->win->gl_context->dc = context;
-   evas_gl_common_line_draw(re->win->gl_context, x1, y1, x2, y2);
+//-//   evas_gl_common_line_draw(re->win->gl_context, x1, y1, x2, y2);
 }
 
 static void *
@@ -360,8 +363,8 @@ eng_polygon_point_add(void *data, void *context __UNUSED__, void *polygon, int x
    Render_Engine *re;
 
    re = (Render_Engine *)data;
-   return evas_gl_common_poly_point_add(polygon, x, y);
-
+//--//      return evas_gl_common_poly_point_add(polygon, x, y);
+   return NULL;
 }
 
 static void *
@@ -370,17 +373,20 @@ eng_polygon_points_clear(void *data, void *context __UNUSED__, void *polygon)
    Render_Engine *re;
 
    re = (Render_Engine *)data;
-   return evas_gl_common_poly_points_clear(polygon);
+//--//      return evas_gl_common_poly_points_clear(polygon);
+   return NULL;
 }
 
 static void
-eng_polygon_draw(void *data, void *context, void *surface __UNUSED__, void *polygon)
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
    re->win->gl_context->dc = context;
-   evas_gl_common_poly_draw(re->win->gl_context, polygon);
+//--//      evas_gl_common_poly_draw(re->win->gl_context, polygon);
 }
 
 static void
@@ -493,85 +499,86 @@ eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void
 static void *
 eng_gradient_new(void *data __UNUSED__)
 {
-   return evas_gl_common_gradient_new();
+//--//      return evas_gl_common_gradient_new();
+   return NULL;
 }
 
 static void
 eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, int delta)
 {
-   evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+//--//      evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
 }
 
 static void
 eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient, int a, int delta)
 {
-   evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
+//--//      evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
 }
 
 static void
 eng_gradient_clear(void *data __UNUSED__, void *gradient)
 {
-   evas_gl_common_gradient_clear(gradient);
+//--//      evas_gl_common_gradient_clear(gradient);
 }
 
 static void
 eng_gradient_color_data_set(void *data __UNUSED__, void *gradient, void *map, int len, int has_alpha)
 {
-   evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
+//--//      evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
 }
 
 static void
 eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient, void *alpha_map, int len)
 {
-   evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
+//--//      evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
 }
 
 static void
 eng_gradient_free(void *data __UNUSED__, void *gradient)
 {
-   evas_gl_common_gradient_free(gradient);
+//--//      evas_gl_common_gradient_free(gradient);
 }
 
 static void
 eng_gradient_fill_set(void *data __UNUSED__, void *gradient, int x, int y, int w, int h)
 {
-   evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
+//--//      evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
 }
 
 static void
 eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient, double angle)
 {
-   evas_gl_common_gradient_fill_angle_set(gradient, angle);
+//--//      evas_gl_common_gradient_fill_angle_set(gradient, angle);
 }
 
 static void
 eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
 {
-   evas_gl_common_gradient_fill_spread_set(gradient, spread);
+//--//      evas_gl_common_gradient_fill_spread_set(gradient, spread);
 }
 
 static void
 eng_gradient_angle_set(void *data __UNUSED__, void *gradient, double angle)
 {
-   evas_gl_common_gradient_map_angle_set(gradient, angle);
+//--//      evas_gl_common_gradient_map_angle_set(gradient, angle);
 }
 
 static void
 eng_gradient_offset_set(void *data __UNUSED__, void *gradient, float offset)
 {
-   evas_gl_common_gradient_map_offset_set(gradient, offset);
+//--//      evas_gl_common_gradient_map_offset_set(gradient, offset);
 }
 
 static void
 eng_gradient_direction_set(void *data __UNUSED__, void *gradient, int direction)
 {
-   evas_gl_common_gradient_map_direction_set(gradient, direction);
+//--//      evas_gl_common_gradient_map_direction_set(gradient, direction);
 }
 
 static void
 eng_gradient_type_set(void *data __UNUSED__, void *gradient, char *name, char *params)
 {
-   evas_gl_common_gradient_type_set(gradient, name, params);
+//--//      evas_gl_common_gradient_type_set(gradient, name, params);
 }
 
 static int
@@ -580,7 +587,8 @@ eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y,
    Render_Engine *re = (Render_Engine *)data;
 
    re->win->gl_context->dc = context;
-   return evas_gl_common_gradient_is_opaque(re->win->gl_context, gradient, x, y, w, h);
+//--//      return evas_gl_common_gradient_is_opaque(re->win->gl_context, gradient, x, y, w, h);
+   return 0;
 }
 
 static int
@@ -589,7 +597,8 @@ eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y,
    Render_Engine *re = (Render_Engine *)data;
 
    re->win->gl_context->dc = context;
-   return evas_gl_common_gradient_is_visible(re->win->gl_context, gradient, x, y, w, h);
+//--//      return evas_gl_common_gradient_is_visible(re->win->gl_context, gradient, x, y, w, h);
+   return 0;
 }
 
 static void
@@ -598,13 +607,13 @@ eng_gradient_render_pre(void *data, void *context, void *gradient)
    Render_Engine *re = (Render_Engine *)data;
 
    re->win->gl_context->dc = context;
-   evas_gl_common_gradient_render_pre(re->win->gl_context, gradient);
+//--//      evas_gl_common_gradient_render_pre(re->win->gl_context, gradient);
 }
 
 static void
 eng_gradient_render_post(void *data __UNUSED__, void *gradient)
 {
-   evas_gl_common_gradient_render_post(gradient);
+//--//      evas_gl_common_gradient_render_post(gradient);
 }
 
 static void
@@ -615,16 +624,16 @@ eng_gradient_draw(void *data, void *context, void *surface __UNUSED__, void *gra
    re = (Render_Engine *)data;
    eng_window_use(re->win);
    re->win->gl_context->dc = context;
-   evas_gl_common_gradient_draw(re->win->gl_context, gradient, x, y, w, h);
+//--//      evas_gl_common_gradient_draw(re->win->gl_context, gradient, x, y, w, h);
 }
 
 static int
 eng_image_alpha_get(void *data, void *image)
 {
-   Render_Engine *re;
+//   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
+//   re = (Render_Engine *)data;
    if (!image) return 1;
    im = image;
    /* FIXME: can move to gl_common */
@@ -641,10 +650,10 @@ eng_image_alpha_get(void *data, void *image)
 static int
 eng_image_colorspace_get(void *data, void *image)
 {
-   Render_Engine *re;
+//   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
+//   re = (Render_Engine *)data;
    if (!image) return EVAS_COLORSPACE_ARGB8888;
    im = image;
    return im->cs.space;
@@ -665,15 +674,15 @@ eng_image_alpha_set(void *data, void *image, int has_alpha)
    if ((has_alpha) && (im->im->cache_entry.flags.alpha)) return image;
    else if ((!has_alpha) && (!im->im->cache_entry.flags.alpha)) return image;
    if (im->references > 1)
-    {
-	Evas_GL_Image *im_new;
-
-	im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
-							   eng_image_alpha_get(data, image),
-							   eng_image_colorspace_get(data, image));
-	if (!im_new) return im;
-	evas_gl_common_image_free(im);
-	im = im_new;
+     {
+        Evas_GL_Image *im_new;
+        
+        im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
+                                                           eng_image_alpha_get(data, image),
+                                                           eng_image_colorspace_get(data, image));
+        if (!im_new) return im;
+        evas_gl_common_image_free(im);
+        im = im_new;
      }
    else
      evas_gl_common_image_dirty(im);
@@ -684,27 +693,27 @@ eng_image_alpha_set(void *data, void *image, int has_alpha)
 static void *
 eng_image_border_set(void *data, void *image, int l __UNUSED__, int r __UNUSED__, int t __UNUSED__, int b __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
    return image;
 }
 
 static void
 eng_image_border_get(void *data, void *image __UNUSED__, int *l __UNUSED__, int *r __UNUSED__, int *t __UNUSED__, int *b __UNUSED__)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
 }
 
 static char *
 eng_image_comment_get(void *data, void *image, char *key __UNUSED__)
 {
-   Render_Engine *re;
+//   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
+//   re = (Render_Engine *)data;
    if (!image) return NULL;
    im = image;
    return im->im->info.comment;
@@ -713,10 +722,10 @@ eng_image_comment_get(void *data, void *image, char *key __UNUSED__)
 static char *
 eng_image_format_get(void *data, void *image)
 {
-   Render_Engine *re;
+//   Render_Engine *re;
    Evas_GL_Image *im;
 
-   re = (Render_Engine *)data;
+//   re = (Render_Engine *)data;
    im = image;
    return NULL;
 }
@@ -732,6 +741,7 @@ eng_image_colorspace_set(void *data, void *image, int cspace)
    im = image;
    /* FIXME: can move to gl_common */
    if (im->cs.space == cspace) return;
+   eng_window_use(re->win);
    evas_cache_image_colorspace(&im->im->cache_entry, cspace);
    switch (cspace)
      {
@@ -745,8 +755,8 @@ eng_image_colorspace_set(void *data, void *image, int cspace)
 	break;
       case EVAS_COLORSPACE_YCBCR422P601_PL:
       case EVAS_COLORSPACE_YCBCR422P709_PL:
-	if (im->tex) evas_gl_common_texture_free(im->tex);
-	im->tex = NULL;
+        if (im->tex) evas_gl_common_texture_free(im->tex);
+        im->tex = NULL;
 	if (im->cs.data)
 	  {
 	     if (!im->cs.no_free) free(im->cs.data);
@@ -817,9 +827,9 @@ eng_image_free(void *data, void *image)
 static void
 eng_image_size_get(void *data, void *image, int *w, int *h)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+//   Render_Engine *re;
+//
+//   re = (Render_Engine *)data;
    if (!image)
      {
 	*w = 0;
@@ -847,9 +857,9 @@ eng_image_size_set(void *data, void *image, int w, int h)
      return image;
    if (im_old)
      {
-	im = evas_gl_common_image_new(re->win->gl_context, w, h,
-				      eng_image_alpha_get(data, image),
-				      eng_image_colorspace_get(data, image));
+   	im = evas_gl_common_image_new(re->win->gl_context, w, h,
+   				      eng_image_alpha_get(data, image),
+   				      eng_image_colorspace_get(data, image));
 /*
 	evas_common_load_image_data_from_file(im_old->im);
 	if (im_old->im->image->data)
@@ -858,7 +868,7 @@ eng_image_size_set(void *data, void *image, int w, int h)
 	     evas_common_cpu_end_opt();
 	  }
  */
-	evas_gl_common_image_free(im_old);
+        evas_gl_common_image_free(im_old);
      }
    else
      im = evas_gl_common_image_new(re->win->gl_context, w, h, 1, EVAS_COLORSPACE_ARGB8888);
@@ -872,6 +882,7 @@ eng_image_dirty_region(void *data, void *image, int x __UNUSED__, int y __UNUSED
 
    re = (Render_Engine *)data;
    if (!image) return NULL;
+   eng_window_use(re->win);
    evas_gl_common_image_dirty(image);
    return image;
 }
@@ -900,19 +911,19 @@ eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
 	       {
 		  Evas_GL_Image *im_new;
 
-		  im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
-								     eng_image_alpha_get(data, image),
-								     eng_image_colorspace_get(data, image));
-		  if (!im_new)
-		    {
-		       *image_data = NULL;
-		       return im;
-		    }
-		  evas_gl_common_image_free(im);
-		  im = im_new;
+   		  im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
+   								     eng_image_alpha_get(data, image),
+   								     eng_image_colorspace_get(data, image));
+   		  if (!im_new)
+   		    {
+   		       *image_data = NULL;
+   		       return im;
+   		    }
+   		  evas_gl_common_image_free(im);
+   		  im = im_new;
 	       }
-	     else
-	       evas_gl_common_image_dirty(im);
+   	     else
+   	       evas_gl_common_image_dirty(im);
 	  }
 	*image_data = im->im->image.data;
 	break;
@@ -949,9 +960,9 @@ eng_image_data_put(void *data, void *image, DATA32 *image_data)
 	     im2 = eng_image_new_from_data(data, w, h, image_data,
 					   eng_image_alpha_get(data, image),
 					   eng_image_colorspace_get(data, image));
-	     if (!im2) return im;
-	     evas_gl_common_image_free(im);
-	     im = im2;
+   	     if (!im2) return im;
+   	     evas_gl_common_image_free(im);
+   	     im = im2;
 	  }
         break;
       case EVAS_COLORSPACE_YCBCR422P601_PL:
@@ -999,18 +1010,19 @@ eng_image_data_preload_cancel(void *data __UNUSED__, void *image, const void *ta
 }
 
 static void
-eng_image_draw(void *data, void *context, void *surface __UNUSED__, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
    if (!image) return;
    eng_window_use(re->win);
+   evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
    re->win->gl_context->dc = context;
    evas_gl_common_image_draw(re->win->gl_context, image,
-			     src_x, src_y, src_w, src_h,
-			     dst_x, dst_y, dst_w, dst_h,
-			     smooth);
+                             src_x, src_y, src_w, src_h,
+                             dst_x, dst_y, dst_w, dst_h,
+                             smooth);
 }
 
 static void
@@ -1018,6 +1030,33 @@ eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
 {
 }
 
+static void
+eng_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
+{
+   Render_Engine *re;
+   
+   re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
+   re->win->gl_context->dc = context;
+   evas_gl_common_image_map4_draw(re->win->gl_context, image, p, smooth, level);
+}
+
+static void *
+eng_image_map_surface_new(void *data __UNUSED__, int w, int h, int alpha)
+{
+   Render_Engine *re;
+   
+   re = (Render_Engine *)data;
+   return evas_gl_common_image_surface_new(re->win->gl_context, w, h, alpha);
+}
+
+static void
+eng_image_map_surface_free(void *data __UNUSED__, void *surface)
+{
+   evas_gl_common_image_free(surface);
+}
+
 static int
 eng_image_scale_hint_get(void *data __UNUSED__, void *image)
 {
@@ -1025,23 +1064,27 @@ eng_image_scale_hint_get(void *data __UNUSED__, void *image)
 }
 
 static void
-eng_font_draw(void *data, void *context, void *surface __UNUSED__, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const char *text)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const char *text)
 {
    Render_Engine *re;
 
    re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
+   re->win->gl_context->dc = context;
      {
+        // FIXME: put im into context so we can free it
 	static RGBA_Image *im = NULL;
-
-	if (!im)
-          im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
-        evas_cache_image_surface_alloc(&im->cache_entry, re->win->w, re->win->h);
-
-	evas_common_draw_context_font_ext_set(context,
-					      re->win->gl_context,
-					      evas_gl_font_texture_new,
-					      evas_gl_font_texture_free,
-					      evas_gl_font_texture_draw);
+        
+        if (!im)
+          im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
+        im->cache_entry.w = re->win->w;
+        im->cache_entry.h = re->win->h;
+        evas_common_draw_context_font_ext_set(context,
+   					      re->win->gl_context,
+   					      evas_gl_font_texture_new,
+   					      evas_gl_font_texture_free,
+   					      evas_gl_font_texture_draw);
 	evas_common_font_draw(im, context, font, x, y, text);
 	evas_common_draw_context_font_ext_set(context,
 					      NULL,
@@ -1051,39 +1094,11 @@ eng_font_draw(void *data, void *context, void *surface __UNUSED__, void *font, i
      }
 }
 
-/* private engine functions the calling prog can use */
-
-static Visual *
-eng_best_visual_get(Display *disp, int screen)
+static Eina_Bool
+eng_canvas_alpha_get(void *data __UNUSED__, void *info __UNUSED__)
 {
-   if (!disp) return NULL;
-   if (!_evas_gl_x11_vi)
-     _evas_gl_x11_vi = glXChooseVisual(disp, screen,
-				       _evas_gl_x11_configuration);
-   if (!_evas_gl_x11_vi) return NULL;
-   return _evas_gl_x11_vi->visual;
-}
-
-static Colormap
-eng_best_colormap_get(Display *disp, int screen)
-{
-   if (!disp) return 0;
-   if (!_evas_gl_x11_vi)
-     eng_best_visual_get(disp, screen);
-   if (!_evas_gl_x11_vi) return 0;
-   _evas_gl_x11_cmap = XCreateColormap(disp, RootWindow(disp, screen),
-				_evas_gl_x11_vi->visual, 0);
-   return _evas_gl_x11_cmap;
-}
-
-static int
-eng_best_depth_get(Display *disp, int screen)
-{
-   if (!disp) return 0;
-   if (!_evas_gl_x11_vi)
-     eng_best_visual_get(disp, screen);
-   if (!_evas_gl_x11_vi) return 0;
-   return _evas_gl_x11_vi->depth;
+   // FIXME: support ARGB gl targets!!!
+   return EINA_FALSE;
 }
 
 static int
@@ -1092,6 +1107,13 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   if (_evas_engine_GL_X11_log_dom < 0)
+     _evas_engine_GL_X11_log_dom = eina_log_domain_register("EvasEngineGLX11", EVAS_DEFAULT_LOG_COLOR);
+   if (_evas_engine_GL_X11_log_dom < 0)
+     {
+        EINA_LOG_ERR("Impossible to create a log domain for GL X11 engine.\n");
+        return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -1099,6 +1121,7 @@ module_open(Evas_Module *em)
    ORD(info);
    ORD(info_free);
    ORD(setup);
+   ORD(canvas_alpha_get);
    ORD(output_free);
    ORD(output_resize);
    ORD(output_tile_size_set);
@@ -1184,6 +1207,10 @@ module_open(Evas_Module *em)
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
    
+   ORD(image_map4_draw);
+   ORD(image_map_surface_new);
+   ORD(image_map_surface_free);
+   
    /* now advertise out own api */
    em->functions = (void *)(&func);
    return 1;
@@ -1192,6 +1219,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+    eina_log_domain_unregister(_evas_engine_GL_X11_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/gl_x11/evas_engine.h b/src/modules/engines/gl_x11/evas_engine.h
index 6968ddb..734c0ab 100644
--- a/src/modules/engines/gl_x11/evas_engine.h
+++ b/src/modules/engines/gl_x11/evas_engine.h
@@ -1,11 +1,77 @@
 #ifndef EVAS_ENGINE_H
 #define EVAS_ENGINE_H
 
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
+#include "config.h"
+#ifdef HAVE_GL_GLEW_H
+# include <GL/glxew.h>
+#else
+# if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+#  if defined(GLES_VARIETY_S3C6410)
+#   include <EGL/egl.h>
+#   include <GLES2/gl2.h>
+#   include <X11/Xlib.h>
+#   include <X11/Xatom.h>
+#   include <X11/Xutil.h>
+#   include <X11/extensions/Xrender.h>
+//// this changed. this was the old style. above the new style
+//#   include <EGL/egl.h>
+//#   include <GLES/gl.h>
+//#   include <X11/Xlib.h>
+//#   include <X11/Xatom.h>
+//#   include <X11/Xutil.h>
+//#   include <X11/extensions/Xrender.h>
+#  elif defined(GLES_VARIETY_SGX)
+#   define SUPPORT_X11 1
+#   include <EGL/egl.h>
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#   include <X11/Xlib.h>
+#   include <X11/Xatom.h>
+#   include <X11/Xutil.h>
+#   include <X11/extensions/Xrender.h>
+#  endif
+# else
+#  include <GL/glx.h>
+#  include <X11/Xlib.h>
+#  include <X11/Xatom.h>
+#  include <X11/Xutil.h>
+#  include <X11/extensions/Xrender.h>
+#  include <GL/gl.h>
+#  include <GL/glext.h>
+#  include <GL/glx.h>
+# endif
+#endif
+#include "evas_common.h"
+#include "evas_private.h"
 #include "evas_gl_common.h"
+#include "Evas.h"
+#include "Evas_Engine_GL_X11.h"
+
+extern int _evas_engine_GL_X11_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_GL_X11_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_GL_X11_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_GL_X11_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_GL_X11_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_GL_X11_log_dom, __VA_ARGS__)
 
 typedef struct _Evas_GL_X11_Window Evas_GL_X11_Window;
 
@@ -19,31 +85,30 @@ struct _Evas_GL_X11_Window
    Visual          *visual;
    Colormap         colormap;
    int              depth;
-   GLXContext       context;
    Evas_GL_Context *gl_context;
    struct {
       int              redraw : 1;
       int              drew : 1;
       int              x1, y1, x2, y2;
    } draw;
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+   EGLContext       egl_context[1];
+   EGLSurface       egl_surface[1];
+   EGLConfig        egl_config;
+   EGLDisplay       egl_disp;
+#else   
+   GLXContext       context;
+#endif
+
 };
 
-extern int          _evas_gl_x11_configuration[9];
-extern XVisualInfo *_evas_gl_x11_vi;
-extern Colormap     _evas_gl_x11_cmap;
-
-Evas_GL_X11_Window *
-  eng_window_new(Display *disp,
-		 Window   win,
-		 int      screen,
-		 Visual  *vis,
-		 Colormap cmap,
-		 int      depth,
-		 int      w,
-		 int      h);
-void
-  eng_window_free(Evas_GL_X11_Window *gw);
-void
-  eng_window_use(Evas_GL_X11_Window *gw);
+Evas_GL_X11_Window *eng_window_new(Display *disp, Window win, int screen,
+                                   Visual *vis, Colormap cmap,
+                                   int depth, int w, int h);
+void      eng_window_free(Evas_GL_X11_Window *gw);
+void      eng_window_use(Evas_GL_X11_Window *gw);
+Visual   *eng_best_visual_get(Display *disp, int screen);
+Colormap  eng_best_colormap_get(Display *disp, int screen);
+int       eng_best_depth_get(Display *disp, int screen);
 
 #endif
diff --git a/src/modules/engines/gl_x11/evas_x_main.c b/src/modules/engines/gl_x11/evas_x_main.c
index bccd783..901cecf 100644
--- a/src/modules/engines/gl_x11/evas_x_main.c
+++ b/src/modules/engines/gl_x11/evas_x_main.c
@@ -1,29 +1,13 @@
-#include "evas_gl_common.h"
-
-#include <X11/Xlib.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <GL/glx.h>
-
-#include "evas_common.h"
-#include "evas_private.h"
 #include "evas_engine.h"
-#include "Evas_Engine_GL_X11.h"
 
 static Evas_GL_X11_Window *_evas_gl_x11_window = NULL;
 
-/* FIXME: this will only work for 1 display connection... :( */
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+static EGLContext context = EGL_NO_CONTEXT;
+#else
+// FIXME: this will only work for 1 display connection (glx land can have > 1)
 static GLXContext context = 0;
-
-int _evas_gl_x11_configuration[9] =
-{
-   GLX_DOUBLEBUFFER,
-     GLX_RGBA,
-     GLX_RED_SIZE,   1,
-     GLX_GREEN_SIZE, 1,
-     GLX_BLUE_SIZE,  1,
-     None
-};
+#endif
 
 XVisualInfo *_evas_gl_x11_vi = NULL;
 Colormap     _evas_gl_x11_cmap = 0;
@@ -39,8 +23,13 @@ eng_window_new(Display *disp,
 	       int      h)
 {
    Evas_GL_X11_Window *gw;
-
+   int context_attrs[3];
+   int config_attrs[20];
+   int major_version, minor_version;
+   int num_config;
+   
    if (!_evas_gl_x11_vi) return NULL;
+   
    gw = calloc(1, sizeof(Evas_GL_X11_Window));
    if (!gw) return NULL;
    gw->disp = disp;
@@ -51,17 +40,120 @@ eng_window_new(Display *disp,
    gw->depth = depth;
 
    gw->visualinfo = _evas_gl_x11_vi;
+
+// EGL / GLES
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+   context_attrs[0] = EGL_CONTEXT_CLIENT_VERSION;
+   context_attrs[1] = 2;
+   context_attrs[2] = EGL_NONE;
+# if defined(GLES_VARIETY_S3C6410)
+   if (_evas_gl_x11_vi->depth == 16) // 16bpp
+     {
+        config_attrs[0] = EGL_SURFACE_TYPE;
+        config_attrs[1] = EGL_WINDOW_BIT;
+        config_attrs[2] = EGL_RENDERABLE_TYPE;
+        config_attrs[3] = EGL_OPENGL_ES2_BIT;
+        config_attrs[4] = EGL_RED_SIZE;
+        config_attrs[5] = 5;
+        config_attrs[6] = EGL_GREEN_SIZE;
+        config_attrs[7] = 6;
+        config_attrs[8] = EGL_BLUE_SIZE;
+        config_attrs[9] = 5;
+        config_attrs[10] = EGL_DEPTH_SIZE;
+        config_attrs[11] = 16;
+        config_attrs[12] = EGL_NONE;
+     }
+   else // 24/32bit. no one does 8bpp anymore. and 15bpp... dead
+     {
+        config_attrs[0] = EGL_SURFACE_TYPE;
+        config_attrs[1] = EGL_WINDOW_BIT;
+        config_attrs[2] = EGL_RENDERABLE_TYPE;
+        config_attrs[3] = EGL_OPENGL_ES2_BIT;
+        config_attrs[4] = EGL_RED_SIZE;
+        config_attrs[5] = 8;
+        config_attrs[6] = EGL_GREEN_SIZE;
+        config_attrs[7] = 8;
+        config_attrs[8] = EGL_BLUE_SIZE;
+        config_attrs[9] = 8;
+        config_attrs[10] = EGL_DEPTH_SIZE;
+        config_attrs[11] = 24;
+        config_attrs[12] = EGL_NONE;
+     }
+# elif defined(GLES_VARIETY_SGX)
+   context_attrs[0] = EGL_CONTEXT_CLIENT_VERSION;
+   context_attrs[1] = 2;
+   context_attrs[2] = EGL_NONE;
+   
+   config_attrs[0] = EGL_SURFACE_TYPE;
+   config_attrs[1] = EGL_WINDOW_BIT;
+   config_attrs[2] = EGL_RENDERABLE_TYPE;
+   config_attrs[3] = EGL_OPENGL_ES2_BIT;
+   config_attrs[4] = EGL_NONE;
+# endif
+   gw->egl_disp= eglGetDisplay((EGLNativeDisplayType)(gw->disp));
+   if (!gw->egl_disp)
+     {
+        printf("Error: eglGetDisplay() fail.\n");
+     }
+   if (!eglInitialize(gw->egl_disp, &major_version, &minor_version))
+     {
+        printf("Error: eglInitialize() fail.\n");
+     }
+   eglBindAPI(EGL_OPENGL_ES_API);
+   if (eglGetError() != EGL_SUCCESS)
+     {
+        printf("Error: eglBindAPI() fail.\n");
+     }
+   if (!eglChooseConfig(gw->egl_disp, config_attrs, &gw->egl_config,
+                        1, &num_config) || (num_config != 1))
+     {
+        printf("Error: eglChooseConfig() fail.\n");
+     }
+   gw->egl_surface[0] = eglCreateWindowSurface(gw->egl_disp, gw->egl_config,
+                                               (EGLNativeWindowType)gw->win,
+                                               NULL);
+   if (gw->egl_surface[0] == EGL_NO_SURFACE)
+     {
+        printf("Error: eglCreateWindowSurface() fail.\n", gw->win);
+     }
+   if (context == EGL_NO_CONTEXT)
+     context = eglCreateContext(gw->egl_disp, gw->egl_config, NULL, 
+                                context_attrs);
+   gw->egl_context[0] = context;
+   if (gw->egl_context[0] == EGL_NO_CONTEXT)
+     {
+        printf("Error: eglCreateContext() fail.\n");
+     }
+   if (eglMakeCurrent(gw->egl_disp, 
+                      gw->egl_surface[0], 
+                      gw->egl_surface[0],
+                      gw->egl_context[0]) == EGL_FALSE)
+     {
+        printf("Error: eglMakeCurrent() fail.\n");
+     }
+// GLX   
+#else
+
+#if 1
    if (!context)
      context = glXCreateContext(disp, gw->visualinfo, NULL, GL_TRUE);
    gw->context = context;
+#else   
+   gw->context = glXCreateContext(disp, gw->visualinfo, context, GL_TRUE);
+   if (!context) context = gw->context;
+#endif   
+   
    glXMakeCurrent(gw->disp, gw->win, gw->context);
+#endif
+   _evas_gl_x11_window = gw;
+   
    gw->gl_context = evas_gl_common_context_new();
    if (!gw->gl_context)
      {
-	glXDestroyContext(gw->disp, gw->context);
 	free(gw);
 	return NULL;
      }
+   evas_gl_common_context_use(gw->gl_context);
    evas_gl_common_context_resize(gw->gl_context, w, h);
    return gw;
 }
@@ -71,7 +163,13 @@ eng_window_free(Evas_GL_X11_Window *gw)
 {
    if (gw == _evas_gl_x11_window) _evas_gl_x11_window = NULL;
    evas_gl_common_context_free(gw->gl_context);
-//   glXDestroyContext(gw->disp, gw->context);
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+   if (gw->egl_surface[0] != EGL_NO_SURFACE)
+     eglDestroySurface(gw->egl_disp, gw->egl_surface[0]);
+#else
+   // FIXME: refcount context   
+   //   glXDestroyContext(gw->disp, gw->context);
+#endif
    free(gw);
 }
 
@@ -80,8 +178,125 @@ eng_window_use(Evas_GL_X11_Window *gw)
 {
    if (_evas_gl_x11_window != gw)
      {
+        if (_evas_gl_x11_window)
+          evas_gl_common_context_flush(_evas_gl_x11_window->gl_context);
 	_evas_gl_x11_window = gw;
-	glXMakeCurrent(gw->disp, gw->win, gw->context);
+// EGL / GLES
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+        if (eglMakeCurrent(gw->egl_disp, 
+                           gw->egl_surface[0], 
+                           gw->egl_surface[0],
+                           gw->egl_context[0]) == EGL_FALSE)
+          {
+             printf("Error: eglMakeCurrent() failed!\n");
+          }
+// GLX        
+#else
+        glXMakeCurrent(gw->disp, gw->win, gw->context);
+#endif
      }
    evas_gl_common_context_use(gw->gl_context);
 }
+
+Visual *
+eng_best_visual_get(Display *disp, int screen)
+{
+   if (!disp) return NULL;
+   if (!_evas_gl_x11_vi)
+     {
+// EGL / GLES
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+        int depth = DefaultDepth(disp, screen);
+        _evas_gl_x11_vi = calloc(1, sizeof(XVisualInfo));
+        XMatchVisualInfo(disp, screen, depth, TrueColor, _evas_gl_x11_vi);
+// GLX
+#else
+
+#if 0 // use this if we want alpha
+        int config_attrs[20];
+        GLXFBConfig *configs = NULL, config = 0;
+        int i, num;
+        
+        config_attrs[0] = GLX_DRAWABLE_TYPE;
+        config_attrs[1] = GLX_WINDOW_BIT;
+        config_attrs[2] = GLX_DOUBLEBUFFER;
+        config_attrs[3] = 1;
+        config_attrs[4] = GLX_RED_SIZE;
+        config_attrs[5] = 1;
+        config_attrs[6] = GLX_GREEN_SIZE;
+        config_attrs[7] = 1;
+        config_attrs[8] = GLX_BLUE_SIZE;
+        config_attrs[9] = 1;
+        config_attrs[10] = None;
+        
+        // if rgba
+        config_attrs[10] = GLX_ALPHA_SIZE;
+        config_attrs[11] = 1;
+        config_attrs[12] = GLX_RENDER_TYPE;
+        config_attrs[13] = GLX_RGBA_BIT;
+        config_attrs[14] = None;
+        
+        configs = glXChooseFBConfig(disp, 0, config_attrs, &num);
+        for (i = 0; i < num; i++)
+          {
+             XVisualInfo *visinfo;
+             XRenderPictFormat *format;
+             
+             visinfo = glXGetVisualFromFBConfig(disp, configs[i]);
+             if (!visinfo) continue;
+             format = XRenderFindVisualFormat(disp, visinfo->visual);
+             if (!format) continue;
+             
+             if (format->direct.alphaMask > 0)
+               {
+                  config = configs[i];
+                  _evas_gl_x11_vi = visinfo;
+                  break;
+               }
+             XFree(visinfo);
+          }
+#else   
+        int _evas_gl_x11_configuration[] =
+          {
+             GLX_RGBA, GLX_DOUBLEBUFFER,
+               GLX_LEVEL, 0,
+               GLX_DEPTH_SIZE, 0,
+               GLX_RED_SIZE, 1,
+               GLX_GREEN_SIZE,1,
+               GLX_BLUE_SIZE, 1,
+               None
+          };
+        _evas_gl_x11_vi = glXChooseVisual(disp, screen,
+                                          _evas_gl_x11_configuration);
+#endif
+        
+#endif
+     }
+   if (!_evas_gl_x11_vi) return NULL;
+   return _evas_gl_x11_vi->visual;
+}
+
+Colormap
+eng_best_colormap_get(Display *disp, int screen)
+{
+   if (!disp) return 0;
+   if (!_evas_gl_x11_vi) eng_best_visual_get(disp, screen);
+   if (!_evas_gl_x11_vi) return 0;
+   if (!_evas_gl_x11_cmap)
+     {
+        _evas_gl_x11_cmap = XCreateColormap(disp, 
+                                            RootWindow(disp, screen),
+                                            _evas_gl_x11_vi->visual, 
+                                            0);
+     }
+   return _evas_gl_x11_cmap;
+}
+                                 
+int
+eng_best_depth_get(Display *disp, int screen)
+{
+   if (!disp) return 0;
+   if (!_evas_gl_x11_vi) eng_best_visual_get(disp, screen);
+   if (!_evas_gl_x11_vi) return 0;
+   return _evas_gl_x11_vi->depth;
+}
diff --git a/src/modules/engines/quartz/Makefile.in b/src/modules/engines/quartz/Makefile.in
index 3715df9..0eae2c1 100644
--- a/src/modules/engines/quartz/Makefile.in
+++ b/src/modules/engines/quartz/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -305,17 +305,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -352,8 +355,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -483,7 +486,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/quartz/evas_engine.c b/src/modules/engines/quartz/evas_engine.c
index 5637702..1f46338 100644
--- a/src/modules/engines/quartz/evas_engine.c
+++ b/src/modules/engines/quartz/evas_engine.c
@@ -8,7 +8,7 @@
 #include "evas_engine.h"
 #include "Evas_Engine_Quartz.h"
 #include "evas_quartz_private.h"
-
+int _evas_engine_quartz_log_dom = -1;
 static Evas_Func func;
 
 typedef struct _Render_Engine Render_Engine;
@@ -40,12 +40,10 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_Quartz *info;
-
+   
    info = calloc(1, sizeof(Evas_Engine_Info_Quartz));
    if (!info) return NULL;
-
    info->magic.magic = rand();
-
    return info;
 }
 
@@ -686,15 +684,15 @@ eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int
    RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
    Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
 
-   printf("#Gradient#\n");
-   printf("Fill: %i %i %i %i\n", gr->grad->fill.x, gr->grad->fill.y, gr->grad->fill.w, gr->grad->fill.h);
-   printf("Type: %s %s\n", gr->grad->type.name, gr->grad->type.params);
-   printf("XYWH: %i %i %i %i\n", x, y, w, h);
-   printf("Geom: %p %p\n", gr->grad->type.geometer, gr->grad->type.geometer->get_fill_func);
-   printf("Map: len: %d angle: %f direction: %d offset: %f\n", gr->grad->map.len, gr->grad->map.angle, gr->grad->map.direction, gr->grad->map.offset);
-   printf("Color: nstops: %d len: %d\n", gr->grad->color.nstops, gr->grad->color.len);
-   printf("Alpha: nstops: %d len: %d\n", gr->grad->alpha.nstops, gr->grad->alpha.len);
-   printf("\n");
+   INF("#Gradient#");
+   INF("Fill: %i %i %i %i", gr->grad->fill.x, gr->grad->fill.y, gr->grad->fill.w, gr->grad->fill.h);
+   INF("Type: %s %s", gr->grad->type.name, gr->grad->type.params);
+   INF("XYWH: %i %i %i %i", x, y, w, h);
+   INF("Geom: %p %p", gr->grad->type.geometer, gr->grad->type.geometer->get_fill_func);
+   INF("Map: len: %d angle: %f direction: %d offset: %f", gr->grad->map.len, gr->grad->map.angle, gr->grad->map.direction, gr->grad->map.offset);
+   INF("Color: nstops: %d len: %d", gr->grad->color.nstops, gr->grad->color.len);
+   INF("Alpha: nstops: %d len: %d", gr->grad->alpha.nstops, gr->grad->alpha.len);
+   INF("");
 
    if ((gr->sw != w) || (gr->sh != h))
       gr->changed = 1;
@@ -799,6 +797,24 @@ eng_image_free(void *data, void *image)
    free(im);
 }
 
+static void
+eng_image_data_preload_request(void *data __UNUSED__, void *image, const void *target)
+{
+   Evas_Quartz_Image *im = (Evas_Quartz_Image *)image;
+
+   if (!im && !im->im) return ;
+   evas_cache_image_preload_data(&im->im->cache_entry, target);
+}
+
+static void
+eng_image_data_preload_cancel(void *data __UNUSED__, void *image, const void *target)
+{
+   Evas_Quartz_Image *im = (Evas_Quartz_Image *)image;
+
+   if (!im && !im->im) return ;
+   evas_cache_image_preload_cancel(&im->im->cache_entry, target);
+}
+
 static void *
 eng_image_size_set(void *data, void *image, int w, int h)
 {
@@ -1416,7 +1432,16 @@ static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
+
    if (!_evas_module_engine_inherit(&func, "software_generic")) return 0;
+
+   _evas_engine_quartz_log_dom = eina_log_domain_register("EvasQuartz", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_quartz_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Quartz engine.\n");
+       return 0;
+     }
+
    #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
    ORD(context_anti_alias_get);
    ORD(context_anti_alias_set);
@@ -1475,6 +1500,8 @@ module_open(Evas_Module *em)
    ORD(image_comment_get);
    ORD(image_data_get);
    ORD(image_data_put);
+   ORD(image_data_preload_request);
+   ORD(image_data_preload_cancel);
    ORD(image_dirty_region);
    ORD(image_draw);
    ORD(image_format_get);
@@ -1505,7 +1532,10 @@ module_open(Evas_Module *em)
 
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
-   
+
+//   ORD(image_map4_draw);
+//   ORD(image_map_surface_new);
+//   ORD(image_map_surface_free);
    /* now advertise out our api */
    em->functions = (void *)(&func);
    return 1;
@@ -1514,7 +1544,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
-
+   eina_log_domain_unregister(_evas_engine_quartz_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/quartz/evas_engine.h b/src/modules/engines/quartz/evas_engine.h
index cb43373..a32e232 100644
--- a/src/modules/engines/quartz/evas_engine.h
+++ b/src/modules/engines/quartz/evas_engine.h
@@ -3,6 +3,33 @@
 
 #include <ApplicationServices/ApplicationServices.h>
 
+/* log domain variable declared in evas_engine.c */
+extern int _evas_engine_quartz_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_quartz_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_quartz_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_quartz_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_quartz_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_quartz_log_dom, __VA_ARGS__)
+
 typedef struct _Evas_Quartz_Context Evas_Quartz_Context;
 
 struct _Evas_Quartz_Context
diff --git a/src/modules/engines/quartz/evas_quartz_private.h b/src/modules/engines/quartz/evas_quartz_private.h
index 6f26172..67e26fc 100644
--- a/src/modules/engines/quartz/evas_quartz_private.h
+++ b/src/modules/engines/quartz/evas_quartz_private.h
@@ -103,7 +103,4 @@ static void eng_font_draw(void *data, void *context, void *surface, void *font,
 static void eng_font_hinting_set(void *data, void *font, int hinting);
 static int eng_font_hinting_can_hint(void *data, int hinting);
 
-EAPI int module_open(Evas_Module *em);
-EAPI void module_close(void);
-
 #endif /* _EVAS_QUARTZ_PRIVATE_H_ */
diff --git a/src/modules/engines/software_16/Makefile.in b/src/modules/engines/software_16/Makefile.in
index 29c39d5..66de689 100644
--- a/src/modules/engines/software_16/Makefile.in
+++ b/src/modules/engines/software_16/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -300,17 +300,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -344,8 +347,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -458,7 +461,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_16/evas_engine.c b/src/modules/engines/software_16/evas_engine.c
index 25c8867..3fa448d 100644
--- a/src/modules/engines/software_16/evas_engine.c
+++ b/src/modules/engines/software_16/evas_engine.c
@@ -1,5 +1,4 @@
 #include "evas_common.h"
-#include "evas_private.h"
 #include "evas_common_soft16.h"
 
 /*
@@ -9,9 +8,34 @@
  **
  *****
  */
+int _evas_soft16_log_dom = -1;
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR( _evas_soft16_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_soft16_log_dom, __VA_ARGS__)
+
+#ifdef INF
+#undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_soft16_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+#undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_soft16_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+#undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_soft16_log_dom, __VA_ARGS__)
 
 #define NOT_IMPLEMENTED()                                               \
-   fprintf(stderr, "NOT_IMPLEMENTED: %s() at %s:%d\n",                  \
+  WRN("NOT_IMPLEMENTED: %s() at %s:%d",				\
            __FUNCTION__, __FILE__, __LINE__)
 
 static void *
@@ -509,7 +533,7 @@ eng_image_new_from_data(void *data __UNUSED__, int w, int h, DATA32 *image_data,
 {
    if ((image_data) && (cspace != EVAS_COLORSPACE_RGB565_A5P))
      {
-	fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+	WRN("Unsupported colorspace %d in %s() (%s:%d)",
 		cspace, __FUNCTION__, __FILE__, __LINE__);
 	return NULL;
      }
@@ -521,7 +545,7 @@ eng_image_new_from_copied_data(void *data __UNUSED__, int w, int h, DATA32 *imag
 {
    if ((image_data) && (cspace != EVAS_COLORSPACE_RGB565_A5P))
      {
-	fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+	WRN("Unsupported colorspace %d in %s() (%s:%d)",
 		cspace, __FUNCTION__, __FILE__, __LINE__);
 	return NULL;
      }
@@ -648,12 +672,12 @@ eng_image_draw(void *data __UNUSED__, void *context, void *surface, void *image,
 }
 
 static void
-eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
+eng_image_scale_hint_set(void *data __UNUSED__, void *image __UNUSED__, int hint __UNUSED__)
 {
 }
 
 static int
-eng_image_scale_hint_get(void *data __UNUSED__, void *image)
+eng_image_scale_hint_get(void *data __UNUSED__, void *image __UNUSED__)
 {
    return EVAS_IMAGE_SCALE_HINT_NONE;
 }
@@ -772,6 +796,12 @@ eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const char *text,
    return evas_common_font_query_text_at_pos(font, text, x, y, cx, cy, cw, ch);
 }
 
+static int
+eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const char *text, int x, int y)
+{
+   return evas_common_font_query_last_up_to_pos(font, text, x, y);
+}
+
 static void
 eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const char *text)
 {
@@ -978,7 +1008,13 @@ static Evas_Func func =
      eng_font_hinting_set,
      eng_font_hinting_can_hint,
      eng_image_scale_hint_set,
-     eng_image_scale_hint_get
+     eng_image_scale_hint_get,
+     /* more font draw functions */
+     eng_font_last_up_to_pos
+     /* FUTURE software generic calls go here */
+//   ORD(image_map4_draw);
+//   ORD(image_map_surface_new);
+//   ORD(image_map_surface_free);
      /* FUTURE software generic calls go here */
 };
 
@@ -994,13 +1030,21 @@ static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
+   _evas_soft16_log_dom = eina_log_domain_register("Soft16Engine", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_soft16_log_dom < 0) 
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the soft16 Engine.\n");
+       return 0;
+     }
    em->functions = (void *)(&func);
+   
    return 1;
 }
 
 static void
 module_close(Evas_Module *em)
 {
+   eina_log_domain_unregister(_evas_soft16_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_16_ddraw/Makefile.am b/src/modules/engines/software_16_ddraw/Makefile.am
index f752ab7..321227c 100644
--- a/src/modules/engines/software_16_ddraw/Makefile.am
+++ b/src/modules/engines/software_16_ddraw/Makefile.am
@@ -31,7 +31,7 @@ pkg_LTLIBRARIES	= module.la
 module_la_SOURCES = $(SOFTWARE_16_DDRAW_SOURCES)
 module_la_CXXFLAGS = -fno-rtti -fno-exceptions
 module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_16_DDRAW_LIBADD)
-module_la_LDFLAGS = -no-undefined -module -avoid-version
+module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
 else
diff --git a/src/modules/engines/software_16_ddraw/Makefile.in b/src/modules/engines/software_16_ddraw/Makefile.in
index 58c7064..16f2ee0 100644
--- a/src/modules/engines/software_16_ddraw/Makefile.in
+++ b/src/modules/engines/software_16_ddraw/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -323,17 +323,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -360,7 +363,7 @@ AM_CPPFLAGS = \
 @BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE at module_la_SOURCES = $(SOFTWARE_16_DDRAW_SOURCES)
 @BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE at module_la_CXXFLAGS = -fno-rtti -fno-exceptions
 @BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE at module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_16_DDRAW_LIBADD)
- at BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE at module_la_LDFLAGS = -no-undefined -module -avoid-version
+ at BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE at module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 @BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_FALSE at module_la_LIBTOOLFLAGS = --tag=disable-static
 @BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE at noinst_LTLIBRARIES = libevas_engine_software_16_ddraw.la
 @BUILD_ENGINE_SOFTWARE_16_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW_TRUE at libevas_engine_software_16_ddraw_la_SOURCES = $(SOFTWARE_16_DDRAW_SOURCES)
@@ -374,8 +377,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -544,7 +547,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_16_ddraw/evas_engine.c b/src/modules/engines/software_16_ddraw/evas_engine.c
index 1e9a1b9..6e2abb0 100644
--- a/src/modules/engines/software_16_ddraw/evas_engine.c
+++ b/src/modules/engines/software_16_ddraw/evas_engine.c
@@ -4,6 +4,7 @@
 #include "Evas_Engine_Software_16_DDraw.h"
 #include "evas_common_soft16.h"
 
+int _evas_engine_soft16_ddraw_log_dom = -1;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -50,7 +51,6 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_Software_16_DDraw *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_Software_16_DDraw));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -62,7 +62,6 @@ static void
 eng_info_free(Evas *e, void *info)
 {
    Evas_Engine_Info_Software_16_DDraw *in;
-
    in = (Evas_Engine_Info_Software_16_DDraw *)info;
    free(in);
 }
@@ -575,6 +574,12 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   _evas_engine_soft16_ddraw_log_dom = eina_log_domain_register("EvasSoft16DDraw",EINA_COLOR_BLUE);
+   if(_evas_engine_soft16_ddraw_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for Soft16_DDraw engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -601,6 +606,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_soft16_ddraw_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_16_ddraw/evas_engine.h b/src/modules/engines/software_16_ddraw/evas_engine.h
index 8307ad8..fe85e97 100644
--- a/src/modules/engines/software_16_ddraw/evas_engine.h
+++ b/src/modules/engines/software_16_ddraw/evas_engine.h
@@ -1,12 +1,37 @@
 #ifndef __EVAS_ENGINE_H__
 #define __EVAS_ENGINE_H__
 
-
 #include <windows.h>
 #include <ddraw.h>
 
 #include "evas_common_soft16.h"
 
+extern int _evas_engine_soft16_ddraw_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft16_ddraw_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft16_ddraw_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft16_ddraw_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft16_ddraw_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft16_ddraw_log_dom, __VA_ARGS__)
+
 typedef struct _DDraw_Output_Buffer       DDraw_Output_Buffer;
 
 struct _DDraw_Output_Buffer
diff --git a/src/modules/engines/software_16_sdl/Makefile.in b/src/modules/engines/software_16_sdl/Makefile.in
index 012c726..07cd898 100644
--- a/src/modules/engines/software_16_sdl/Makefile.in
+++ b/src/modules/engines/software_16_sdl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -304,17 +304,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -347,8 +350,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -470,7 +473,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_16_sdl/evas_engine.c b/src/modules/engines/software_16_sdl/evas_engine.c
index 6828f6a..f215769 100644
--- a/src/modules/engines/software_16_sdl/evas_engine.c
+++ b/src/modules/engines/software_16_sdl/evas_engine.c
@@ -5,7 +5,9 @@
 #include <time.h>
 #include <SDL/SDL.h>
 
+#include "evas_common.h"
 #include "evas_engine.h"
+int _evas_engine_soft16_sdl_log_dom = -1;
 
 /* function tables - filled in later (func and parent func) */
 static Evas_Func        func = {};
@@ -64,7 +66,6 @@ static void *
 evas_engine_sdl16_info(Evas *e __UNUSED__)
 {
    Evas_Engine_Info_SDL_16      *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_SDL_16));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -75,7 +76,6 @@ static void
 evas_engine_sdl16_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_SDL_16 *in;
-
    in = (Evas_Engine_Info_SDL_16 *)info;
    free(in);
 }
@@ -143,7 +143,7 @@ _sdl16_output_setup(int w, int h, int rotation, int fullscreen, int noframe, int
    re->cache = evas_cache_engine_image_init(&_sdl16_cache_engine_image_cb, evas_common_soft16_image_cache_get());
    if (!re->cache)
      {
-        fprintf(stderr, "Evas_Cache_Engine_Image allocation failed!\n");
+        ERR("Evas_Cache_Engine_Image allocation failed!");
         free(re);
         return NULL;
      }
@@ -169,7 +169,7 @@ _sdl16_output_setup(int w, int h, int rotation, int fullscreen, int noframe, int
                               | (noframe ? SDL_NOFRAME : 0));
    if (!surface)
      {
-        fprintf(stderr, "SDL_SetVideoMode [ %i x %i x 16 ] failed\n", w, h);
+        ERR("SDL_SetVideoMode [ %i x %i x 16 ] failed", w, h);
         evas_cache_engine_image_shutdown(re->cache);
         free(re);
         return NULL;
@@ -181,7 +181,7 @@ _sdl16_output_setup(int w, int h, int rotation, int fullscreen, int noframe, int
    re->soft16_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
    if (!re->soft16_engine_image)
      {
-        fprintf(stderr, "Soft16_Image allocation from SDL failed\n");
+        ERR("Soft16_Image allocation from SDL failed");
         evas_cache_engine_image_shutdown(re->cache);
         free(re);
         return NULL;
@@ -203,7 +203,7 @@ evas_engine_sdl16_setup(Evas *e, void *in)
 
    if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
      {
-        fprintf(stderr, "SDL_Init failed with %s\n", SDL_GetError());
+        ERR("SDL_Init failed with %s", SDL_GetError());
         SDL_Quit();
         return 0;
      }
@@ -262,13 +262,13 @@ evas_engine_sdl16_output_resize(void *data, int w, int h)
                               | (re->flags.noframe ? SDL_NOFRAME : 0));
    if (!surface)
      {
-        fprintf(stderr, "Unable to change the resolution to : %ix%i\n", w, h);
+        ERR("Unable to change the resolution to : %ix%i", w, h);
         exit(-1);
      }
    re->soft16_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
    if (!re->soft16_engine_image)
      {
-	fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
+	ERR("RGBA_Image allocation from SDL failed");
 	exit(-1);
      }
 
@@ -611,12 +611,12 @@ evas_engine_sdl16_image_new_from_copied_data(void *data,
 
    if (cspace != EVAS_COLORSPACE_RGB565_A5P)
      {
-        fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+        WRN("Unsupported colorspace %d in %s() (%s:%d)",
                 cspace, __FUNCTION__, __FILE__, __LINE__);
         return NULL;
      }
 
-   fprintf(stderr, "s image_data: %p\n", image_data);
+   WRN("s image_data: %p", image_data);
 
    return evas_cache_engine_image_copied_data(re->cache,
                                               w, h,
@@ -631,7 +631,7 @@ evas_engine_sdl16_image_new_from_data(void *data, int w, int h, DATA32* image_da
 
    if (cspace != EVAS_COLORSPACE_RGB565_A5P)
      {
-        fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+        WRN("Unsupported colorspace %d in %s() (%s:%d)",
                 cspace, __FUNCTION__, __FILE__, __LINE__);
         return NULL;
      }
@@ -820,6 +820,11 @@ evas_engine_sdl16_image_draw(void *data __UNUSED__, void *context, void *surface
 }
 
 static void
+evas_engine_sdl16_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
+{
+}
+
+static void
 evas_engine_sdl16_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
 {
 }
@@ -1029,6 +1034,13 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   _evas_engine_soft16_sdl_log_dom = eina_log_domain_register("EvasSoft16SDL",EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_soft16_sdl_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Soft16_SDL engine.\n");
+       return 0;
+     }
+
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -1065,6 +1077,7 @@ module_open(Evas_Module *em)
    ORD(image_border_set);
    ORD(image_border_get);
    ORD(image_draw);
+   ORD(image_map4_draw);
    ORD(image_cache_flush);
    ORD(image_cache_set);
    ORD(image_cache_get);
@@ -1087,6 +1100,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_soft16_sdl_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_16_sdl/evas_engine.h b/src/modules/engines/software_16_sdl/evas_engine.h
index 03a1e36..a1b0ee0 100644
--- a/src/modules/engines/software_16_sdl/evas_engine.h
+++ b/src/modules/engines/software_16_sdl/evas_engine.h
@@ -5,6 +5,31 @@
 #include "evas_private.h"
 #include "evas_common_soft16.h"
 #include "Evas_Engine_SDL_16.h"
+extern int _evas_engine_soft16_sdl_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft16_sdl_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft16_sdl_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft16_sdl_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft16_sdl_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft16_sdl_log_dom, __VA_ARGS__)
 
 typedef struct _SDL_Engine_Image_Entry SDL_Engine_Image_Entry;
 struct _SDL_Engine_Image_Entry
diff --git a/src/modules/engines/software_16_wince/Makefile.in b/src/modules/engines/software_16_wince/Makefile.in
index 1dd530b..3441580 100644
--- a/src/modules/engines/software_16_wince/Makefile.in
+++ b/src/modules/engines/software_16_wince/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -329,17 +329,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -383,8 +386,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -571,7 +574,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_16_wince/evas_engine.c b/src/modules/engines/software_16_wince/evas_engine.c
index 8e78aea..94e1f7b 100644
--- a/src/modules/engines/software_16_wince/evas_engine.c
+++ b/src/modules/engines/software_16_wince/evas_engine.c
@@ -4,6 +4,7 @@
 #include "Evas_Engine_Software_16_WinCE.h"
 #include "evas_common_soft16.h"
 
+int _evas_engine_soft16_wince_log_dom = -1;
 
 typedef enum
 {
@@ -89,7 +90,6 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_Software_16_WinCE *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_Software_16_WinCE));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -103,7 +103,6 @@ static void
 eng_info_free(Evas *e, void *info)
 {
    Evas_Engine_Info_Software_16_WinCE *in;
-
    in = (Evas_Engine_Info_Software_16_WinCE *)info;
    free(in);
 }
@@ -716,6 +715,14 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   _evas_engine_soft16_wince_log_dom = eina_log_domain_register("EvasSoft16Wince", EVAS_DEFAULT_LOG_COLOR);
+   
+   if(_evas_engine_soft16_wince_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Soft16 Wince engine.\n");
+       return NULL;
+     }
+
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -742,6 +749,8 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_soft16_wince_log_dom);
+  return NULL;
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_16_wince/evas_engine.h b/src/modules/engines/software_16_wince/evas_engine.h
index a11d512..344e7b9 100644
--- a/src/modules/engines/software_16_wince/evas_engine.h
+++ b/src/modules/engines/software_16_wince/evas_engine.h
@@ -1,13 +1,37 @@
 #ifndef __EVAS_ENGINE_H__
 #define __EVAS_ENGINE_H__
 
-
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
-
+#include "evas_common.h"
 #include "evas_common_soft16.h"
 
+extern int _evas_engine_soft16_wince_log_dom;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft16_wince_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft16_wince_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft16_wince_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft16_wince_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft16_wince_log_dom, __VA_ARGS__)
 
 typedef struct _FB_Output_Buffer FB_Output_Buffer;
 
diff --git a/src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp b/src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp
index 4c6663d..944ed53 100644
--- a/src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp
+++ b/src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp
@@ -38,32 +38,32 @@ evas_software_wince_ddraw_init(HWND window,
    priv = (Evas_Engine_WinCE_DDraw_Priv *)malloc(sizeof(Evas_Engine_WinCE_DDraw_Priv));
    if (!priv)
      return NULL;
-
+   
    priv->module = LoadLibrary(L"ddraw.dll");
    if (!priv->module)
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Can not load ddraw.dll\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] Can not load ddraw.dll\n");
         goto free_priv;
      }
 
    lib_DirectDrawCreate = (fct_DirectDrawCreate)GetProcAddress(priv->module, L"DirectDrawCreate");
    if (!lib_DirectDrawCreate)
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Can not initialize DirectDraw\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] Can not initialize DirectDraw\n");
         goto free_lib;
      }
 
    res = lib_DirectDrawCreate(NULL, (IUnknown**)&priv->object, NULL);
    if (FAILED(res))
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Can not create DirectDraw object\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] Can not create DirectDraw object\n");
         goto free_lib;
      }
 
    res = priv->object->SetCooperativeLevel(window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
    if (FAILED(res))
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Can not set window to fullscreen\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] Can not set window to fullscreen\n");
         goto release_object;
      }
 
@@ -75,7 +75,7 @@ evas_software_wince_ddraw_init(HWND window,
    res = priv->object->CreateSurface(&surface_desc, &priv->surface, NULL);
    if (FAILED(res))
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Can not create surface\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] Can not create surface\n");
         goto release_object;
      }
 
@@ -95,16 +95,16 @@ evas_software_wince_ddraw_init(HWND window,
    if ((priv->width != width) ||
        (priv->height != height))
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Size mismatch\n");
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] asked : %dx%d\n", width, height);
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] got   : %dx%d\n", priv->width, priv->height);
+        fprintf(stderr, "[Engine] [WinCE DDraw] Size mismatch\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] asked : %dx%d\n", width, height);
+        fprintf(stderr, "[Engine] [WinCE DDraw] got   : %dx%d\n", priv->width, priv->height);
         goto release_surface;
      }
 
    res = priv->surface->Unlock(NULL);
    if (FAILED(res))
      {
-        fprintf(stderr, "[Evas] [Engine] [WinCE DDraw] Can not unlock surface\n");
+        fprintf(stderr, "[Engine] [WinCE DDraw] Can not unlock surface\n");
         goto release_surface;
      }
 
diff --git a/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c b/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c
index 165e752..d97231b 100644
--- a/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c
+++ b/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c
@@ -51,7 +51,7 @@ _evas_software_wince_gxinfo_init(HDC dc, int *width, int *height, void **buffer)
                       (char *) &gxInfo);
    if (result <= 0)
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE FB] ExtEscape() with GETGXINFO failed\n");
+        ERR("[Engine] [WinCE FB] ExtEscape() with GETGXINFO failed\n");
         return 0;
      }
 
@@ -79,7 +79,7 @@ evas_software_wince_fb_init(HWND window,
    dc = GetDC (window);
    if (!dc)
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE FB] Can not get DC\n");
+        ERR("[Engine] [WinCE FB] Can not get DC\n");
         free(priv);
         return NULL;
      }
@@ -102,9 +102,9 @@ evas_software_wince_fb_init(HWND window,
        if ((priv->width != width) ||
            (priv->height != height))
          {
-            fprintf (stderr, "[Evas] [Engine] [WinCE FB] Size mismatch\n");
-            fprintf (stderr, "[Evas] [Engine] [WinCE FB] asked: %dx%d\n", width, height);
-            fprintf (stderr, "[Evas] [Engine] [WinCE FB] got  : %dx%d\n", priv->width, priv->height);
+            ERR("[Engine] [WinCE FB] Size mismatch\n");
+            ERR("[Engine] [WinCE FB] asked: %dx%d\n", width, height);
+            ERR("[Engine] [WinCE FB] got  : %dx%d\n", priv->width, priv->height);
             ReleaseDC(window, dc);
             free(priv);
             return NULL;
@@ -119,8 +119,8 @@ evas_software_wince_fb_init(HWND window,
        (rfbi.wBPP != 16) ||
        (rfbi.wFormat != 1))
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE FB] ExtEscape() with GETRAWFRAMEBUFFER failed\n");
-        fprintf (stderr, "[Evas] [Engine] [WinCE FB] trying ExtEscape() with GETGXINFO\n");
+        ERR("[Engine] [WinCE FB] ExtEscape() with GETRAWFRAMEBUFFER failed\n");
+        ERR("[Engine] [WinCE FB] trying ExtEscape() with GETGXINFO\n");
         if (!_evas_software_wince_gxinfo_init(dc, &priv->width, &priv->height, &priv->buffer))
           {
              ReleaseDC(window, dc);
@@ -139,9 +139,9 @@ evas_software_wince_fb_init(HWND window,
   if ((priv->width != width) ||
       (priv->height != height))
     {
-       fprintf (stderr, "[Evas] [Engine] [WinCE FB] Size mismatch\n");
-       fprintf (stderr, "[Evas] [Engine] [WinCE FB] asked: %dx%d\n", width, height);
-       fprintf (stderr, "[Evas] [Engine] [WinCE FB] got  : %dx%d\n", priv->width, priv->height);
+       ERR("[Engine] [WinCE FB] Size mismatch\n");
+       ERR("[Engine] [WinCE FB] asked: %dx%d\n", width, height);
+       ERR("[Engine] [WinCE FB] got  : %dx%d\n", priv->width, priv->height);
        ReleaseDC(window, dc);
        free(priv);
        return NULL;
diff --git a/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c b/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c
index 486b095..5e46ab1 100644
--- a/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c
+++ b/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c
@@ -110,7 +110,7 @@ evas_software_wince_gapi_init(HWND window,
         gapi_lib = LoadLibrary(L"gx.dll");
         if (!gapi_lib)
           {
-             fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not load gx.dll\n");
+             ERR("[Engine] [WinCE GAPI] Can not load gx.dll");
              goto free_priv;
           }
      }
@@ -131,13 +131,13 @@ evas_software_wince_gapi_init(HWND window,
        !suspend ||
        !resume)
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not find valid symbols\n");
+	ERR("[Engine] [WinCE GAPI] Can not find valid symbols");
         goto free_lib;
      }
 
    if (!display_open(window, GX_FULLSCREEN))
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not open display\n");
+	ERR("[Engine] [WinCE GAPI] Can not open display");
         goto free_lib;
      }
 
@@ -146,7 +146,7 @@ evas_software_wince_gapi_init(HWND window,
    // verify pixel format
    if(!(prop.ffFormat & kfDirect565) || (prop.cBPP != 16))
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] display format mismatch\n");
+        ERR("[Engine] [WinCE GAPI] display format mismatch\n");
         goto close_display;
      }
 
@@ -154,7 +154,7 @@ evas_software_wince_gapi_init(HWND window,
    if ((GetSystemMetrics(SM_CXSCREEN) != (int)prop.cxWidth) ||
        (GetSystemMetrics(SM_CYSCREEN) != (int)prop.cyHeight))
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] display size mismatch\n");
+        ERR("[Engine] [WinCE GAPI] display size mismatch\n");
         goto close_display;
      }
 
@@ -221,7 +221,7 @@ v |         |
         dc = GetDC (window);
         if (!dc)
           {
-             fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not get device\n");
+             ERR("[Engine] [WinCE GAPI] Can not get device\n");
              goto close_display;
           }
 
@@ -230,7 +230,7 @@ v |         |
                            (char *) &gxInfo);
         if (result <= 0)
           {
-             fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] ExtEscape failed\n");
+             ERR("[Engine] [WinCE GAPI] ExtEscape failed\n");
              ReleaseDC(window, dc);
              goto close_display;
           }
@@ -249,9 +249,9 @@ v |         |
    if ((priv->width != width) ||
        (priv->height != height))
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Size mismatch\n");
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] asked: %dx%d\n", width, height);
-        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] got  : %dx%d\n", priv->width, priv->height);
+        ERR("[Engine] [WinCE GAPI] Size mismatch\n");
+        ERR("[Engine] [WinCE GAPI] asked: %dx%d\n", width, height);
+        ERR("[Engine] [WinCE GAPI] got  : %dx%d\n", priv->width, priv->height);
         goto close_display;
      }
 
diff --git a/src/modules/engines/software_16_wince/evas_wince_gdi_buffer.c b/src/modules/engines/software_16_wince/evas_wince_gdi_buffer.c
index e935c7b..4d609f2 100644
--- a/src/modules/engines/software_16_wince/evas_wince_gdi_buffer.c
+++ b/src/modules/engines/software_16_wince/evas_wince_gdi_buffer.c
@@ -37,7 +37,7 @@ evas_software_wince_gdi_init(HWND window,
    priv->dc = GetDC(window);
    if (!priv->dc)
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GDI] Can not get DC\n");
+        ERR("[Engine] [WinCE GDI] Can not get DC\n");
         free(priv);
         return NULL;
      }
@@ -56,7 +56,7 @@ evas_software_wince_gdi_init(HWND window,
    priv->bitmap_info = (BITMAPINFO_16bpp *)malloc(sizeof(BITMAPINFO_16bpp));
    if (!priv->bitmap_info)
      {
-        fprintf (stderr, "[Evas] [Engine] [WinCE GDI] Can not allocate bitmap info\n");
+        ERR("[Engine] [WinCE GDI] Can not allocate bitmap info\n");
         ReleaseDC(window, priv->dc);
         free(priv);
         return NULL;
@@ -144,7 +144,7 @@ evas_software_wince_gdi_output_buffer_paste(FB_Output_Buffer *fbob)
    if ((fbob->im->cache_entry.w == priv->width) &&
        (fbob->im->cache_entry.h == priv->height))
      {
-        HDC     dc;
+        HDC dc;
 
         dc = CreateCompatibleDC(priv->dc);
         SelectObject(dc, priv->bitmap);
diff --git a/src/modules/engines/software_16_x11/Makefile.in b/src/modules/engines/software_16_x11/Makefile.in
index ac2ecb3..9a30fee 100644
--- a/src/modules/engines/software_16_x11/Makefile.in
+++ b/src/modules/engines/software_16_x11/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -310,17 +310,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -359,8 +362,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -499,7 +502,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_16_x11/evas_engine.c b/src/modules/engines/software_16_x11/evas_engine.c
index 6028b80..f4460d1 100644
--- a/src/modules/engines/software_16_x11/evas_engine.c
+++ b/src/modules/engines/software_16_x11/evas_engine.c
@@ -4,6 +4,7 @@
 #include "Evas_Engine_Software_16_X11.h"
 #include "evas_common_soft16.h"
 
+int _evas_engine_soft16_x11_log_dom = -1;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -47,7 +48,7 @@ static void *
 eng_info(Evas *e)
 {
    Evas_Engine_Info_Software_16_X11 *info;
-
+   
    info = calloc(1, sizeof(Evas_Engine_Info_Software_16_X11));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -59,7 +60,6 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_Software_16_X11 *in;
-
    in = (Evas_Engine_Info_Software_16_X11 *)info;
    free(in);
 }
@@ -459,7 +459,7 @@ static void
 eng_output_redraws_next_update_push(void *data, void *surface __UNUSED__, int x, int y, int w, int h)
 {
    Render_Engine *re;
-   XRectangle r;
+   XRectangle r = { 0, 0, 0, 0 };
 
    re = (Render_Engine *)data;
 
@@ -543,7 +543,7 @@ eng_output_idle_flush(void *data)
 }
 
 static Eina_Bool
-eng_canvas_alpha_get(void *data, void *context)
+eng_canvas_alpha_get(void *data __UNUSED__, void *context __UNUSED__)
 {
    return EINA_FALSE;
 }
@@ -555,6 +555,13 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   _evas_engine_soft16_x11_log_dom = eina_log_domain_register("EvasSoft16X11", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_soft16_x11_log_dom < 0) 
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Soft16_X11 engine.\n");
+       return 0;
+     }
+
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -581,6 +588,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_soft16_x11_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_16_x11/evas_engine.h b/src/modules/engines/software_16_x11/evas_engine.h
index 7150126..3aef165 100644
--- a/src/modules/engines/software_16_x11/evas_engine.h
+++ b/src/modules/engines/software_16_x11/evas_engine.h
@@ -7,9 +7,35 @@
 #include <X11/extensions/XShm.h>
 #include <sys/ipc.h>
 #include <sys/shm.h>
-
+#include "evas_common.h"
 #include "evas_common_soft16.h"
 
+extern int _evas_engine_soft16_x11_log_dom;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft16_x11_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft16_x11_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft16_x11_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft16_x11_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft16_x11_log_dom, __VA_ARGS__)
+
 typedef struct _X_Output_Buffer       X_Output_Buffer;
 
 struct _X_Output_Buffer
diff --git a/src/modules/engines/software_ddraw/Makefile.am b/src/modules/engines/software_ddraw/Makefile.am
index 751f50a..5a3a266 100644
--- a/src/modules/engines/software_ddraw/Makefile.am
+++ b/src/modules/engines/software_ddraw/Makefile.am
@@ -30,7 +30,7 @@ pkg_LTLIBRARIES = module.la
 module_la_SOURCES = $(SOFTWARE_DDRAW_SOURCES)
 module_la_CXXFLAGS = -fno-rtti -fno-exceptions
 module_la_LIBADD = @EINA_LIBS@ $(SOFTWARE_DDRAW_LIBADD) $(top_builddir)/src/lib/libevas.la
-module_la_LDFLAGS = -no-undefined -module -avoid-version
+module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
 else
diff --git a/src/modules/engines/software_ddraw/Makefile.in b/src/modules/engines/software_ddraw/Makefile.in
index bb434ff..4770cbc 100644
--- a/src/modules/engines/software_ddraw/Makefile.in
+++ b/src/modules/engines/software_ddraw/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -324,17 +324,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -361,7 +364,7 @@ AM_CPPFLAGS = \
 @BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE at module_la_SOURCES = $(SOFTWARE_DDRAW_SOURCES)
 @BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE at module_la_CXXFLAGS = -fno-rtti -fno-exceptions
 @BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE at module_la_LIBADD = @EINA_LIBS@ $(SOFTWARE_DDRAW_LIBADD) $(top_builddir)/src/lib/libevas.la
- at BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE at module_la_LDFLAGS = -no-undefined -module -avoid-version
+ at BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE at module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 @BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_FALSE at module_la_LIBTOOLFLAGS = --tag=disable-static
 @BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE at noinst_LTLIBRARIES = libevas_engine_software_ddraw.la
 @BUILD_ENGINE_SOFTWARE_DDRAW_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE at libevas_engine_software_ddraw_la_SOURCES = $(SOFTWARE_DDRAW_SOURCES)
@@ -375,8 +378,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -554,7 +557,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_ddraw/evas_engine.c b/src/modules/engines/software_ddraw/evas_engine.c
index c9340c9..17573fb 100644
--- a/src/modules/engines/software_ddraw/evas_engine.c
+++ b/src/modules/engines/software_ddraw/evas_engine.c
@@ -3,6 +3,7 @@
 #include "evas_engine.h"
 #include "Evas_Engine_Software_DDraw.h"
 
+int _evas_engine_soft_ddraw_log_dom = -1;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -19,6 +20,10 @@ struct _Render_Engine
 };
 
 
+/* log domain variable */
+int _evas_log_dom_module = -1;
+
+
 static void *
 _output_setup(int  width,
               int  height,
@@ -100,7 +105,6 @@ static void
 eng_info_free(Evas *e, void *info)
 {
    Evas_Engine_Info_Software_DDraw *in;
-
    in = (Evas_Engine_Info_Software_DDraw *)info;
    free(in);
 }
@@ -322,6 +326,12 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   _evas_log_dom_module = eina_log_domain_register("Software_DDraw", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_log_dom_module < 0)
+     {
+       EINA_LOG_ERR("Can not create a module log domain.");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -348,6 +358,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_log_dom_module);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_ddraw/evas_engine.h b/src/modules/engines/software_ddraw/evas_engine.h
index 52cc96a..2f59170 100644
--- a/src/modules/engines/software_ddraw/evas_engine.h
+++ b/src/modules/engines/software_ddraw/evas_engine.h
@@ -85,6 +85,32 @@ struct _DD_Output_Buffer
    int   psize;
 };
 
+extern int _evas_log_dom_module;
+
+#ifdef EVAS_DEFAULT_LOG_COLOR
+# undef EVAS_DEFAULT_LOG_COLOR
+#endif
+#define EVAS_DEFAULT_LOG_COLOR EINA_COLOR_CYAN
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_log_dom_module, __VA_ARGS__)
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_log_dom_module, __VA_ARGS__)
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_log_dom_module, __VA_ARGS__)
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_log_dom_module, __VA_ARGS__)
+#ifdef CRT
+# undef CRT
+#endif
+#define CRT(...) EINA_LOG_DOM_CRIT(_evas_log_dom_module, __VA_ARGS__)
 
 /* evas_outbuf.c */
 
diff --git a/src/modules/engines/software_ddraw/evas_outbuf.c b/src/modules/engines/software_ddraw/evas_outbuf.c
index 9c2daf5..ce45907 100644
--- a/src/modules/engines/software_ddraw/evas_outbuf.c
+++ b/src/modules/engines/software_ddraw/evas_outbuf.c
@@ -160,16 +160,16 @@ evas_software_ddraw_outbuf_setup(int          width,
 
            if (!conv_func)
              {
-                fprintf(stderr, ".[ Evas Error ].\n"
-                        " {\n"
-                        "  At depth         %i:\n"
-                        "  RGB format mask: %08x, %08x, %08x\n"
-                        "  Not supported by and compiled in converters!\n"
-                        " }\n",
-                        buf->priv.dd.depth,
-                        buf->priv.mask.r,
-                        buf->priv.mask.g,
-                        buf->priv.mask.b);
+                ERR("DDraw engine Error"
+                    " {"
+                    "  At depth         %i:"
+                    "  RGB format mask: %08x, %08x, %08x"
+                    "  Not supported by and compiled in converters!"
+                    " }",
+                    buf->priv.dd.depth,
+                    buf->priv.mask.r,
+                    buf->priv.mask.g,
+                    buf->priv.mask.b);
              }
         }
    }
diff --git a/src/modules/engines/software_gdi/Makefile.am b/src/modules/engines/software_gdi/Makefile.am
index 943d418..35c4bc8 100644
--- a/src/modules/engines/software_gdi/Makefile.am
+++ b/src/modules/engines/software_gdi/Makefile.am
@@ -29,7 +29,7 @@ if !EVAS_STATIC_BUILD_SOFTWARE_GDI
 pkg_LTLIBRARIES = module.la
 module_la_SOURCES = $(SOFTWARE_GDI_SOURCES)
 module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_GDI_LIBADD)
-module_la_LDFLAGS = -no-undefined -module -avoid-version
+module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
 else
diff --git a/src/modules/engines/software_gdi/Makefile.in b/src/modules/engines/software_gdi/Makefile.in
index 7f6a1ce..615663d 100644
--- a/src/modules/engines/software_gdi/Makefile.in
+++ b/src/modules/engines/software_gdi/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -315,17 +315,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -351,7 +354,7 @@ AM_CPPFLAGS = \
 @BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE at pkg_LTLIBRARIES = module.la
 @BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE at module_la_SOURCES = $(SOFTWARE_GDI_SOURCES)
 @BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE at module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_GDI_LIBADD)
- at BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE at module_la_LDFLAGS = -no-undefined -module -avoid-version
+ at BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE at module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 @BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_FALSE at module_la_LIBTOOLFLAGS = --tag=disable-static
 @BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE at noinst_LTLIBRARIES = libevas_engine_software_gdi.la
 @BUILD_ENGINE_SOFTWARE_GDI_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_GDI_TRUE at libevas_engine_software_gdi_la_SOURCES = $(SOFTWARE_GDI_SOURCES)
@@ -365,8 +368,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -523,7 +526,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_gdi/evas_engine.c b/src/modules/engines/software_gdi/evas_engine.c
index b494634..e1f7237 100644
--- a/src/modules/engines/software_gdi/evas_engine.c
+++ b/src/modules/engines/software_gdi/evas_engine.c
@@ -3,6 +3,7 @@
 #include "evas_engine.h"
 #include "Evas_Engine_Software_Gdi.h"
 
+int _evas_engine_soft_gdi_log_dom = -1;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -96,7 +97,6 @@ static void *
 eng_info(Evas *e __UNUSED__)
 {
    Evas_Engine_Info_Software_Gdi *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_Software_Gdi));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -107,7 +107,6 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_Software_Gdi *in;
-
    in = (Evas_Engine_Info_Software_Gdi *)info;
    free(in);
 }
@@ -147,11 +146,13 @@ eng_setup(Evas *e, void *in)
                                                 0, 0);
 	re->ob->onebuf = ponebuf;
      }
-   if (!e->engine.data.output) return;
+   if (!e->engine.data.output) return 0;
    if (!e->engine.data.context)
      e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
 
    re = e->engine.data.output;
+
+   return 1;
 }
 
 static void
@@ -332,6 +333,13 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+
+   _evas_engine_soft_gdi_log_dom = eina_log_domain_register("EvasSoftGDI",EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_soft_gdi_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Soft_GDI engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -358,6 +366,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_engine_soft_gdi_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_gdi/evas_engine.h b/src/modules/engines/software_gdi/evas_engine.h
index 551c52b..7816597 100644
--- a/src/modules/engines/software_gdi/evas_engine.h
+++ b/src/modules/engines/software_gdi/evas_engine.h
@@ -6,6 +6,32 @@
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
 
+extern int _evas_engine_soft_gdi_log_dom;
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft_gdi_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft_gdi_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft_gdi_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft_gdi_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft_gdi_log_dom, __VA_ARGS__)
 
 typedef enum _Outbuf_Depth Outbuf_Depth;
 
diff --git a/src/modules/engines/software_gdi/evas_gdi_main.c b/src/modules/engines/software_gdi/evas_gdi_main.c
index 0a793a7..edd7201 100644
--- a/src/modules/engines/software_gdi/evas_gdi_main.c
+++ b/src/modules/engines/software_gdi/evas_gdi_main.c
@@ -15,7 +15,7 @@ evas_software_gdi_init (HWND         window,
 
    if (!window)
      {
-        fprintf (stderr, "[Evas] [Engine] [GDI] Window is NULL\n");
+        ERR("[Engine] [GDI] Window is NULL");
         return 0;
      }
 
@@ -24,14 +24,14 @@ evas_software_gdi_init (HWND         window,
    buf->priv.gdi.dc = GetDC(window);
    if (!buf->priv.gdi.dc)
      {
-        fprintf (stderr, "[Evas] [Engine] [GDI] Can not get DC\n");
+        ERR("[Engine] [GDI] Can not get DC");
         return 0;
      }
 
    /* FIXME: check depth */
    if (depth != GetDeviceCaps(buf->priv.gdi.dc, BITSPIXEL))
      {
-        fprintf (stderr, "[Evas] [Engine] [GDI] no compatible depth\n");
+        ERR("[Engine] [GDI] no compatible depth");
         ReleaseDC(window, buf->priv.gdi.dc);
         return 0;
      }
@@ -58,7 +58,7 @@ evas_software_gdi_init (HWND         window,
    buf->priv.gdi.bitmap_info = (BITMAPINFO_GDI *)malloc(sizeof(BITMAPINFO_GDI));
    if (!buf->priv.gdi.bitmap_info)
      {
-        fprintf (stderr, "[Evas] [Engine] [GDI] Can not allocate bitmap info\n");
+        ERR("[Engine] [GDI] Can not allocate bitmap info");
         ReleaseDC(window, buf->priv.gdi.dc);
         return 0;
      }
@@ -88,7 +88,7 @@ evas_software_gdi_init (HWND         window,
          buf->priv.gdi.bitmap_info->masks[2] = 0x000000ff;
          break;
       default:
-        fprintf (stderr, "[Evas] [Engine] [GDI] wrong depth\n");
+        ERR("[Engine] [GDI] wrong depth");
         free(buf->priv.gdi.bitmap_info);
         ReleaseDC(window, buf->priv.gdi.dc);
         return 0;
diff --git a/src/modules/engines/software_gdi/evas_outbuf.c b/src/modules/engines/software_gdi/evas_outbuf.c
index 9c9fe92..09a2546 100644
--- a/src/modules/engines/software_gdi/evas_outbuf.c
+++ b/src/modules/engines/software_gdi/evas_outbuf.c
@@ -193,12 +193,12 @@ evas_software_gdi_outbuf_setup(int          width,
 
            if (!conv_func)
              {
-                fprintf(stderr, ".[ Evas Error ].\n"
-                        " {\n"
-                        "  At depth         %i:\n"
-                        "  RGB format mask: %08lx, %08lx, %08lx\n"
-                        "  Not supported by and compiled in converters!\n"
-                        " }\n",
+                ERR(".[ soft_gdi engine Error ]."
+                      " {"
+                      "  At depth         %i:"
+                      "  RGB format mask: %08lx, %08lx, %08lx"
+                      "  Not supported by and compiled in converters!"
+                      " }",
                         buf->priv.gdi.depth,
                         buf->priv.gdi.bitmap_info->masks[0],
                         buf->priv.gdi.bitmap_info->masks[1],
diff --git a/src/modules/engines/software_generic/Makefile.in b/src/modules/engines/software_generic/Makefile.in
index 3563425..ca6db0d 100644
--- a/src/modules/engines/software_generic/Makefile.in
+++ b/src/modules/engines/software_generic/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -301,17 +301,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -342,8 +345,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -456,7 +459,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_generic/evas_engine.c b/src/modules/engines/software_generic/evas_engine.c
index 2816dfb..fc2c9af 100644
--- a/src/modules/engines/software_generic/evas_engine.c
+++ b/src/modules/engines/software_generic/evas_engine.c
@@ -8,9 +8,8 @@
  **
  *****
  */
-
 static int cpunum = 0;
-
+static int _evas_soft_gen_log_dom = -1;
 static void *
 eng_context_new(void *data __UNUSED__)
 {
@@ -778,6 +777,35 @@ eng_image_draw(void *data __UNUSED__, void *context, void *surface, void *image,
 }
 
 static void
+eng_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
+{
+   RGBA_Image *im;
+
+   if (!image) return;
+   im = image;
+   evas_common_map4_rgba(im, surface, context, p, smooth, level);
+   evas_common_cpu_end_opt();
+}
+
+static void *
+eng_image_map_surface_new(void *data __UNUSED__, int w, int h, int alpha)
+{
+   void *surface;
+   DATA32 *pixels;
+   surface = evas_cache_image_copied_data(evas_common_image_cache_get(), 
+                                          w, h, NULL, alpha, 
+                                          EVAS_COLORSPACE_ARGB8888);
+   pixels = evas_cache_image_pixels(surface);
+   return surface;
+}
+
+static void
+eng_image_map_surface_free(void *data __UNUSED__, void *surface)
+{
+   evas_cache_image_drop(surface);
+}
+
+static void
 eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
 {
    Image_Entry *im;
@@ -917,6 +945,12 @@ eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const char *text,
    return evas_common_font_query_text_at_pos(font, text, x, y, cx, cy, cw, ch);
 }
 
+static int
+eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const char *text, int x, int y)
+{
+   return evas_common_font_query_last_up_to_pos(font, text, x, y);
+}
+
 static void
 eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const char *text)
 {
@@ -1115,7 +1149,13 @@ static Evas_Func func =
      eng_font_hinting_set,
      eng_font_hinting_can_hint,
      eng_image_scale_hint_set,
-     eng_image_scale_hint_get
+     eng_image_scale_hint_get,
+     /* more font draw functions */
+     eng_font_last_up_to_pos,
+     /* FUTURE software generic calls go here (done) */
+     eng_image_map4_draw,
+     eng_image_map_surface_new,
+     eng_image_map_surface_free
      /* FUTURE software generic calls go here */
 };
 
@@ -1131,14 +1171,21 @@ static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
+   _evas_soft_gen_log_dom = eina_log_domain_register("EvasSoftGeneric", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_soft_gen_log_dom<0)
+     {
+       EINA_LOG_ERR("Evas SoftGen : Impossible to create a log domain for the software generic engine.\n");
+       return 0;
+     }
    em->functions = (void *)(&func);
-   cpunum = evas_common_cpu_count();
+   cpunum = eina_cpu_count();
    return 1;
 }
 
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_soft_gen_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_sdl/Makefile.am b/src/modules/engines/software_sdl/Makefile.am
index 1981472..8f075c3 100644
--- a/src/modules/engines/software_sdl/Makefile.am
+++ b/src/modules/engines/software_sdl/Makefile.am
@@ -27,7 +27,7 @@ pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES  = $(SOFTWARE_SDL_SOURCES)
 module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_SDL_LIBADD)
-module_la_LDFLAGS = -no-undefined -module -avoid-version
+module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
 else
diff --git a/src/modules/engines/software_sdl/Makefile.in b/src/modules/engines/software_sdl/Makefile.in
index ecf5096..735ec67 100644
--- a/src/modules/engines/software_sdl/Makefile.in
+++ b/src/modules/engines/software_sdl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -307,17 +307,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -339,7 +342,7 @@ AM_CFLAGS = @WIN32_CFLAGS@
 @BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE at pkg_LTLIBRARIES = module.la
 @BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE at module_la_SOURCES = $(SOFTWARE_SDL_SOURCES)
 @BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE at module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_SDL_LIBADD)
- at BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE at module_la_LDFLAGS = -no-undefined -module -avoid-version
+ at BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE at module_la_LDFLAGS = @lt_enable_auto_import@ -no-undefined -module -avoid-version
 @BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_FALSE at module_la_LIBTOOLFLAGS = --tag=disable-static
 @BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE at noinst_LTLIBRARIES = libevas_engine_software_sdl.la
 @BUILD_ENGINE_SOFTWARE_SDL_TRUE@@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE at libevas_engine_software_sdl_la_SOURCES = $(SOFTWARE_SDL_SOURCES)
@@ -353,8 +356,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -484,7 +487,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_sdl/evas_engine.c b/src/modules/engines/software_sdl/evas_engine.c
index dd3974d..f519163 100644
--- a/src/modules/engines/software_sdl/evas_engine.c
+++ b/src/modules/engines/software_sdl/evas_engine.c
@@ -5,8 +5,10 @@
 #include <time.h>
 #include <SDL/SDL.h>
 
+#include "evas_common.h"
 #include "evas_engine.h"
 
+int _evas_engine_soft_sdl_log_dom = -1;
 /* #define DEBUG_SDL */
 
 static Evas_Func	func = {};
@@ -66,21 +68,18 @@ static const Evas_Cache_Engine_Image_Func       _sdl_cache_engine_image_cb = {
 static void*
 evas_engine_sdl_info		(Evas* e __UNUSED__)
 {
-   Evas_Engine_Info_SDL*	info = calloc(1, sizeof (Evas_Engine_Info_SDL));
-
-   if (!info)
-      return NULL;
-
+   Evas_Engine_Info_SDL*	info;
+   info = calloc(1, sizeof (Evas_Engine_Info_SDL));
+   if (!info) return NULL;
    info->magic.magic = rand();
-
    return info;
 }
 
 static void
 evas_engine_sdl_info_free	(Evas* e __UNUSED__, void* info)
 {
-   Evas_Engine_Info_SDL*	in = (Evas_Engine_Info_SDL*) info;
-
+   Evas_Engine_Info_SDL*	in;
+   in = (Evas_Engine_Info_SDL*) info;
    free(in);
    in = NULL;
 }
@@ -99,7 +98,7 @@ evas_engine_sdl_setup		(Evas* e, void* in)
 
    if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
      {
-	fprintf(stderr, "SDL_Init failed with %s\n", SDL_GetError());
+	ERR("SDL_Init failed with %s", SDL_GetError());
         SDL_Quit();
         return 0;
      }
@@ -170,13 +169,13 @@ evas_engine_sdl_output_resize	(void *data, int w, int h)
 
    if (!surface)
      {
-	fprintf(stderr, "Unable to change the resolution to : %ix%i\n", w, h);
+	ERR("Unable to change the resolution to : %ix%i", w, h);
 	exit(-1);
      }
    re->rgba_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
    if (!re->rgba_engine_image)
      {
-	fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
+	ERR("RGBA_Image allocation from SDL failed");
 	exit(-1);
      }
 
@@ -620,6 +619,40 @@ evas_engine_sdl_image_draw(void *data, void *context, void *surface, void *image
 }
 
 static void
+evas_engine_sdl_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
+{
+   SDL_Engine_Image_Entry *eim = image;
+   SDL_Engine_Image_Entry *dst = surface;
+   int mustlock_im = 0;
+   int mustlock_dst = 0;
+
+   if (!eim || !dst) return;
+
+   if (SDL_MUSTLOCK(dst->surface))
+     {
+        mustlock_dst = 1;
+	SDL_LockSurface(dst->surface);
+	_SDL_UPDATE_PIXELS(dst);
+     }
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+	SDL_LockSurface(eim->surface);
+	_SDL_UPDATE_PIXELS(eim);
+     }
+
+   evas_common_map4_rgba(eim->cache_entry.src, dst->cache_entry.src, context, p, smooth, level);
+   evas_common_cpu_end_opt();
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+
+   if (mustlock_dst)
+     SDL_UnlockSurface(dst->surface);
+}
+
+static void
 evas_engine_sdl_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
 {
 }
@@ -820,6 +853,12 @@ static int module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   _evas_engine_soft_sdl_log_dom = eina_log_domain_register("EvasSoftSdl",EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_soft_sdl_log_dom < 0) 
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the SoftSdl engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -855,6 +894,7 @@ static int module_open(Evas_Module *em)
    ORD(image_border_set);
    ORD(image_border_get);
    ORD(image_draw);
+   ORD(image_map4_draw);
    ORD(image_comment_get);
    ORD(image_format_get);
    ORD(image_cache_flush);
@@ -876,7 +916,7 @@ static int module_open(Evas_Module *em)
 
 static void module_close(Evas_Module *em)
 {
-
+  eina_log_domain_unregister(_evas_engine_soft_sdl_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
@@ -924,7 +964,7 @@ _sdl_output_setup		(int w, int h, int fullscreen, int noframe, int alpha, int hw
    re->cache = evas_cache_engine_image_init(&_sdl_cache_engine_image_cb, evas_common_image_cache_get());
    if (!re->cache)
      {
-        fprintf(stderr, "Evas_Cache_Engine_Image allocation failed!\n");
+        CRIT("Evas_Cache_Engine_Image allocation failed!");
         exit(-1);
      }
 
@@ -939,7 +979,7 @@ _sdl_output_setup		(int w, int h, int fullscreen, int noframe, int alpha, int hw
 
    if (!surface)
      {
-        fprintf(stderr, "SDL_SetVideoMode [ %i x %i x 32 ] failed.\n", w, h);
+        CRIT("SDL_SetVideoMode [ %i x %i x 32 ] failed.", w, h);
         exit(-1);
      }
 
@@ -951,7 +991,7 @@ _sdl_output_setup		(int w, int h, int fullscreen, int noframe, int alpha, int hw
    re->rgba_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
    if (!re->rgba_engine_image)
      {
-	fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
+	CRIT("RGBA_Image allocation from SDL failed");
         exit(-1);
      }
 
@@ -1136,17 +1176,17 @@ _sdl_image_debug(const char* context, Engine_Image_Entry* eie)
 {
    SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) eie;
 
-   printf ("*** %s image (%p) ***\n", context, eim);
+   DBG("*** %s image (%p) ***", context, eim);
    if (eim)
      {
-        printf ("* W: %i\n* H: %i\n* R: %i\n", eim->cache_entry.w, eim->cache_entry.h, eim->cache_entry.references);
+        DBG ("* W: %i\n* H: %i\n* R: %i", eim->cache_entry.w, eim->cache_entry.h, eim->cache_entry.references);
         if (eim->cache_entry.src)
-          printf ("* Pixels: %p\n* SDL Surface: %p\n",((RGBA_Image*) eim->cache_entry.src)->image.data, eim->surface);
+          DBG ("* Pixels: %p\n* SDL Surface: %p",((RGBA_Image*) eim->cache_entry.src)->image.data, eim->surface);
         if (eim->surface)
-          printf ("* Surface->pixels: %p\n", eim->surface->pixels);
-	printf ("* Key: %s\n", eim->cache_entry.cache_key);
-        printf ("* Reference: %i\n", eim->cache_entry.references);
+          DBG ("* Surface->pixels: %p", eim->surface->pixels);
+	DBG ("* Key: %s", eim->cache_entry.cache_key);
+        DBG ("* Reference: %i", eim->cache_entry.references);
      }
-   printf ("*** ***\n");
+   DBG ("*** ***");
 }
 #endif
diff --git a/src/modules/engines/software_sdl/evas_engine.h b/src/modules/engines/software_sdl/evas_engine.h
index 7ad3261..5133fec 100644
--- a/src/modules/engines/software_sdl/evas_engine.h
+++ b/src/modules/engines/software_sdl/evas_engine.h
@@ -5,6 +5,32 @@
 #include "evas_private.h"
 #include "Evas_Engine_SDL.h"
 
+extern int _evas_engine_soft_sdl_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft_sdl_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft_sdl_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft_sdl_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft_sdl_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft_sdl_log_dom, __VA_ARGS__)
+
 typedef struct _SDL_Engine_Image_Entry SDL_Engine_Image_Entry;
 struct _SDL_Engine_Image_Entry
 {
diff --git a/src/modules/engines/software_x11/Makefile.in b/src/modules/engines/software_x11/Makefile.in
index ed4d420..14ee870 100644
--- a/src/modules/engines/software_x11/Makefile.in
+++ b/src/modules/engines/software_x11/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -345,17 +345,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -401,8 +404,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -604,7 +607,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/software_x11/evas_engine.c b/src/modules/engines/software_x11/evas_engine.c
index 79832f7..a7f44b1 100644
--- a/src/modules/engines/software_x11/evas_engine.c
+++ b/src/modules/engines/software_x11/evas_engine.c
@@ -15,6 +15,8 @@
 # include "evas_xcb_color.h"
 #endif
 
+int _evas_engine_soft_x11_log_dom = -1;
+int test ;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -320,7 +322,6 @@ static void *
 eng_info(Evas *e __UNUSED__)
 {
    Evas_Engine_Info_Software_X11 *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_Software_X11));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -337,7 +338,6 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_Software_X11 *in;
-
    in = (Evas_Engine_Info_Software_X11 *)info;
    free(in);
 }
@@ -345,8 +345,8 @@ eng_info_free(Evas *e __UNUSED__, void *info)
 static int
 eng_setup(Evas *e, void *in)
 {
-   Render_Engine                 *re;
    Evas_Engine_Info_Software_X11 *info;
+   Render_Engine *re = NULL;
 
    info = (Evas_Engine_Info_Software_X11 *)in;
    if (!e->engine.data.output)
@@ -628,7 +628,7 @@ eng_output_idle_flush(void *data)
 }
 
 static Eina_Bool
-eng_canvas_alpha_get(void *data, void *context)
+eng_canvas_alpha_get(void *data, void *context __UNUSED__)
 {
    Render_Engine *re;
 
@@ -643,6 +643,12 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   _evas_engine_soft_x11_log_dom = eina_log_domain_register("EvasSoftX11", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_engine_soft_x11_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the SoftX11 engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -667,8 +673,9 @@ module_open(Evas_Module *em)
 }
 
 static void
-module_close(Evas_Module *em)
+module_close(Evas_Module *em __UNUSED__)
 {
+  eina_log_domain_unregister(_evas_engine_soft_x11_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/software_x11/evas_engine.h b/src/modules/engines/software_x11/evas_engine.h
index 40fa5a8..3a9d581 100644
--- a/src/modules/engines/software_x11/evas_engine.h
+++ b/src/modules/engines/software_x11/evas_engine.h
@@ -16,6 +16,31 @@
 # include <xcb/xcb_image.h>
 #endif
 
+extern int _evas_engine_soft_x11_log_dom;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft_x11_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft_x11_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft_x11_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft_x11_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_soft_x11_log_dom, __VA_ARGS__)
 
 typedef enum   _Outbuf_Depth    Outbuf_Depth;
 
diff --git a/src/modules/engines/software_x11/evas_xcb_buffer.c b/src/modules/engines/software_x11/evas_xcb_buffer.c
index ece4da6..b091d14 100644
--- a/src/modules/engines/software_x11/evas_xcb_buffer.c
+++ b/src/modules/engines/software_x11/evas_xcb_buffer.c
@@ -62,6 +62,182 @@ evas_software_xcb_x_write_mask_line(Outbuf            *buf,
       }
 }
 
+void
+evas_software_xcb_x_write_mask_line_rev(Outbuf            *buf,
+                                        Xcb_Output_Buffer *xcbob,
+                                        DATA32            *src,
+                                        int                w,
+                                        int                y)
+{
+   int     x;
+   DATA32 *src_ptr;
+   DATA8  *dst_ptr;
+   int     bpl = 0;
+
+   src_ptr = src + w - 1;
+   dst_ptr = evas_software_xcb_x_output_buffer_data(xcbob, &bpl);
+   dst_ptr = dst_ptr + (bpl * y);
+   w -= 7;
+   if (buf->priv.x11.xcb.bit_swap)
+     {
+	for (x = 0; x < w; x += 8)
+	  {
+	     *dst_ptr =
+	       ((A_VAL(&(src_ptr[ 0])) >> 7) << 7) |
+	       ((A_VAL(&(src_ptr[-1])) >> 7) << 6) |
+	       ((A_VAL(&(src_ptr[-2])) >> 7) << 5) |
+	       ((A_VAL(&(src_ptr[-3])) >> 7) << 4) |
+	       ((A_VAL(&(src_ptr[-4])) >> 7) << 3) |
+	       ((A_VAL(&(src_ptr[-5])) >> 7) << 2) |
+	       ((A_VAL(&(src_ptr[-6])) >> 7) << 1) |
+	       ((A_VAL(&(src_ptr[-7])) >> 7) << 0);
+	     src_ptr -= 8;
+	     dst_ptr++;
+	  }
+     }
+   else
+     {
+	for (x = 0; x < w; x += 8)
+	  {
+	     *dst_ptr =
+	       ((A_VAL(&(src_ptr[ 0])) >> 7) << 0) |
+	       ((A_VAL(&(src_ptr[-1])) >> 7) << 1) |
+	       ((A_VAL(&(src_ptr[-2])) >> 7) << 2) |
+	       ((A_VAL(&(src_ptr[-3])) >> 7) << 3) |
+	       ((A_VAL(&(src_ptr[-4])) >> 7) << 4) |
+	       ((A_VAL(&(src_ptr[-5])) >> 7) << 5) |
+	       ((A_VAL(&(src_ptr[-6])) >> 7) << 6) |
+	       ((A_VAL(&(src_ptr[-7])) >> 7) << 7);
+	     src_ptr -= 8;
+	     dst_ptr++;
+	  }
+     }
+   w += 7;
+   for (; x < w; x ++)
+     {
+	xcb_image_put_pixel(xcbob->image, x, y, A_VAL(src_ptr) >> 7);
+	src_ptr--;
+     }
+}
+
+void
+evas_software_xcb_x_write_mask_line_vert(Outbuf            *buf,
+                                         Xcb_Output_Buffer *xcbob,
+                                         DATA32            *src,
+                                         int                h,
+                                         int                ym,
+                                         int                w)
+{
+   int     y;
+   DATA32 *src_ptr;
+   DATA8  *dst_ptr;
+   int     bpl = 0;
+
+   src_ptr = src;
+   dst_ptr = evas_software_xcb_x_output_buffer_data(xcbob, &bpl);
+   dst_ptr = dst_ptr + (bpl * ym);
+   h -= 7;
+   if (buf->priv.x11.xcb.bit_swap)
+     {
+	for (y = 0; y < h; y += 8)
+	  {
+	     *dst_ptr =
+	       ((A_VAL(&(src_ptr[0 * w])) >> 7) << 7) |
+	       ((A_VAL(&(src_ptr[1 * w])) >> 7) << 6) |
+	       ((A_VAL(&(src_ptr[2 * w])) >> 7) << 5) |
+	       ((A_VAL(&(src_ptr[3 * w])) >> 7) << 4) |
+	       ((A_VAL(&(src_ptr[4 * w])) >> 7) << 3) |
+	       ((A_VAL(&(src_ptr[5 * w])) >> 7) << 2) |
+	       ((A_VAL(&(src_ptr[6 * w])) >> 7) << 1) |
+	       ((A_VAL(&(src_ptr[7 * w])) >> 7) << 0);
+	     src_ptr += 8 * w;
+	     dst_ptr++;
+	  }
+     }
+   else
+     {
+	for (y = 0; y < h; y += 8)
+	  {
+	     *dst_ptr =
+	       ((A_VAL(&(src_ptr[0 * w])) >> 7) << 0) |
+	       ((A_VAL(&(src_ptr[1 * w])) >> 7) << 1) |
+	       ((A_VAL(&(src_ptr[2 * w])) >> 7) << 2) |
+	       ((A_VAL(&(src_ptr[3 * w])) >> 7) << 3) |
+	       ((A_VAL(&(src_ptr[4 * w])) >> 7) << 4) |
+	       ((A_VAL(&(src_ptr[5 * w])) >> 7) << 5) |
+	       ((A_VAL(&(src_ptr[6 * w])) >> 7) << 6) |
+	       ((A_VAL(&(src_ptr[7 * w])) >> 7) << 7);
+	     src_ptr += 8 * w;
+	     dst_ptr++;
+	  }
+     }
+   h += 7;
+   for (; y < h; y ++)
+     {
+	xcb_image_put_pixel(xcbob->image, y, ym, A_VAL(src_ptr) >> 7);
+	src_ptr += w;
+     }
+}
+
+void
+evas_software_xcb_x_write_mask_line_vert_rev(Outbuf            *buf,
+                                             Xcb_Output_Buffer *xcbob,
+                                             DATA32            *src,
+                                             int                h,
+                                             int                ym,
+                                             int                w)
+{
+   int     y;
+   DATA32 *src_ptr;
+   DATA8  *dst_ptr;
+   int     bpl = 0;
+
+   src_ptr = src + ((h - 1) * w);
+   dst_ptr = evas_software_xcb_x_output_buffer_data(xcbob, &bpl);
+   dst_ptr = dst_ptr + (bpl * ym);
+   h -= 7;
+   if (buf->priv.x11.xcb.bit_swap)
+     {
+	for (y = 0; y < h; y += 8)
+	  {
+	     *dst_ptr =
+	       ((A_VAL(&(src_ptr[ 0 * w])) >> 7) << 7) |
+	       ((A_VAL(&(src_ptr[-1 * w])) >> 7) << 6) |
+	       ((A_VAL(&(src_ptr[-2 * w])) >> 7) << 5) |
+	       ((A_VAL(&(src_ptr[-3 * w])) >> 7) << 4) |
+	       ((A_VAL(&(src_ptr[-4 * w])) >> 7) << 3) |
+	       ((A_VAL(&(src_ptr[-5 * w])) >> 7) << 2) |
+	       ((A_VAL(&(src_ptr[-6 * w])) >> 7) << 1) |
+	       ((A_VAL(&(src_ptr[-7 * w])) >> 7) << 0);
+	     src_ptr -= 8 * w;
+	     dst_ptr++;
+	  }
+     }
+   else
+     {
+	for (y = 0; y < h; y += 8)
+	  {
+	     *dst_ptr =
+	       ((A_VAL(&(src_ptr[ 0 * w])) >> 7) << 0) |
+	       ((A_VAL(&(src_ptr[-1 * w])) >> 7) << 1) |
+	       ((A_VAL(&(src_ptr[-2 * w])) >> 7) << 2) |
+	       ((A_VAL(&(src_ptr[-3 * w])) >> 7) << 3) |
+	       ((A_VAL(&(src_ptr[-4 * w])) >> 7) << 4) |
+	       ((A_VAL(&(src_ptr[-5 * w])) >> 7) << 5) |
+	       ((A_VAL(&(src_ptr[-6 * w])) >> 7) << 6) |
+	       ((A_VAL(&(src_ptr[-7 * w])) >> 7) << 7);
+	     src_ptr -= 8 * w;
+	     dst_ptr++;
+	  }
+     }
+   h += 7;
+   for (; y < h; y ++)
+     {
+	xcb_image_put_pixel(xcbob->image, y, ym, A_VAL(src_ptr) >> 7);
+	src_ptr -= w;
+     }
+}
+
 int
 evas_software_xcb_x_can_do_shm(xcb_connection_t *c,
                                xcb_screen_t     *screen)
@@ -125,8 +301,6 @@ evas_software_xcb_x_output_buffer_new(xcb_connection_t *c,
    xcbob->w = w;
    xcbob->h = h;
 
-   try_shm = 0;
-
    if (try_shm > 0)
      {
         xcbob->shm_info = malloc(sizeof(xcb_shm_segment_info_t));
diff --git a/src/modules/engines/software_x11/evas_xcb_buffer.h b/src/modules/engines/software_x11/evas_xcb_buffer.h
index f68d1db..f9582c8 100644
--- a/src/modules/engines/software_x11/evas_xcb_buffer.h
+++ b/src/modules/engines/software_x11/evas_xcb_buffer.h
@@ -24,6 +24,23 @@ void               evas_software_xcb_x_write_mask_line         (Outbuf
 								DATA32            *src,
 								int                w,
 								int                y);
+void               evas_software_xcb_x_write_mask_line_rev     (Outbuf            *buf,
+                                                                Xcb_Output_Buffer *xcbob,
+                                                                DATA32            *src,
+                                                                int                w,
+                                                                int                y);
+void               evas_software_xcb_x_write_mask_line_vert    (Outbuf            *buf,
+                                                                Xcb_Output_Buffer *xcbob,
+                                                                DATA32            *src,
+                                                                int                h,
+                                                                int                ym,
+                                                                int                w);
+void               evas_software_xcb_x_write_mask_line_vert_rev(Outbuf            *buf,
+                                                                Xcb_Output_Buffer *xcbob,
+                                                                DATA32            *src,
+                                                                int                h,
+                                                                int                ym,
+                                                                int                w);
 int                evas_software_xcb_x_can_do_shm              (xcb_connection_t *c,
                                                                 xcb_screen_t     *screen);
 Xcb_Output_Buffer *evas_software_xcb_x_output_buffer_new       (xcb_connection_t *c,
diff --git a/src/modules/engines/software_x11/evas_xcb_outbuf.c b/src/modules/engines/software_x11/evas_xcb_outbuf.c
index ad70b39..2065dda 100644
--- a/src/modules/engines/software_x11/evas_xcb_outbuf.c
+++ b/src/modules/engines/software_x11/evas_xcb_outbuf.c
@@ -32,7 +32,7 @@ static Xcb_Output_Buffer *
 _find_xcbob(xcb_connection_t *conn, int depth, int w, int h, int shm, void *data)
 {
    Eina_List         *l;
-   Eina_List         *xl;
+   Eina_List         *xl = NULL;
    Xcb_Output_Buffer *xcbob = NULL;
    Xcb_Output_Buffer *xcbob2;
    int                fitness = 0x7fffffff;
@@ -355,13 +355,13 @@ evas_software_xcb_outbuf_setup_x(int               w,
 	   evas_software_xcb_x_output_buffer_free(xcbob, 1);
 	   if (!conv_func)
 	     {
-		printf(".[ Evas Error ].\n"
-		       " {\n"
-		       "  At depth         %i:\n"
-		       "  RGB format mask: %08x, %08x, %08x\n"
-		       "  Palette mode:    %i\n"
-		       "  Not supported by and compiled in converters!\n"
-		       " }\n",
+		ERR("XCB Engine"
+		       " {"
+		       "  At depth         %i:"
+		       "  RGB format mask: %08x, %08x, %08x"
+		       "  Palette mode:    %i"
+		       "  Not supported by and compiled in converters!"
+		       " }",
 		       buf->priv.x11.xcb.depth,
 		       buf->priv.mask.r,
 		       buf->priv.mask.g,
@@ -458,23 +458,36 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf,
              evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
 	     im->extended_info = obr;
 	     if ((buf->rot == 0) || (buf->rot == 180))
-	       obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
-                                                                  buf->priv.x11.xcb.depth,
-                                                                  buf->w, buf->h,
-                                                                  use_shm,
-                                                                  NULL);
+               {
+                  obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
+                                                                     buf->priv.x11.xcb.depth,
+                                                                     buf->w, buf->h,
+                                                                     use_shm,
+                                                                     NULL);
+                  if (buf->priv.x11.xcb.mask)
+                    obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
+                                                                       buf->priv.x11.xcb.depth,
+                                                                       buf->w, buf->h,
+                                                                       use_shm,
+                                                                       NULL);
+               }
 	     else if ((buf->rot == 90) || (buf->rot == 270))
-	       obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
-                                                                  buf->priv.x11.xcb.depth,
-                                                                  buf->h, buf->w,
-                                                                  use_shm,
-                                                                  NULL);
-	     if (buf->priv.x11.xcb.mask)
-	       obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
-                                                                   1, buf->w, buf->h,
-                                                                   use_shm,
-                                                                   NULL);
+               {
+                  obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
+                                                                     buf->priv.x11.xcb.depth,
+                                                                     buf->h, buf->w,
+                                                                     use_shm,
+                                                                     NULL);
+                  if (buf->priv.x11.xcb.mask)
+                    obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
+                                                                       buf->priv.x11.xcb.depth,
+                                                                       buf->h, buf->w,
+                                                                       use_shm,
+                                                                       NULL);
+               }
 	  }
+	/* FIXME: We should be able to remove this memset, but somewhere in the process
+	   we copy too much to the destination surface and some area are not cleaned before copy. */
 	if (alpha)
           /* FIXME: faster memset! */
           memset(im->image.data, 0, w * h * sizeof(DATA32));
@@ -520,7 +533,8 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf,
 	im->extended_info = obr;
 	if (buf->priv.x11.xcb.mask)
 	  obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
-                                    1, w, h,
+                                    buf->priv.x11.xcb.depth,
+                                    w, h,
                                     use_shm,
                                     NULL);
 /*	  obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
@@ -537,11 +551,19 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf,
         evas_cache_image_surface_alloc(&im->cache_entry, w, h);
 	im->extended_info = obr;
 	if ((buf->rot == 0) || (buf->rot == 180))
-	  obr->xcbob = _find_xcbob(buf->priv.x11.xcb.conn,
-                                   buf->priv.x11.xcb.depth,
-                                   w, h,
-                                   use_shm,
-                                   NULL);
+          {
+             obr->xcbob = _find_xcbob(buf->priv.x11.xcb.conn,
+                                      buf->priv.x11.xcb.depth,
+                                      w, h,
+                                      use_shm,
+                                      NULL);
+             if (buf->priv.x11.xcb.mask)
+               obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
+                                         buf->priv.x11.xcb.depth,
+                                          w, h,
+                                         use_shm,
+                                         NULL);
+          }
 /*	   obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
 /*							      buf->priv.x11.xcb.depth, */
 /*							      w, */
@@ -549,22 +571,32 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf,
 /*							      use_shm, */
 /*							      NULL); */
 	else if ((buf->rot == 90) || (buf->rot == 270))
-	  obr->xcbob = _find_xcbob(buf->priv.x11.xcb.conn,
-                                   buf->priv.x11.xcb.depth,
-                                   h, w,
-                                   use_shm,
-                                   NULL);
+          {
+             obr->xcbob = _find_xcbob(buf->priv.x11.xcb.conn,
+                                      buf->priv.x11.xcb.depth,
+                                      h, w,
+                                      use_shm,
+                                      NULL);
+             if (buf->priv.x11.xcb.mask)
+               obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
+                                         buf->priv.x11.xcb.depth,
+                                         h, w,
+                                         use_shm,
+                                         NULL);
+          }
 /*	  obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
 /*							     buf->priv.x11.xcb.depth, */
 /*							     h, */
 /*							     w, */
 /*							     use_shm, */
 /*							     NULL); */
+/*
 	if (buf->priv.x11.xcb.mask)
 	  obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
                                     1, w, h,
                                     use_shm,
                                     NULL);
+*/
 /*	  obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
 /*							      1, */
 /*							      w, */
@@ -572,6 +604,8 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf,
 /*							      use_shm, */
 /*							      NULL); */
      }
+   /* FIXME: We should be able to remove this memset, but somewhere in the process
+      we copy too much to the destination surface and some area are not cleaned before copy. */
    if ((buf->priv.x11.xcb.mask) || (buf->priv.destination_alpha))
 	/* FIXME: faster memset! */
      memset(im->image.data, 0, w * h * sizeof(DATA32));
@@ -874,11 +908,42 @@ evas_software_xcb_outbuf_push_updated_region(Outbuf     *buf,
 #endif
    if (obr->mxcbob)
      {
-	for (yy = 0; yy < obr->h; yy++)
-	  evas_software_xcb_x_write_mask_line(buf, obr->mxcbob,
-					      src_data + (yy * obr->w),
-                                              obr->w,
-                                              yy);
+        if (buf->rot == 0)
+          {
+             for (yy = 0; yy < obr->h; yy++)
+               evas_software_xcb_x_write_mask_line(buf, obr->mxcbob,
+                                                   src_data + (yy * obr->w),
+                                                   obr->w,
+                                                   yy);
+          }
+        else if (buf->rot == 90)
+          {
+             for (yy = 0; yy < obr->h; yy++)
+               evas_software_xcb_x_write_mask_line_vert(buf, obr->mxcbob,
+                                                        src_data + yy, 
+                                                        h,  // h
+                                                        obr->h - yy - 1, // ym
+                                                        w); // w
+          }
+        else if (buf->rot == 180)
+          {
+             for (yy = 0; yy < obr->h; yy++)
+               {
+                  evas_software_xcb_x_write_mask_line_rev(buf, obr->mxcbob,
+                                                          src_data + (yy * obr->w), 
+                                                          obr->w,
+                                                          obr->h - yy - 1);
+               }
+          }
+        else if (buf->rot == 270)
+          {
+             for (yy = 0; yy < obr->h; yy++)
+               evas_software_xcb_x_write_mask_line_vert_rev(buf, obr->mxcbob,
+                                                            src_data + yy,
+                                                            h,  // h
+                                                            yy, // ym
+                                                            w); // w
+          }
 #if 1
 #else
 	/* XX async push */
diff --git a/src/modules/engines/software_x11/evas_xlib_outbuf.c b/src/modules/engines/software_x11/evas_xlib_outbuf.c
index 6e4201e..6e1ac92 100644
--- a/src/modules/engines/software_x11/evas_xlib_outbuf.c
+++ b/src/modules/engines/software_x11/evas_xlib_outbuf.c
@@ -761,7 +761,7 @@ evas_software_xlib_outbuf_push_updated_region(Outbuf *buf, RGBA_Image *update, i
    Outbuf_Region      *obr;
    DATA32             *src_data;
    void               *data;
-   int                 bpl = 0, xx, yy;
+   int                 bpl = 0, yy;
 
    obr = update->extended_info;
    if (buf->priv.pal)
diff --git a/src/modules/engines/xrender_x11/Makefile.in b/src/modules/engines/xrender_x11/Makefile.in
index e4817a8..ad1dc5a 100644
--- a/src/modules/engines/xrender_x11/Makefile.in
+++ b/src/modules/engines/xrender_x11/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -345,17 +345,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -397,8 +400,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -618,7 +621,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/engines/xrender_x11/evas_engine.c b/src/modules/engines/xrender_x11/evas_engine.c
index 5d51099..32d9300 100644
--- a/src/modules/engines/xrender_x11/evas_engine.c
+++ b/src/modules/engines/xrender_x11/evas_engine.c
@@ -4,7 +4,7 @@
 #include "Evas_Engine_XRender_X11.h"
 
 #include "evas_engine.h"
-
+int _evas_xrender_xcb_log_dom = -1;
 /* function tables - filled in later (func and parent func) */
 static Evas_Func func, pfunc;
 
@@ -350,7 +350,6 @@ static void *
 eng_info(Evas *e __UNUSED__)
 {
    Evas_Engine_Info_XRender_X11 *info;
-
    info = calloc(1, sizeof(Evas_Engine_Info_XRender_X11));
    if (!info) return NULL;
    info->magic.magic = rand();
@@ -361,7 +360,6 @@ static void
 eng_info_free(Evas *e __UNUSED__, void *info)
 {
    Evas_Engine_Info_XRender_X11 *in;
-
    in = (Evas_Engine_Info_XRender_X11 *)info;
    free(in);
 }
@@ -1405,7 +1403,12 @@ module_open(Evas_Module *em)
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
-   
+   _evas_xrender_xcb_log_dom = eina_log_domain_register("EvasSoftXrender", EVAS_DEFAULT_LOG_COLOR);
+   if(_evas_xrender_xcb_log_dom < 0)
+     {
+       EINA_LOG_ERR("Impossible to create a log domain for the Software Xrender engine.\n");
+       return 0;
+     }
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -1497,6 +1500,10 @@ module_open(Evas_Module *em)
    
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
+
+//   ORD(image_map4_draw);
+//   ORD(image_map_surface_new);
+//   ORD(image_map_surface_free);
    
    /* now advertise out own api */
    em->functions = (void *)(&func);
@@ -1506,6 +1513,7 @@ module_open(Evas_Module *em)
 static void
 module_close(Evas_Module *em)
 {
+  eina_log_domain_unregister(_evas_xrender_xcb_log_dom);
 }
 
 static Evas_Module_Api evas_modapi =
diff --git a/src/modules/engines/xrender_x11/evas_engine.h b/src/modules/engines/xrender_x11/evas_engine.h
index d174d2a..b1510cf 100644
--- a/src/modules/engines/xrender_x11/evas_engine.h
+++ b/src/modules/engines/xrender_x11/evas_engine.h
@@ -16,6 +16,32 @@
 # include <xcb/xcb_image.h>
 #endif
 
+extern int _evas_xrender_xcb_log_dom ;
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_evas_xrender_xcb_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_evas_xrender_xcb_log_dom, __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_evas_xrender_xcb_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_evas_xrender_xcb_log_dom, __VA_ARGS__)
+
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_xrender_xcb_log_dom, __VA_ARGS__)
+
 typedef struct _Ximage_Info      Ximage_Info;
 typedef struct _Ximage_Image     Ximage_Image;
 typedef struct _Xrender_Surface  Xrender_Surface;
diff --git a/src/modules/engines/xrender_x11/evas_engine_xlib_ximage.c b/src/modules/engines/xrender_x11/evas_engine_xlib_ximage.c
index 92d4e74..a17bab7 100644
--- a/src/modules/engines/xrender_x11/evas_engine_xlib_ximage.c
+++ b/src/modules/engines/xrender_x11/evas_engine_xlib_ximage.c
@@ -205,6 +205,10 @@ _xr_xlib_image_new(Ximage_Info *xinf, int w, int h, int depth)
 	     return NULL;
 	  }
      }
+   else
+     {
+	return NULL;
+     }
 
    xim_ok:
    _xr_xlib_image_info_pool_flush(xinf, 32, (1600 * 1200 * 32 * 2));
diff --git a/src/modules/loaders/Makefile.in b/src/modules/loaders/Makefile.in
index 4e6f37d..10cc9ef 100644
--- a/src/modules/loaders/Makefile.in
+++ b/src/modules/loaders/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -277,17 +277,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -302,8 +305,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -409,7 +412,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/edb/Makefile.in b/src/modules/loaders/edb/Makefile.in
index 567e736..e67ab0b 100644
--- a/src/modules/loaders/edb/Makefile.in
+++ b/src/modules/loaders/edb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -336,8 +339,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -450,7 +453,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/edb/evas_image_load_edb.c b/src/modules/loaders/edb/evas_image_load_edb.c
index 035ce5c..59f10ae 100644
--- a/src/modules/loaders/edb/evas_image_load_edb.c
+++ b/src/modules/loaders/edb/evas_image_load_edb.c
@@ -56,7 +56,8 @@ evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key
      }
    w = header[1];
    h = header[2];
-   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) || 
+       IMG_TOO_BIG(w, h))
      {
 	free(ret);
 	e_db_close(db);
@@ -120,7 +121,8 @@ evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key
      }
    w = header[1];
    h = header[2];
-   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) ||
+       IMG_TOO_BIG(w, h))
      {
 	free(ret);
 	e_db_close(db);
diff --git a/src/modules/loaders/eet/Makefile.in b/src/modules/loaders/eet/Makefile.in
index 8da44e7..54f13d0 100644
--- a/src/modules/loaders/eet/Makefile.in
+++ b/src/modules/loaders/eet/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -337,8 +340,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -451,7 +454,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/eet/evas_image_load_eet.c b/src/modules/loaders/eet/evas_image_load_eet.c
index 9e7f84a..f3d2819 100644
--- a/src/modules/loaders/eet/evas_image_load_eet.c
+++ b/src/modules/loaders/eet/evas_image_load_eet.c
@@ -32,6 +32,7 @@ evas_image_load_file_head_eet(Image_Entry *ie, const char *file, const char *key
    if (!ef) return 0;
    ok = eet_data_image_header_read(ef, key,
 				   &w, &h, &alpha, &compression, &quality, &lossy);
+   if (IMG_TOO_BIG(w, h)) goto on_error;
    if (!ok) goto on_error;
    if (alpha) ie->flags.alpha = 1;
    ie->w = w;
@@ -59,6 +60,7 @@ evas_image_load_file_data_eet(Image_Entry *ie, const char *file, const char *key
    if (!ef) return 0;
    ok = eet_data_image_header_read(ef, key,
 				   &w, &h, &alpha, &compression, &quality, &lossy);
+   if (IMG_TOO_BIG(w, h)) goto on_error;
    if (!ok) goto on_error;
    evas_cache_image_surface_alloc(ie, w, h);
    ok = eet_data_image_read_to_surface(ef, key, 0, 0,
diff --git a/src/modules/loaders/gif/Makefile.in b/src/modules/loaders/gif/Makefile.in
index a662cfe..54c90db 100644
--- a/src/modules/loaders/gif/Makefile.in
+++ b/src/modules/loaders/gif/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -337,8 +340,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -451,7 +454,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/gif/evas_image_load_gif.c b/src/modules/loaders/gif/evas_image_load_gif.c
index b5f347c..5269f4a 100644
--- a/src/modules/loaders/gif/evas_image_load_gif.c
+++ b/src/modules/loaders/gif/evas_image_load_gif.c
@@ -65,7 +65,8 @@ evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key
                }
              w = gif->Image.Width;
              h = gif->Image.Height;
-	     if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+	     if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) ||
+                 IMG_TOO_BIG(w, h))
 	       {
 		  DGifCloseFile(gif);
 		  return 0;
diff --git a/src/modules/loaders/jpeg/Makefile.in b/src/modules/loaders/jpeg/Makefile.in
index 6a5d092..da41191 100644
--- a/src/modules/loaders/jpeg/Makefile.in
+++ b/src/modules/loaders/jpeg/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -339,8 +342,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -453,7 +456,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/jpeg/evas_image_load_jpeg.c b/src/modules/loaders/jpeg/evas_image_load_jpeg.c
index dc0c536..1a3ff43 100644
--- a/src/modules/loaders/jpeg/evas_image_load_jpeg.c
+++ b/src/modules/loaders/jpeg/evas_image_load_jpeg.c
@@ -53,26 +53,25 @@ _JPEGFatalErrorHandler(j_common_ptr cinfo)
 }
 
 static void
-_JPEGErrorHandler(j_common_ptr cinfo)
+_JPEGErrorHandler(j_common_ptr cinfo __UNUSED__)
 {
-   emptr errmgr;
+/*    emptr errmgr; */
 
-   errmgr = (emptr) cinfo->err;
+/*    errmgr = (emptr) cinfo->err; */
    /*   cinfo->err->output_message(cinfo);*/
    /*   longjmp(errmgr->setjmp_buffer, 1);*/
    return;
 }
 
 static void
-_JPEGErrorHandler2(j_common_ptr cinfo, int msg_level)
+_JPEGErrorHandler2(j_common_ptr cinfo __UNUSED__, int msg_level __UNUSED__)
 {
-   emptr errmgr;
+/*    emptr errmgr; */
 
-   errmgr = (emptr) cinfo->err;
+/*    errmgr = (emptr) cinfo->err; */
    /*   cinfo->err->output_message(cinfo);*/
    /*   longjmp(errmgr->setjmp_buffer, 1);*/
    return;
-   msg_level = 0;
 }
 
 static int
@@ -104,7 +103,8 @@ evas_image_load_file_head_jpeg_internal(Image_Entry *ie, FILE *f)
 /* head decoding */
    w = cinfo.output_width;
    h = cinfo.output_height;
-   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) ||
+       (IMG_TOO_BIG(w, h)))
      {
         jpeg_destroy_decompress(&cinfo);
 	return 0;
@@ -178,12 +178,38 @@ evas_image_load_file_head_jpeg_internal(Image_Entry *ie, FILE *f)
 
    ie->w = cinfo.output_width;
    ie->h = cinfo.output_height;
+   
+   // be nice and clip region to image. if its totally outside, fail load
+   if ((ie->load_opts.region.w > 0) && (ie->load_opts.region.h > 0))
+     {
+        RECTS_CLIP_TO_RECT(ie->load_opts.region.x, ie->load_opts.region.y,
+                           ie->load_opts.region.w, ie->load_opts.region.h,
+                           0, 0, ie->w, ie->h);
+        if ((ie->load_opts.region.w <= 0) || (ie->load_opts.region.h <= 0))
+          {
+             jpeg_destroy_decompress(&cinfo);
+             return 0;
+          }
+        ie->w = ie->load_opts.region.w;
+        ie->h = ie->load_opts.region.h;
+     }
 /* end head decoding */
 
    jpeg_destroy_decompress(&cinfo);
    return 1;
 }
 
+/*
+static double
+get_time(void)
+{
+   struct timeval      timev;
+   
+   gettimeofday(&timev, NULL);
+   return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
+}
+*/
+
 static int
 evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
 {
@@ -193,6 +219,7 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
    DATA8 *ptr, *line[16], *data;
    DATA32 *ptr2;
    int x, y, l, i, scans, count;
+   int region = 0;
 
    if (!f) return 0;
    cinfo.err = jpeg_std_error(&(jerr.pub));
@@ -243,10 +270,27 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
    w = cinfo.output_width;
    h = cinfo.output_height;
 
+   if ((ie->load_opts.region.w > 0) && (ie->load_opts.region.h > 0))
+     {
+        region = 1;
+#ifdef BUILD_LOADER_JPEG_REGION
+        cinfo.region_x = ie->load_opts.region.x;
+        cinfo.region_y = ie->load_opts.region.y;
+        cinfo.region_w = ie->load_opts.region.w;
+        cinfo.region_h = ie->load_opts.region.h;
+#endif
+     }
    if ((w != ie->w) || (h != ie->h))
      {
-	jpeg_destroy_decompress(&cinfo);
-	return 0;
+        // OK. region decode happening. a sub-set of the image
+//	jpeg_destroy_decompress(&cinfo);
+//	return 0;
+     }
+   if ((region) && 
+       ((ie->w != ie->load_opts.region.w) || (ie->h != ie->load_opts.region.h)))
+     {
+        ie->w = ie->load_opts.region.w;
+        ie->h = ie->load_opts.region.h;
      }
 
    if (!(((cinfo.out_color_space == JCS_RGB) &&
@@ -265,17 +309,18 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
 	return 0;
      }
    data = alloca(w * 16 * cinfo.output_components);
-   evas_cache_image_surface_alloc(ie, w, h);
+   evas_cache_image_surface_alloc(ie, ie->w, ie->h);
    if (ie->flags.loaded)
      {
 	jpeg_destroy_decompress(&cinfo);
-	return 0;
+	return 1;
      }
    ptr2 = evas_cache_image_pixels(ie);
    count = 0;
    /* We handle first CMYK (4 components) */
    if (cinfo.output_components == 4)
      {
+        // FIXME: handle region
 	for (i = 0; i < cinfo.rec_outbuf_height; i++)
 	  line[i] = data + (i * w * 4);
 	for (l = 0; l < h; l += cinfo.rec_outbuf_height)
@@ -284,47 +329,141 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
 	     scans = cinfo.rec_outbuf_height;
 	     if ((h - l) < scans) scans = h - l;
 	     ptr = data;
-	     for (y = 0; y < scans; y++)
-	       {
-		  for (x = 0; x < w; x++)
-		    {
+             if (!region)
+               {
+                  for (y = 0; y < scans; y++)
+                    {
                        if (cinfo.saw_Adobe_marker)
-                         /* According to libjpeg doc, Photoshop inverse the values of C, M, Y and K, */
-                         /* that is C is replaces by 255 - C, etc...*/
-                         /* See the comment below for the computation of RGB values from CMYK ones. */
-                         *ptr2 =
-                           (0xff000000) |
-                           ((ptr[0] * ptr[3] / 255) << 16) |
-                           ((ptr[1] * ptr[3] / 255) << 8) |
-                           ((ptr[2] * ptr[3] / 255));
+                         {
+                            for (x = 0; x < w; x++)
+                              {
+                                 /* According to libjpeg doc, Photoshop inverse the values of C, M, Y and K, */
+                                 /* that is C is replaces by 255 - C, etc...*/
+                                 /* See the comment below for the computation of RGB values from CMYK ones. */
+                                 *ptr2 =
+                                   (0xff000000) |
+                                   ((ptr[0] * ptr[3] / 255) << 16) |
+                                   ((ptr[1] * ptr[3] / 255) << 8) |
+                                   ((ptr[2] * ptr[3] / 255));
+                                 ptr += 4;
+                                 ptr2++;
+                              }
+                         }
                        else
-                         /* Conversion from CMYK to RGB is done in 2 steps: */
-                         /* CMYK => CMY => RGB (see http://www.easyrgb.com/index.php?X=MATH) */
-                         /* after computation, if C, M, Y and K are between 0 and 1, we have: */
-                         /* R = (1 - C) * (1 - K) * 255 */
-                         /* G = (1 - M) * (1 - K) * 255 */
-                         /* B = (1 - Y) * (1 - K) * 255 */
-                         /* libjpeg stores CMYK values between 0 and 255, */
-                         /* so we replace C by C * 255 / 255, etc... and we obtain: */
-                         /* R = (255 - C) * (255 - K) / 255 */
-                         /* G = (255 - M) * (255 - K) / 255 */
-                         /* B = (255 - Y) * (255 - K) / 255 */
-                         /* with C, M, Y and K between 0 and 255. */
-                         *ptr2 =
-                           (0xff000000) |
-                           (((255 - ptr[0]) * (255 - ptr[3]) / 255) << 16) |
-                           (((255 - ptr[1]) * (255 - ptr[3]) / 255) << 8) |
-                           (((255 - ptr[2]) * (255 - ptr[3]) / 255));
-		       ptr += 4;
-		       ptr2++;
+                         {
+                            for (x = 0; x < w; x++)
+                              {
+                                 /* Conversion from CMYK to RGB is done in 2 steps: */
+                                 /* CMYK => CMY => RGB (see http://www.easyrgb.com/index.php?X=MATH) */
+                                 /* after computation, if C, M, Y and K are between 0 and 1, we have: */
+                                 /* R = (1 - C) * (1 - K) * 255 */
+                                 /* G = (1 - M) * (1 - K) * 255 */
+                                 /* B = (1 - Y) * (1 - K) * 255 */
+                                 /* libjpeg stores CMYK values between 0 and 255, */
+                                 /* so we replace C by C * 255 / 255, etc... and we obtain: */
+                                 /* R = (255 - C) * (255 - K) / 255 */
+                                 /* G = (255 - M) * (255 - K) / 255 */
+                                 /* B = (255 - Y) * (255 - K) / 255 */
+                                 /* with C, M, Y and K between 0 and 255. */
+                                 *ptr2 =
+                                   (0xff000000) |
+                                   (((255 - ptr[0]) * (255 - ptr[3]) / 255) << 16) |
+                                   (((255 - ptr[1]) * (255 - ptr[3]) / 255) << 8) |
+                                   (((255 - ptr[2]) * (255 - ptr[3]) / 255));
+                                 ptr += 4;
+                                 ptr2++;
+                              }
+                         }
 		    }
 	       }
+             else
+               {
+                  // if line # > region last line, break
+                  if (l >= (ie->load_opts.region.y + ie->load_opts.region.h))
+                    {
+                       jpeg_destroy_decompress(&cinfo);
+                       return 1;
+                    }
+                  // els if scan block intersects region start or later
+                  else if ((l + scans) > 
+                           (ie->load_opts.region.y))
+                    {
+                       for (y = 0; y < scans; y++)
+                         {
+                            if (((y + l) >= ie->load_opts.region.y) &&
+                                ((y + l) < (ie->load_opts.region.y + ie->load_opts.region.h)))
+                              {
+                                 ptr += ie->load_opts.region.x;
+                                 if (cinfo.saw_Adobe_marker)
+                                   {
+                                      for (x = 0; x < ie->load_opts.region.w; x++)
+                                        {
+                                           /* According to libjpeg doc, Photoshop inverse the values of C, M, Y and K, */
+                                           /* that is C is replaces by 255 - C, etc...*/
+                                           /* See the comment below for the computation of RGB values from CMYK ones. */
+                                           *ptr2 =
+                                             (0xff000000) |
+                                             ((ptr[0] * ptr[3] / 255) << 16) |
+                                             ((ptr[1] * ptr[3] / 255) << 8) |
+                                             ((ptr[2] * ptr[3] / 255));
+                                           ptr += 4;
+                                           ptr2++;
+                                        }
+                                   }
+                                 else
+                                   {
+                                      for (x = 0; x < ie->load_opts.region.w; x++)
+                                        {
+                                           /* Conversion from CMYK to RGB is done in 2 steps: */
+                                           /* CMYK => CMY => RGB (see http://www.easyrgb.com/index.php?X=MATH) */
+                                           /* after computation, if C, M, Y and K are between 0 and 1, we have: */
+                                           /* R = (1 - C) * (1 - K) * 255 */
+                                           /* G = (1 - M) * (1 - K) * 255 */
+                                           /* B = (1 - Y) * (1 - K) * 255 */
+                                           /* libjpeg stores CMYK values between 0 and 255, */
+                                           /* so we replace C by C * 255 / 255, etc... and we obtain: */
+                                           /* R = (255 - C) * (255 - K) / 255 */
+                                           /* G = (255 - M) * (255 - K) / 255 */
+                                           /* B = (255 - Y) * (255 - K) / 255 */
+                                           /* with C, M, Y and K between 0 and 255. */
+                                           *ptr2 =
+                                             (0xff000000) |
+                                             (((255 - ptr[0]) * (255 - ptr[3]) / 255) << 16) |
+                                             (((255 - ptr[1]) * (255 - ptr[3]) / 255) << 8) |
+                                             (((255 - ptr[2]) * (255 - ptr[3]) / 255));
+                                           ptr += 4;
+                                           ptr2++;
+                                        }
+                                   }
+                                 ptr += (4 * (w - (ie->load_opts.region.x + ie->load_opts.region.w)));
+                              }
+                            else
+                              ptr += (4 * w);
+                         }
+                    }
+               }
 	  }
      }
    /* We handle then RGB with 3 components */
    else if (cinfo.output_components == 3)
      {
-	for (i = 0; i < cinfo.rec_outbuf_height; i++)
+/*        
+        double t;
+        if (region)
+          {
+             // debug for now
+             printf("R| %p %5ix%5i %s: %5i %5i %5ix%5i - ",
+                    ie,
+                    ie->w, ie->h,
+                    ie->file,
+                    ie->load_opts.region.x,
+                    ie->load_opts.region.y,
+                    ie->load_opts.region.w,
+                    ie->load_opts.region.h);
+          }
+        t = get_time();
+ */
+        for (i = 0; i < cinfo.rec_outbuf_height; i++)
 	  line[i] = data + (i * w * 3);
 	for (l = 0; l < h; l += cinfo.rec_outbuf_height)
 	  {
@@ -332,17 +471,60 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
 	     scans = cinfo.rec_outbuf_height;
 	     if ((h - l) < scans) scans = h - l;
 	     ptr = data;
-	     for (y = 0; y < scans; y++)
-	       {
-		  for (x = 0; x < w; x++)
-		    {
-		       *ptr2 =
-			 (0xff000000) | ((ptr[0]) << 16) | ((ptr[1]) << 8) | (ptr[2]);
-		       ptr += 3;
-		       ptr2++;
-		    }
+             if (!region)
+               {
+                  for (y = 0; y < scans; y++)
+                    {
+                       for (x = 0; x < w; x++)
+                         {
+                            *ptr2 =
+                              (0xff000000) | ((ptr[0]) << 16) | ((ptr[1]) << 8) | (ptr[2]);
+                            ptr += 3;
+                            ptr2++;
+                         }
+                    }
 	       }
+             else
+               {
+                  // if line # > region last line, break
+                  if (l >= (ie->load_opts.region.y + ie->load_opts.region.h))
+                    {
+                       jpeg_destroy_decompress(&cinfo);
+/*                       
+                       t = get_time() - t;
+                       printf("%3.3f\n", t);
+ */ 
+                       return 1;
+                    }
+                  // else if scan block intersects region start or later
+                  else if ((l + scans) > 
+                           (ie->load_opts.region.y))
+                    {
+                       for (y = 0; y < scans; y++)
+                         {
+                            if (((y + l) >= ie->load_opts.region.y) &&
+                                ((y + l) < (ie->load_opts.region.y + ie->load_opts.region.h)))
+                              {
+                                 ptr += (3 * ie->load_opts.region.x);
+                                 for (x = 0; x < ie->load_opts.region.w; x++)
+                                   {
+                                      *ptr2 =
+                                        (0xff000000) | ((ptr[0]) << 16) | ((ptr[1]) << 8) | (ptr[2]);
+                                      ptr += 3;
+                                      ptr2++;
+                                   }
+                                 ptr += (3 * (w - (ie->load_opts.region.x + ie->load_opts.region.w)));
+                              }
+                            else
+                              ptr += (3 * w);
+                         }
+                    }
+               }
 	  }
+/*        
+        t = get_time() - t;
+        printf("%3.3f\n", t);
+ */
      }
    /* We finally handle RGB with 1 component */
    else if (cinfo.output_components == 1)
@@ -355,16 +537,51 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
 	     scans = cinfo.rec_outbuf_height;
 	     if ((h - l) < scans) scans = h - l;
 	     ptr = data;
-	     for (y = 0; y < scans; y++)
-	       {
-		  for (x = 0; x < w; x++)
-		    {
-		       *ptr2 =
-			 (0xff000000) | ((ptr[0]) << 16) | ((ptr[0]) << 8) | (ptr[0]);
-		       ptr++;
-		       ptr2++;
-		    }
+             if (!region)
+               {
+                  for (y = 0; y < scans; y++)
+                    {
+                       for (x = 0; x < w; x++)
+                         {
+                            *ptr2 =
+                              (0xff000000) | ((ptr[0]) << 16) | ((ptr[0]) << 8) | (ptr[0]);
+                            ptr++;
+                            ptr2++;
+                         }
+                    }
 	       }
+             else
+               {
+                  // if line # > region last line, break
+                  if (l >= (ie->load_opts.region.y + ie->load_opts.region.h))
+                    {
+                       jpeg_destroy_decompress(&cinfo);
+                       return 1;
+                    }
+                  // els if scan block intersects region start or later
+                  else if ((l + scans) > 
+                           (ie->load_opts.region.y))
+                    {
+                       for (y = 0; y < scans; y++)
+                         {
+                            if (((y + l) >= ie->load_opts.region.y) &&
+                                ((y + l) < (ie->load_opts.region.y + ie->load_opts.region.h)))
+                              {
+                                 ptr += ie->load_opts.region.x;
+                                 for (x = 0; x < ie->load_opts.region.w; x++)
+                                   {
+                                      *ptr2 =
+                                        (0xff000000) | ((ptr[0]) << 16) | ((ptr[0]) << 8) | (ptr[0]);
+                                      ptr++;
+                                      ptr2++;
+                                   }
+                                 ptr += w - (ie->load_opts.region.x + ie->load_opts.region.w);
+                              }
+                            else
+                              ptr += w;
+                         }
+                    }
+               }
 	  }
      }
 /* end data decoding */
diff --git a/src/modules/loaders/pmaps/Makefile.in b/src/modules/loaders/pmaps/Makefile.in
index 35f62e0..f6ea50c 100644
--- a/src/modules/loaders/pmaps/Makefile.in
+++ b/src/modules/loaders/pmaps/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -339,8 +342,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -453,7 +456,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/png/Makefile.in b/src/modules/loaders/png/Makefile.in
index 929b52a..dfc6318 100644
--- a/src/modules/loaders/png/Makefile.in
+++ b/src/modules/loaders/png/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -338,8 +341,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -452,7 +455,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/png/evas_image_load_png.c b/src/modules/loaders/png/evas_image_load_png.c
index c05a728..2e6738f 100644
--- a/src/modules/loaders/png/evas_image_load_png.c
+++ b/src/modules/loaders/png/evas_image_load_png.c
@@ -85,7 +85,8 @@ evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key
    png_get_IHDR(png_ptr, info_ptr, (png_uint_32 *) (&w32),
 		(png_uint_32 *) (&h32), &bit_depth, &color_type,
 		&interlace_type, NULL, NULL);
-   if ((w32 < 1) || (h32 < 1) || (w32 > 8192) || (h32 > 8192))
+   if ((w32 < 1) || (h32 < 1) || (w32 > IMG_MAX_SIZE) || (h32 > IMG_MAX_SIZE) ||
+       IMG_TOO_BIG(w32, h32))
      {
 	png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
 	goto close_file;
diff --git a/src/modules/loaders/svg/Makefile.in b/src/modules/loaders/svg/Makefile.in
index 40450bf..e2108a2 100644
--- a/src/modules/loaders/svg/Makefile.in
+++ b/src/modules/loaders/svg/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -337,8 +340,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -451,7 +454,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/svg/evas_image_load_svg.c b/src/modules/loaders/svg/evas_image_load_svg.c
index c439f2c..f441de8 100644
--- a/src/modules/loaders/svg/evas_image_load_svg.c
+++ b/src/modules/loaders/svg/evas_image_load_svg.c
@@ -14,26 +14,6 @@ Evas_Image_Load_Func evas_image_load_svg_func =
 };
 
 static int  rsvg_initialized = 0;
-static void svg_loader_unpremul_data(DATA32 *data, unsigned int len);
-
-static void
-svg_loader_unpremul_data(DATA32 *data, unsigned int len)
-{
-   DATA32  *de = data + len;
-
-   while (data < de)
-     {
-	DATA32   a = A_VAL(data);
-	
-	if (a && (a < 255))
-	  {
-	     R_VAL(data) = (R_VAL(data) * 255) / a;
-	     G_VAL(data) = (G_VAL(data) * 255) / a;
-	     B_VAL(data) = (B_VAL(data) * 255) / a;
-	  }
-	data++;
-     }
-}
 
 static int
 evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key __UNUSED__)
@@ -82,10 +62,12 @@ evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key
 	return 0;
      }
 
+   rsvg_handle_set_dpi(rsvg, 75.0);
    rsvg_handle_get_dimensions(rsvg, &dim);
    w = dim.width;
    h = dim.height;
-   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) ||
+       IMG_TOO_BIG(w, h))
      {
 //	rsvg_handle_close(rsvg, NULL);
 	g_object_unref(rsvg);
@@ -100,8 +82,8 @@ evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key
      }
    else if (ie->load_opts.dpi > 0.0)
      {
-	w = (w * ie->load_opts.dpi) / 90.0;
-	h = (h * ie->load_opts.dpi) / 90.0;
+	w = (w * ie->load_opts.dpi) / 75.0;
+	h = (h * ie->load_opts.dpi) / 75.0;
      }
    else if ((ie->load_opts.w > 0) &&
 	    (ie->load_opts.h > 0))
@@ -180,10 +162,11 @@ evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key
 	return 0;
      }
 
+   rsvg_handle_set_dpi(rsvg, 75.0);
    rsvg_handle_get_dimensions(rsvg, &dim);
    w = dim.width;
    h = dim.height;
-   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
      {
 //	rsvg_handle_close(rsvg, NULL);
 	g_object_unref(rsvg);
@@ -198,8 +181,8 @@ evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key
      }
    else if (ie->load_opts.dpi > 0.0)
      {
-	w = (w * ie->load_opts.dpi) / 90.0;
-	h = (h * ie->load_opts.dpi) / 90.0;
+	w = (w * ie->load_opts.dpi) / 75.0;
+	h = (h * ie->load_opts.dpi) / 75.0;
      }
    else if ((ie->load_opts.w > 0) &&
 	    (ie->load_opts.h > 0))
diff --git a/src/modules/loaders/tiff/Makefile.in b/src/modules/loaders/tiff/Makefile.in
index 523e1b1..95f9e8d 100644
--- a/src/modules/loaders/tiff/Makefile.in
+++ b/src/modules/loaders/tiff/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -339,8 +342,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -453,7 +456,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/tiff/evas_image_load_tiff.c b/src/modules/loaders/tiff/evas_image_load_tiff.c
index 703ed93..8d5772a 100644
--- a/src/modules/loaders/tiff/evas_image_load_tiff.c
+++ b/src/modules/loaders/tiff/evas_image_load_tiff.c
@@ -174,7 +174,8 @@ evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *ke
    if (tiff_image.alpha != EXTRASAMPLE_UNSPECIFIED)
      ie->flags.alpha = 1;
    if ((tiff_image.width < 1) || (tiff_image.height < 1) ||
-       (tiff_image.width > 8192) || (tiff_image.height > 8192))
+       (tiff_image.width > IMG_MAX_SIZE) || (tiff_image.height > IMG_MAX_SIZE) ||
+       IMG_TOO_BIG(tiff_image.width, tiff_image.height))
      {
 	TIFFClose(tif);
 	return 0;
@@ -265,17 +266,17 @@ evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *ke
 
    if (!rast)
      {
-        fprintf(stderr, "Evas Tiff loader: out of memory\n");
-
-        TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
-        TIFFClose(tif);
-
+       ERR("Evas Tiff loader: out of memory");
+       
+       TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
+       TIFFClose(tif);
+       
         return 0;
      }
 
    if (rgba_image.rgba.put.any == NULL)
      {
-        fprintf(stderr, "Evas Tiff loader: no put function");
+	ERR("Evas Tiff loader: no put function");
 
         _TIFFfree(rast);
         TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
@@ -311,7 +312,7 @@ evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *ke
      }
    else
      {
-        printf("channel bits == %i\n", (int)rgba_image.rgba.samplesperpixel);
+        INF("channel bits == %i", (int)rgba_image.rgba.samplesperpixel);
      }
 
    _TIFFfree(rast);
diff --git a/src/modules/loaders/xpm/Makefile.in b/src/modules/loaders/xpm/Makefile.in
index 25be2f4..bf34129 100644
--- a/src/modules/loaders/xpm/Makefile.in
+++ b/src/modules/loaders/xpm/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -339,8 +342,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -453,7 +456,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/loaders/xpm/evas_image_load_xpm.c b/src/modules/loaders/xpm/evas_image_load_xpm.c
index 095fe1b..f9d4a24 100644
--- a/src/modules/loaders/xpm/evas_image_load_xpm.c
+++ b/src/modules/loaders/xpm/evas_image_load_xpm.c
@@ -202,8 +202,7 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN
                        /* Header */
                        if (sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp) != 4)
 			 {
-                            fprintf(stderr,
-                                    "XPM ERROR: XPM file malformed header\n");
+			    ERR("XPM ERROR: XPM file malformed header");
                             free(line);
                             fclose(f);
                             xpm_parse_done();
@@ -211,8 +210,7 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN
 			 }
                        if ((ncolors > 32766) || (ncolors < 1))
                          {
-                            fprintf(stderr,
-                                    "XPM ERROR: XPM files with colors > 32766 or < 1 not supported\n");
+                            ERR("XPM ERROR: XPM files with colors > 32766 or < 1 not supported");
                             free(line);
                             fclose(f);
                             xpm_parse_done();
@@ -220,26 +218,31 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN
                          }
                        if ((cpp > 5) || (cpp < 1))
                          {
-                            fprintf(stderr,
-                                    "XPM ERROR: XPM files with characters per pixel > 5 or < 1not supported\n");
+			    ERR("XPM ERROR: XPM files with characters per pixel > 5 or < 1not supported");
                             free(line);
                             fclose(f);
                             xpm_parse_done();
                             return 0;
                          }
-                       if ((w > 8192) || (w < 1))
+                       if ((w > IMG_MAX_SIZE) || (w < 1))
                          {
-                            fprintf(stderr,
-                                    "XPM ERROR: Image width > 8192 or < 1 pixels for file\n");
+			    ERR("XPM ERROR: Image width > IMG_MAX_SIZE or < 1 pixels for file");
                             free(line);
                             fclose(f);
                             xpm_parse_done();
                             return 0;
                          }
-                       if ((h > 8192) || (h < 1))
+                       if ((h > IMG_MAX_SIZE) || (h < 1))
                          {
-                            fprintf(stderr,
-                                    "XPM ERROR: Image height > 8192 or < 1 pixels for file\n");
+			    ERR("XPM ERROR: Image height > IMG_MAX_SIZE or < 1 pixels for file");
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 0;
+                         }
+                       if (IMG_TOO_BIG(w, h))
+                         {
+                            ERR("XPM ERROR: Image just too big to ever allocate");
                             free(line);
                             fclose(f);
                             xpm_parse_done();
diff --git a/src/modules/savers/Makefile.in b/src/modules/savers/Makefile.in
index 8820ed2..91b12be 100644
--- a/src/modules/savers/Makefile.in
+++ b/src/modules/savers/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -273,17 +273,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -297,8 +300,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -404,7 +407,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/savers/edb/Makefile.in b/src/modules/savers/edb/Makefile.in
index 04714d6..5879476 100644
--- a/src/modules/savers/edb/Makefile.in
+++ b/src/modules/savers/edb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -335,8 +338,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -449,7 +452,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/savers/eet/Makefile.in b/src/modules/savers/eet/Makefile.in
index ed9617d..8f9618d 100644
--- a/src/modules/savers/eet/Makefile.in
+++ b/src/modules/savers/eet/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -337,8 +340,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -451,7 +454,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/savers/jpeg/Makefile.in b/src/modules/savers/jpeg/Makefile.in
index 98c6138..90e171c 100644
--- a/src/modules/savers/jpeg/Makefile.in
+++ b/src/modules/savers/jpeg/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -337,8 +340,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -451,7 +454,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/savers/jpeg/evas_image_save_jpeg.c b/src/modules/savers/jpeg/evas_image_save_jpeg.c
index fc11ccc..1e80965 100644
--- a/src/modules/savers/jpeg/evas_image_save_jpeg.c
+++ b/src/modules/savers/jpeg/evas_image_save_jpeg.c
@@ -30,25 +30,22 @@ _JPEGFatalErrorHandler(j_common_ptr cinfo)
    return;
 }
 
-static void _JPEGErrorHandler(j_common_ptr cinfo);
 static void
-_JPEGErrorHandler(j_common_ptr cinfo)
+_JPEGErrorHandler(j_common_ptr cinfo __UNUSED__)
 {
-   emptr errmgr;
+/*    emptr errmgr; */
    
-   errmgr = (emptr) cinfo->err;
+/*    errmgr = (emptr) cinfo->err; */
    return;
 }
 
-static void _JPEGErrorHandler2(j_common_ptr cinfo, int msg_level);
 static void
-_JPEGErrorHandler2(j_common_ptr cinfo, int msg_level)
+_JPEGErrorHandler2(j_common_ptr cinfo __UNUSED__, int msg_level __UNUSED__)
 {
-   emptr errmgr;
+/*    emptr errmgr; */
    
-   errmgr = (emptr) cinfo->err;
+/*    errmgr = (emptr) cinfo->err; */
    return;
-   msg_level = 0;
 }
 
 static int
diff --git a/src/modules/savers/png/Makefile.in b/src/modules/savers/png/Makefile.in
index 5090aaa..97c00ac 100644
--- a/src/modules/savers/png/Makefile.in
+++ b/src/modules/savers/png/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -339,8 +342,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -453,7 +456,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/modules/savers/tiff/Makefile.in b/src/modules/savers/tiff/Makefile.in
index 099f66a..9112a3c 100644
--- a/src/modules/savers/tiff/Makefile.in
+++ b/src/modules/savers/tiff/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -296,17 +296,20 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgconfig_requires_private = @pkgconfig_requires_private@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pthread_cflags = @pthread_cflags@
 pthread_libs = @pthread_libs@
 release_info = @release_info@
+requirement_evas = @requirement_evas@
 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@
 version_info = @version_info@
@@ -337,8 +340,8 @@ $(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; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -451,7 +454,7 @@ ID: $(HEADERS) $(SOURCES) $(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; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS

-- 
Enlightenment DR17 advanced canvas library



More information about the Pkg-e-commits mailing list