[Pkg-e-commits] [SCM] Enlightenment Foundation Library providing optimized data types branch, new-svn-snapshot, updated. debian/0.0.1_svn20081120-1-408-g9f95efd

Albin Tonnerre albin.tonnerre at gmail.com
Fri Dec 4 18:59:48 UTC 2009


The following commit has been merged in the new-svn-snapshot branch:
commit 4d59f039d8f5d1eb813beae146ec316f9b96717f
Author: Albin Tonnerre <albin.tonnerre at gmail.com>
Date:   Thu Dec 3 15:34:03 2009 +0100

    Import upstream release 0.9.9.063

diff --git a/AUTHORS b/AUTHORS
index 135909a..eae0bfb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -10,3 +10,6 @@ Arnaud de Turckheim "quarium" <quarium at gmail.com>
 Alexandre "diaxen" Becoulet <diaxen at free.fr>
 Albin "Lutin" Tonnerre <albin.tonnerre at gmail.com>
 Andre Dieb <andre.dieb at gmail.com>
+Raphael Kubo da Costa <kubo at profusion.mobi>
+Gustavo Chaves <glima at profusion.mobi>
+Fabiano Fidêncio <fidencio at profusion.mobi>
diff --git a/COPYING b/COPYING
index 5ab7695..cf546d2 100644
--- a/COPYING
+++ b/COPYING
@@ -208,6 +208,21 @@ with the Library (or with a work based on the Library) on a volume of
 a storage or distribution medium does not bring the other work under
 the scope of this License.
 
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent modules,
+and to copy and distribute the resulting executable under terms of your
+choice, provided that you also meet, for each linked independent module,
+the terms and conditions of the license of that module. An independent
+module is a module which is not derived from or based on this library.
+If you modify this library, you may extend this exception to your version
+of the library, but you are not obliged to do so. If you do not wish to
+do so, delete this exception statement from your version.
+
   3. You may opt to apply the terms of the ordinary GNU General Public
 License instead of this License to a given copy of the Library.  To do
 this, you must alter all the notices that refer to this License, so
diff --git a/Makefile.am b/Makefile.am
index 5cd99ff..d9d4551 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -104,7 +104,7 @@ benchmark:
 else
 
 benchmark:
-	@echo "reconfigure with --enable-bench"
+	@echo "reconfigure with --enable-benchmark"
 endif
 
 clean-local:
diff --git a/Makefile.in b/Makefile.in
index 8776c99..f2b4356 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,
@@ -118,6 +118,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -202,6 +203,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -222,15 +224,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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,7 +342,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)"
@@ -431,7 +436,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
@@ -798,7 +803,7 @@ doc:
 @EFL_ENABLE_BENCHMARK_TRUE@	@cd result && ../src/tests/eina_bench `date +%F_%s`
 
 @EFL_ENABLE_BENCHMARK_FALSE at benchmark:
- at EFL_ENABLE_BENCHMARK_FALSE@	@echo "reconfigure with --enable-bench"
+ at EFL_ENABLE_BENCHMARK_FALSE@	@echo "reconfigure with --enable-benchmark"
 
 clean-local:
 	@rm -rf coverage benchmark
diff --git a/aclocal.m4 b/aclocal.m4
index e2d8d1b..9529b07 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 -*-
 
@@ -461,57 +461,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
 
 
@@ -817,13 +828,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)
 # -----------------------
@@ -840,7 +851,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 f64f451..3f20ece 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
+
 /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
    systems. This function is required for `alloca.c' support on those systems.
    */
@@ -8,9 +11,6 @@
 /* Define to 1 if using `alloca.c'. */
 #undef C_ALLOCA
 
-/* Define to mention that eina is built */
-#undef EFL_EINA_BUILD
-
 /* Define to mention that ALTIVEC is supported */
 #undef EFL_HAVE_ALTIVEC
 
@@ -29,6 +29,12 @@
 /* Use by the test suite to try ememoa mempool */
 #undef EINA_EMEMOA_SUPPORT
 
+/* if set, logging is limited to this amount. */
+#undef EINA_LOG_LEVEL_MAXIMUM
+
+/* Build eina_log lock using pthread_spin */
+#undef EINA_PTHREAD_SPIN
+
 /* disable safety checks for NULL pointers and like. */
 #undef EINA_SAFETY_CHECKS
 
@@ -73,6 +79,9 @@
 /* Set to 1 if evil package is installed */
 #undef HAVE_EVIL
 
+/* Define to 1 if you have the `fnmatch' function. */
+#undef HAVE_FNMATCH
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
@@ -159,9 +168,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
 
 /* Macro declaring a function argument to be unused */
 #undef __UNUSED__
diff --git a/configure b/configure
index 05fd86d..c30a6b7 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 eina 0.0.2.062.
+# Generated by GNU Autoconf 2.63 for eina 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='eina'
 PACKAGE_TARNAME='eina'
-PACKAGE_VERSION='0.0.2.062'
-PACKAGE_STRING='eina 0.0.2.062'
+PACKAGE_VERSION='0.9.9.063'
+PACKAGE_STRING='eina 0.9.9.063'
 PACKAGE_BUGREPORT='enlightenment-devel at lists.sourceforge.net'
 
 ac_unique_file="configure.ac"
@@ -764,188 +786,232 @@ 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
-VMAJ
-version_info
-release_info
-MODULE_ARCH
-EFL_SIMD_FLAGS
-EFL_PTHREAD_CFLAGS
-EFL_PTHREAD_LIBS
-EINA_CONFIGURE_MAGIC_DEBUG
-SAFETY_CHECKS_TRUE
-SAFETY_CHECKS_FALSE
-EINA_CONFIGURE_SAFETY_CHECKS
-EINA_CONFIGURE_DEFAULT_MEMPOOL
-EINA_ENABLE_BENCHMARK_E17_TRUE
-EINA_ENABLE_BENCHMARK_E17_FALSE
-PKG_CONFIG
-efl_have_doxygen
-efl_doxygen
-EFL_BUILD_DOC_TRUE
-EFL_BUILD_DOC_FALSE
-EVIL_CFLAGS
-EVIL_LIBS
-EMEMOA_CFLAGS
-EMEMOA_LIBS
-EINA_ENABLE_EMEMOA_TRUE
-EINA_ENABLE_EMEMOA_FALSE
-EINA_CPPFLAGS
-EINA_CFLAGS
-EINA_LIBS
-lt_enable_auto_import
-ALLOCA
-dlopen_libs
-EINA_BUILD_CHAINED_POOL_TRUE
-EINA_BUILD_CHAINED_POOL_FALSE
-EINA_STATIC_BUILD_CHAINED_POOL_TRUE
-EINA_STATIC_BUILD_CHAINED_POOL_FALSE
-EINA_BUILD_EMEMOA_FIXED_TRUE
-EINA_BUILD_EMEMOA_FIXED_FALSE
-EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE
-EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE
-EINA_BUILD_EMEMOA_UNKNOWN_TRUE
-EINA_BUILD_EMEMOA_UNKNOWN_FALSE
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE
-EINA_BUILD_FIXED_BITMAP_TRUE
-EINA_BUILD_FIXED_BITMAP_FALSE
-EINA_STATIC_BUILD_FIXED_BITMAP_TRUE
-EINA_STATIC_BUILD_FIXED_BITMAP_FALSE
-EINA_BUILD_PASS_THROUGH_TRUE
-EINA_BUILD_PASS_THROUGH_FALSE
-EINA_STATIC_BUILD_PASS_THROUGH_TRUE
-EINA_STATIC_BUILD_PASS_THROUGH_FALSE
-CHECK_CFLAGS
-CHECK_LIBS
-EFL_ENABLE_TESTS_TRUE
-EFL_ENABLE_TESTS_FALSE
-have_lcov
-EFL_COVERAGE_CFLAGS
-EFL_COVERAGE_LIBS
-EFL_ENABLE_COVERAGE_TRUE
-EFL_ENABLE_COVERAGE_FALSE
-EFL_ENABLE_BENCHMARK_TRUE
-EFL_ENABLE_BENCHMARK_FALSE
-EVAS_CFLAGS
-EVAS_LIBS
-EINA_HAVE_EVAS_TRUE
-EINA_HAVE_EVAS_FALSE
-ECORE_CFLAGS
-ECORE_LIBS
-EINA_HAVE_ECORE_TRUE
-EINA_HAVE_ECORE_FALSE
-GLIB_CFLAGS
-GLIB_LIBS
-EINA_HAVE_GLIB_TRUE
-EINA_HAVE_GLIB_FALSE
+ac_subst_vars='LTLIBOBJS
 LIBOBJS
-LTLIBOBJS'
+requirement_eina
+EINA_HAVE_GLIB_FALSE
+EINA_HAVE_GLIB_TRUE
+GLIB_LIBS
+GLIB_CFLAGS
+EINA_HAVE_ECORE_FALSE
+EINA_HAVE_ECORE_TRUE
+ECORE_LIBS
+ECORE_CFLAGS
+EINA_HAVE_EVAS_FALSE
+EINA_HAVE_EVAS_TRUE
+EVAS_LIBS
+EVAS_CFLAGS
+EFL_ENABLE_BENCHMARK_FALSE
+EFL_ENABLE_BENCHMARK_TRUE
+EFL_ENABLE_COVERAGE_FALSE
+EFL_ENABLE_COVERAGE_TRUE
+EFL_COVERAGE_LIBS
+EFL_COVERAGE_CFLAGS
+have_lcov
+EFL_ENABLE_TESTS_FALSE
+EFL_ENABLE_TESTS_TRUE
+CHECK_LIBS
+CHECK_CFLAGS
+EINA_STATIC_BUILD_PASS_THROUGH_FALSE
+EINA_STATIC_BUILD_PASS_THROUGH_TRUE
+EINA_BUILD_PASS_THROUGH_FALSE
+EINA_BUILD_PASS_THROUGH_TRUE
+EINA_STATIC_BUILD_FIXED_BITMAP_FALSE
+EINA_STATIC_BUILD_FIXED_BITMAP_TRUE
+EINA_BUILD_FIXED_BITMAP_FALSE
+EINA_BUILD_FIXED_BITMAP_TRUE
+EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE
+EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE
+EINA_BUILD_EMEMOA_UNKNOWN_FALSE
+EINA_BUILD_EMEMOA_UNKNOWN_TRUE
+EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE
+EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE
+EINA_BUILD_EMEMOA_FIXED_FALSE
+EINA_BUILD_EMEMOA_FIXED_TRUE
+EINA_STATIC_BUILD_CHAINED_POOL_FALSE
+EINA_STATIC_BUILD_CHAINED_POOL_TRUE
+EINA_BUILD_CHAINED_POOL_FALSE
+EINA_BUILD_CHAINED_POOL_TRUE
+fnmatch_libs
+dlopen_libs
+ALLOCA
+lt_enable_auto_import
+EINA_LIBS
+EINA_CFLAGS
+EINA_CPPFLAGS
+EINA_ENABLE_EMEMOA_FALSE
+EINA_ENABLE_EMEMOA_TRUE
+EMEMOA_LIBS
+EMEMOA_CFLAGS
+EFL_EINA_BUILD
+EVIL_LIBS
+EVIL_CFLAGS
+EFL_BUILD_DOC_FALSE
+EFL_BUILD_DOC_TRUE
+efl_doxygen
+efl_have_doxygen
+pkgconfig_requires_private
+PKG_CONFIG
+EINA_ENABLE_BENCHMARK_E17_FALSE
+EINA_ENABLE_BENCHMARK_E17_TRUE
+EINA_CONFIGURE_DEFAULT_MEMPOOL
+EINA_AMALGAMATION_FALSE
+EINA_AMALGAMATION_TRUE
+EINA_CONFIGURE_SAFETY_CHECKS
+SAFETY_CHECKS_FALSE
+SAFETY_CHECKS_TRUE
+EINA_CONFIGURE_MAGIC_DEBUG
+EFL_PTHREAD_LIBS
+EFL_PTHREAD_CFLAGS
+EFL_SIMD_FLAGS
+MODULE_ARCH
+release_info
+version_info
+VMAJ
+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_cpu_mmx
+enable_cpu_sse
+enable_cpu_sse2
+enable_cpu_altivec
+enable_pthread
+enable_magic_debug
+enable_safety_checks
+with_internal_maximum_log_level
+enable_amalgamation
+enable_default_mempool
+enable_stringshare_usage
+enable_e17
+enable_doc
+with_doxygen
+enable_ememoa
+enable_assert
+enable_chained_pool
+enable_ememoa_fixed
+enable_ememoa_unknown
+enable_fixed_bitmap
+enable_pass_through
+enable_tests
+enable_coverage
+enable_benchmark
+enable_evas
+enable_ecore
+enable_glib
+'
       ac_precious_vars='build_alias
 host_alias
 target_alias
@@ -973,6 +1039,8 @@ GLIB_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
@@ -1071,13 +1139,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 ;;
@@ -1090,13 +1166,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- \
@@ -1287,22 +1371,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.
@@ -1322,7 +1422,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; }; }
     ;;
@@ -1331,16 +1431,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}
     ;;
 
@@ -1349,22 +1449,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
 
@@ -1379,7 +1495,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
@@ -1395,10 +1511,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; }; }
 
 
@@ -1406,12 +1522,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
@@ -1438,12 +1554,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=.
@@ -1470,7 +1586,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 eina 0.0.2.062 to adapt to many kinds of systems.
+\`configure' configures eina 0.9.9.063 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1492,9 +1608,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
@@ -1504,25 +1620,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/eina]
-  --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/eina]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -1540,11 +1656,12 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of eina 0.0.2.062:";;
+     short | recursive ) echo "Configuration of eina 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
@@ -1558,11 +1675,13 @@ Optional Features:
   --disable-cpu-sse       disable sse code [default=enabled]
   --disable-cpu-sse2      disable sse2 code [default=enabled]
   --disable-cpu-altivec   disable altivec code [default=enabled]
-  --disable-pthread       enable POSIX threads code [default=no]
+  --disable-pthread       enable POSIX threads code [default=yes]
   --disable-magic-debug   disable magic debug of eina structure
                           [default=enabled]
   --disable-safety-checks disable safety checks for NULL pointers and like.
                           [default=enabled]
+  --enable-amalgamation   enable generation of one single file with all source
+                          code in it, helps compiler optimizations.
   --enable-default-mempool
                           Default memory allocator could be faster for some
                           computer. [default=disabled]
@@ -1595,6 +1714,11 @@ Optional Packages:
   --with-pic              try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-internal-maximum-log-level=NUMBER
+                          limit eina internal log level to the given number,
+                          any call to EINA_LOG() with values greater than this
+                          will be compiled out, ignoring runtime settings, but
+                          saving function calls.
   --with-doxygen=FILE     doxygen program to use [default=doxygen]
 
 Some influential environment variables:
@@ -1634,15 +1758,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/ ;;
@@ -1678,7 +1804,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
@@ -1687,11 +1813,11 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-eina configure 0.0.2.062
-generated by GNU Autoconf 2.61
+eina 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
@@ -1701,8 +1827,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 eina $as_me 0.0.2.062, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+It was created by eina $as_me 0.9.9.063, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
 
@@ -1738,7 +1864,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
 
@@ -1773,7 +1899,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'" ;;
@@ -1825,11 +1951,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
@@ -1859,9 +1986,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
 
@@ -1876,9 +2003,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
@@ -1894,8 +2021,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 &&
@@ -1937,21 +2064,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
@@ -1961,16 +2091,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
 
@@ -1984,29 +2114,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
@@ -2016,10 +2155,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
 
@@ -2054,6 +2195,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"
 
 
 
@@ -2074,8 +2216,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
 
@@ -2090,34 +2232,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
@@ -2134,27 +2276,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
@@ -2179,10 +2321,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.
@@ -2195,7 +2337,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
@@ -2206,11 +2348,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
 
 
@@ -2219,10 +2361,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.
@@ -2235,7 +2377,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
@@ -2246,11 +2388,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
@@ -2258,12 +2400,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
@@ -2276,10 +2414,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.
@@ -2292,7 +2430,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
@@ -2303,11 +2441,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
 
 
@@ -2316,10 +2454,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.
@@ -2337,7 +2475,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
@@ -2360,11 +2498,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
 
 
@@ -2375,10 +2513,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.
@@ -2391,7 +2529,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
@@ -2402,11 +2540,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
 
 
@@ -2419,10 +2557,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.
@@ -2435,7 +2573,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
@@ -2446,11 +2584,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
 
 
@@ -2462,12 +2600,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
@@ -2477,44 +2611,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
@@ -2533,27 +2673,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
@@ -2564,10 +2699,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'
@@ -2578,7 +2714,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
@@ -2605,25 +2741,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
@@ -2632,49 +2770,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
@@ -2683,31 +2825,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.  */
@@ -2730,40 +2874,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.  */
@@ -2789,20 +2936,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
@@ -2812,15 +2960,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
@@ -2847,20 +2999,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=""
@@ -2885,20 +3038,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
@@ -2924,20 +3078,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
 
 
@@ -2952,8 +3107,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
@@ -2969,10 +3124,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
@@ -3043,20 +3198,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
 
 
@@ -3072,15 +3228,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
 
 
@@ -3091,10 +3247,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
@@ -3132,26 +3288,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
@@ -3166,8 +3326,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"
@@ -3190,11 +3350,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
@@ -3223,17 +3384,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
@@ -3246,8 +3419,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.
@@ -3257,8 +3430,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
@@ -3281,9 +3454,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
@@ -3294,26 +3467,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`
@@ -3324,15 +3494,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
@@ -3367,8 +3537,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
@@ -3380,10 +3550,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.
@@ -3396,7 +3566,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
@@ -3407,22 +3577,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
@@ -3439,12 +3610,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
 
@@ -3469,8 +3640,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
@@ -3497,8 +3668,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.
@@ -3525,8 +3696,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
@@ -3543,7 +3714,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='eina'
- VERSION='0.0.2.062'
+ VERSION='0.9.9.063'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3581,10 +3752,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.
@@ -3597,7 +3768,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
@@ -3608,11 +3779,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
 
 
@@ -3621,10 +3792,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.
@@ -3637,7 +3808,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
@@ -3648,11 +3819,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
@@ -3660,12 +3831,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
@@ -3690,10 +3857,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
@@ -3781,8 +3948,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
@@ -3800,6 +3967,7 @@ fi
 ac_config_headers="$ac_config_headers config.h"
 
 
+
 enable_win32_dll=yes
 
 case $host in
@@ -3807,10 +3975,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.
@@ -3823,7 +3991,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
@@ -3834,11 +4002,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
 
 
@@ -3847,10 +4015,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.
@@ -3863,7 +4031,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
@@ -3874,11 +4042,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
@@ -3886,12 +4054,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
@@ -3903,10 +4067,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.
@@ -3919,7 +4083,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
@@ -3930,11 +4094,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
 
 
@@ -3943,10 +4107,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.
@@ -3959,7 +4123,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
@@ -3970,11 +4134,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
@@ -3982,12 +4146,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
@@ -3999,10 +4159,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.
@@ -4015,7 +4175,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
@@ -4026,11 +4186,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
 
 
@@ -4039,10 +4199,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.
@@ -4055,7 +4215,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
@@ -4066,11 +4226,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
@@ -4078,12 +4238,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
@@ -4117,14 +4273,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'
 
 
 
@@ -4140,48 +4296,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`
@@ -4196,31 +4347,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
 
@@ -4237,42 +4380,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; }
+{ $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
-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
-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`
@@ -4287,74 +4425,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`
@@ -4369,75 +4493,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`
@@ -4452,33 +4562,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"
 
 
@@ -4512,8 +4613,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
@@ -4542,14 +4643,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
@@ -4579,19 +4680,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
@@ -4603,8 +4704,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
 
 
@@ -4615,10 +4716,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.
@@ -4664,8 +4765,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
@@ -4675,10 +4776,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.
@@ -4691,7 +4792,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
@@ -4702,11 +4803,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
 
 
@@ -4719,10 +4820,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.
@@ -4735,7 +4836,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
@@ -4746,11 +4847,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
 
 
@@ -4762,12 +4863,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
@@ -4786,45 +4883,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:4796: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:4893: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4799: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:4896: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4802: output\"" >&5)
+  (eval echo "\"\$as_me:4899: 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"
@@ -4941,11 +5038,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
 
@@ -4958,8 +5055,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"
@@ -4968,18 +5065,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
@@ -5013,15 +5110,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
 "" | " "*) ;;
@@ -5047,10 +5144,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=
@@ -5237,8 +5334,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
@@ -5257,10 +5354,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.
@@ -5273,7 +5370,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
@@ -5284,11 +5381,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
 
 
@@ -5297,10 +5394,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.
@@ -5313,7 +5410,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
@@ -5324,11 +5421,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
@@ -5336,12 +5433,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
@@ -5366,10 +5459,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.
@@ -5382,7 +5475,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
@@ -5393,11 +5486,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
 
 
@@ -5406,10 +5499,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.
@@ -5422,7 +5515,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
@@ -5433,11 +5526,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
@@ -5445,12 +5538,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
@@ -5469,10 +5558,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.
@@ -5485,7 +5574,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
@@ -5496,11 +5585,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
 
 
@@ -5509,10 +5598,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.
@@ -5525,7 +5614,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
@@ -5536,11 +5625,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
@@ -5548,12 +5637,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
@@ -5630,10 +5715,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.
@@ -5751,14 +5836,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
@@ -5815,7 +5900,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
@@ -5850,11 +5935,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
 
 
@@ -5894,7 +5979,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*)
@@ -5909,11 +5994,11 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5912 "configure"' > conftest.$ac_ext
+  echo '#line 5997 "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
@@ -5951,7 +6036,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*)
@@ -6001,10 +6086,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'
@@ -6033,26 +6118,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
@@ -6062,8 +6151,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"
@@ -6075,7 +6164,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*)
@@ -6102,10 +6191,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.
@@ -6118,7 +6207,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
@@ -6129,11 +6218,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
 
 
@@ -6142,10 +6231,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.
@@ -6158,7 +6247,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
@@ -6169,11 +6258,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
@@ -6181,12 +6270,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
@@ -6198,10 +6283,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.
@@ -6214,7 +6299,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
@@ -6225,11 +6310,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
 
 
@@ -6238,10 +6323,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.
@@ -6254,7 +6339,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
@@ -6265,11 +6350,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
@@ -6277,12 +6362,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
@@ -6294,10 +6375,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.
@@ -6310,7 +6391,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
@@ -6321,11 +6402,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
 
 
@@ -6334,10 +6415,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.
@@ -6350,7 +6431,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
@@ -6361,11 +6442,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
@@ -6373,12 +6454,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
@@ -6390,10 +6467,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.
@@ -6406,7 +6483,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
@@ -6417,11 +6494,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
 
 
@@ -6430,10 +6507,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.
@@ -6446,7 +6523,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
@@ -6457,11 +6534,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
@@ -6469,12 +6546,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
@@ -6486,10 +6559,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.
@@ -6502,7 +6575,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
@@ -6513,11 +6586,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
 
 
@@ -6526,10 +6599,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.
@@ -6542,7 +6615,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
@@ -6553,11 +6626,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
@@ -6565,12 +6638,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
@@ -6605,10 +6674,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
@@ -6632,12 +6701,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
@@ -6664,33 +6733,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' ;;
@@ -6731,15 +6804,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"
@@ -6771,20 +6844,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.
@@ -6808,13 +6882,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
@@ -6822,7 +6897,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.
@@ -6847,8 +6922,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
@@ -6876,20 +6951,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.
@@ -6913,13 +6989,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
@@ -6927,7 +7004,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.
@@ -6943,11 +7020,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
@@ -6957,10 +7036,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.  */
@@ -6987,20 +7066,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
@@ -7092,37 +7172,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
@@ -7144,11 +7227,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.  */
@@ -7166,20 +7249,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"
@@ -7187,12 +7271,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
@@ -7203,11 +7290,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.  */
@@ -7225,20 +7312,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"
@@ -7246,12 +7334,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
@@ -7429,10 +7520,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
@@ -7444,8 +7535,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
 
 
@@ -7537,10 +7628,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
 [\\/*] |  ?:[\\/]*)
@@ -7590,11 +7681,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
 
 
@@ -7603,10 +7694,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
 [\\/*] |  ?:[\\/]*)
@@ -7656,11 +7747,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
 
 
@@ -7740,10 +7831,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
@@ -7758,11 +7849,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:7761: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7852: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7765: \$? = $ac_status" >&5
+   echo "$as_me:7856: \$? = $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.
@@ -7775,8 +7866,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"
@@ -7795,8 +7886,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,'
@@ -8052,8 +8143,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; }
 
 
 
@@ -8064,10 +8155,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
@@ -8082,11 +8173,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:8085: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8176: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8089: \$? = $ac_status" >&5
+   echo "$as_me:8180: \$? = $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.
@@ -8099,8 +8190,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
@@ -8123,10 +8214,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"
@@ -8151,8 +8242,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
     :
@@ -8166,10 +8257,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
@@ -8187,11 +8278,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:8190: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8281: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8194: \$? = $ac_status" >&5
+   echo "$as_me:8285: \$? = $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
@@ -8213,18 +8304,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
@@ -8242,11 +8333,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:8245: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8336: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8249: \$? = $ac_status" >&5
+   echo "$as_me:8340: \$? = $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
@@ -8268,8 +8359,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; }
 
 
 
@@ -8277,19 +8368,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
@@ -8301,8 +8392,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=
@@ -8761,18 +8852,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/,/^$/ {
@@ -8787,12 +8881,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
@@ -8828,18 +8923,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/,/^$/ {
@@ -8854,12 +8952,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
@@ -9078,27 +9177,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"
@@ -9356,8 +9459,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
@@ -9393,15 +9496,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
@@ -9419,7 +9522,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
@@ -9431,8 +9534,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
@@ -9595,8 +9698,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
@@ -10038,29 +10141,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
@@ -10286,8 +10393,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"
@@ -10388,8 +10495,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" ||
@@ -10413,8 +10520,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
@@ -10458,10 +10565,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"
@@ -10493,33 +10600,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
 
@@ -10532,10 +10643,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.  */
@@ -10588,38 +10699,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"
@@ -10651,39 +10766,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.  */
@@ -10736,38 +10855,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"
@@ -10799,39 +10922,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"
@@ -10863,39 +10990,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"
@@ -10927,33 +11058,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
 
@@ -10992,10 +11127,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
@@ -11003,7 +11138,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11006 "configure"
+#line 11141 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11069,7 +11204,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=$?
@@ -11087,15 +11222,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
@@ -11103,7 +11238,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11106 "configure"
+#line 11241 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11169,7 +11304,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=$?
@@ -11187,8 +11322,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"
@@ -11226,13 +11361,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
@@ -11240,16 +11375,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
@@ -11266,13 +11401,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
@@ -11292,15 +11427,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; }
 
 
 
@@ -11346,7 +11481,8 @@ version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
 
 ### Needed information
 
-release="ver-svn-03"
+requirement_eina=""
+
 case "$host_os" in
    mingw32ce* | cegcc*)
       MODULE_ARCH="$host_os-$host_cpu"
@@ -11380,10 +11516,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build mmx code" >&5
-echo $ECHO_N "checking whether to build mmx code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_cpu_mmx}" >&5
-echo "${ECHO_T}${_efl_enable_cpu_mmx}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build mmx code" >&5
+$as_echo_n "checking whether to build mmx code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_cpu_mmx}" >&5
+$as_echo "${_efl_enable_cpu_mmx}" >&6; }
 
 
 _efl_build_cpu_mmx="no"
@@ -11395,10 +11531,10 @@ if test "x${_efl_enable_cpu_mmx}" = "xyes" ; then
    esac
 fi
 
-{ echo "$as_me:$LINENO: checking whether mmx instructions set is available" >&5
-echo $ECHO_N "checking whether mmx instructions set is available... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_mmx}" >&5
-echo "${ECHO_T}${_efl_build_cpu_mmx}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether mmx instructions set is available" >&5
+$as_echo_n "checking whether mmx instructions set is available... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_build_cpu_mmx}" >&5
+$as_echo "${_efl_build_cpu_mmx}" >&6; }
 
 
 if test "x${_efl_build_cpu_mmx}" = "xyes" ; then
@@ -11433,13 +11569,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_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
@@ -11448,7 +11585,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        have_linker_option="yes"
        EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -mmmx"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	have_linker_option="no"
@@ -11464,10 +11601,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
    CFLAGS=${SAVE_CFLAGS}
 
-   { echo "$as_me:$LINENO: checking whether mmx linker option is supported" >&5
-echo $ECHO_N "checking whether mmx linker option is supported... $ECHO_C" >&6; }
-   { echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
-echo "${ECHO_T}${have_linker_option}" >&6; }
+   { $as_echo "$as_me:$LINENO: checking whether mmx linker option is supported" >&5
+$as_echo_n "checking whether mmx linker option is supported... " >&6; }
+   { $as_echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
+$as_echo "${have_linker_option}" >&6; }
 fi
 
 
@@ -11502,10 +11639,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build sse code" >&5
-echo $ECHO_N "checking whether to build sse code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_cpu_sse}" >&5
-echo "${ECHO_T}${_efl_enable_cpu_sse}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build sse code" >&5
+$as_echo_n "checking whether to build sse code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_cpu_sse}" >&5
+$as_echo "${_efl_enable_cpu_sse}" >&6; }
 
 
 _efl_build_cpu_sse="no"
@@ -11517,10 +11654,10 @@ if test "x${_efl_enable_cpu_sse}" = "xyes" ; then
    esac
 fi
 
-{ echo "$as_me:$LINENO: checking whether sse instructions set is available" >&5
-echo $ECHO_N "checking whether sse instructions set is available... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_sse}" >&5
-echo "${ECHO_T}${_efl_build_cpu_sse}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether sse instructions set is available" >&5
+$as_echo_n "checking whether sse instructions set is available... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_build_cpu_sse}" >&5
+$as_echo "${_efl_build_cpu_sse}" >&6; }
 
 
 if test "x${_efl_build_cpu_sse}" = "xyes" ; then
@@ -11555,13 +11692,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_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
@@ -11571,7 +11709,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse"
 
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	have_linker_option="no"
@@ -11587,10 +11725,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
    CFLAGS=${SAVE_CFLAGS}
 
-   { echo "$as_me:$LINENO: checking whether sse linker option is supported" >&5
-echo $ECHO_N "checking whether sse linker option is supported... $ECHO_C" >&6; }
-   { echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
-echo "${ECHO_T}${have_linker_option}" >&6; }
+   { $as_echo "$as_me:$LINENO: checking whether sse linker option is supported" >&5
+$as_echo_n "checking whether sse linker option is supported... " >&6; }
+   { $as_echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
+$as_echo "${have_linker_option}" >&6; }
 fi
 
 
@@ -11626,10 +11764,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to build sse2 code" >&5
-echo $ECHO_N "checking whether to build sse2 code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_cpu_sse2}" >&5
-echo "${ECHO_T}${_efl_enable_cpu_sse2}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build sse2 code" >&5
+$as_echo_n "checking whether to build sse2 code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_cpu_sse2}" >&5
+$as_echo "${_efl_enable_cpu_sse2}" >&6; }
 
 
 _efl_build_cpu_sse2="no"
@@ -11641,10 +11779,10 @@ if test "x${_efl_enable_cpu_sse2}" = "xyes" ; then
    esac
 fi
 
-{ echo "$as_me:$LINENO: checking whether sse2 instructions set is available" >&5
-echo $ECHO_N "checking whether sse2 instructions set is available... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_sse2}" >&5
-echo "${ECHO_T}${_efl_build_cpu_sse2}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether sse2 instructions set is available" >&5
+$as_echo_n "checking whether sse2 instructions set is available... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_build_cpu_sse2}" >&5
+$as_echo "${_efl_build_cpu_sse2}" >&6; }
 
 
 if test "x${_efl_build_cpu_sse2}" = "xyes" ; then
@@ -11679,13 +11817,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_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
@@ -11695,7 +11834,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse2"
 
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	have_linker_option="no"
@@ -11711,10 +11850,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
    CFLAGS=${SAVE_CFLAGS}
 
-   { echo "$as_me:$LINENO: checking whether sse2 linker option is supported" >&5
-echo $ECHO_N "checking whether sse2 linker option is supported... $ECHO_C" >&6; }
-   { echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
-echo "${ECHO_T}${have_linker_option}" >&6; }
+   { $as_echo "$as_me:$LINENO: checking whether sse2 linker option is supported" >&5
+$as_echo_n "checking whether sse2 linker option is supported... " >&6; }
+   { $as_echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
+$as_echo "${have_linker_option}" >&6; }
 fi
 
 
@@ -11750,10 +11889,10 @@ else
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build altivec code" >&5
-echo $ECHO_N "checking whether to build altivec code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_cpu_altivec}" >&5
-echo "${ECHO_T}${_efl_enable_cpu_altivec}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build altivec code" >&5
+$as_echo_n "checking whether to build altivec code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_cpu_altivec}" >&5
+$as_echo "${_efl_enable_cpu_altivec}" >&6; }
 
 
 _efl_build_cpu_altivec="no"
@@ -11765,10 +11904,10 @@ if test "x${_efl_enable_cpu_altivec}" = "xyes" ; then
    esac
 fi
 
-{ echo "$as_me:$LINENO: checking whether altivec instructions set is available" >&5
-echo $ECHO_N "checking whether altivec instructions set is available... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_altivec}" >&5
-echo "${ECHO_T}${_efl_build_cpu_altivec}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether altivec instructions set is available" >&5
+$as_echo_n "checking whether altivec instructions set is available... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_build_cpu_altivec}" >&5
+$as_echo "${_efl_build_cpu_altivec}" >&6; }
 
 
 _efl_have_faltivec="no"
@@ -11805,13 +11944,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_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
@@ -11819,7 +11959,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   _efl_have_faltivec="yes"
        _efl_altivec_flag="-faltivec"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	_efl_have_faltivec="no"
@@ -11853,13 +11993,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_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
@@ -11867,7 +12008,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   _efl_have_faltivec="yes"
           _efl_altivec_flag="-maltivec"
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	_efl_have_faltivec="no"
@@ -11884,10 +12025,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
    CFLAGS=${SAVE_CFLAGS}
 
-   { echo "$as_me:$LINENO: checking whether altivec linker option is supported" >&5
-echo $ECHO_N "checking whether altivec linker option is supported... $ECHO_C" >&6; }
-   { echo "$as_me:$LINENO: result: ${_efl_have_faltivec}" >&5
-echo "${ECHO_T}${_efl_have_faltivec}" >&6; }
+   { $as_echo "$as_me:$LINENO: checking whether altivec linker option is supported" >&5
+$as_echo_n "checking whether altivec linker option is supported... " >&6; }
+   { $as_echo "$as_me:$LINENO: result: ${_efl_have_faltivec}" >&5
+$as_echo "${_efl_have_faltivec}" >&6; }
 fi
 
 EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} ${_efl_altivec_flag}"
@@ -11922,105 +12063,30 @@ if test "${enable_pthread+set}" = set; then
 
 else
   _efl_enable_pthread="yes"
-
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build POSIX threads code" >&5
-echo $ECHO_N "checking whether to build POSIX threads code... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_pthread}" >&5
-echo "${ECHO_T}${_efl_enable_pthread}" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether to build POSIX threads code" >&5
+$as_echo_n "checking whether to build POSIX threads code... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_pthread}" >&5
+$as_echo "${_efl_enable_pthread}" >&6; }
 
 
 _efl_have_pthread="no"
 
 if test "x${_efl_enable_pthread}" = "xyes" ; then
-
-   SAVE_CFLAGS=${CFLAGS}
-   CFLAGS="-pthread"
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <pthread.h>
-
-int
-main ()
-{
-
-  ;
-  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 "echo \"\$as_me:$LINENO: $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
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-
-       _efl_have_pthread="yes"
-       EFL_PTHREAD_CFLAGS="-pthread"
-       EFL_PTHREAD_LIBS="-pthread"
-
-
-else
-  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
-
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-   CFLAGS=${SAVE_CFLAGS}
-fi
-
-{ echo "$as_me:$LINENO: checking whether compiler need -pthread POSIX for threads support" >&5
-echo $ECHO_N "checking whether compiler need -pthread POSIX for threads support... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_have_pthread}" >&5
-echo "${ECHO_T}${_efl_have_pthread}" >&6; }
-
-if test "x${_efl_have_pthread}" = "xno" -a "x${_efl_enable_pthread}" = "xyes" ; then
    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
@@ -12036,32 +12102,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
@@ -12075,51 +12142,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 ##
@@ -12128,34 +12196,46 @@ _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
-
-		  _efl_have_pthread="yes"
-		  EFL_PTHREAD_LIBS="-lpthread"
-
+if test "x$ac_cv_header_pthread_h" = x""yes; then
+  _efl_have_pthread="yes"
 else
+  _efl_have_pthread="no"
+fi
 
-		  _efl_have_pthread="no"
 
 fi
 
+{ $as_echo "$as_me:$LINENO: checking whether system support POSIX threads" >&5
+$as_echo_n "checking whether system support POSIX threads... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_pthread}" >&5
+$as_echo "${_efl_enable_pthread}" >&6; }
 
-
-   { echo "$as_me:$LINENO: checking whether system support POSIX threads" >&5
-echo $ECHO_N "checking whether system support POSIX threads... $ECHO_C" >&6; }
-   { echo "$as_me:$LINENO: result: ${_efl_enable_pthread}" >&5
-echo "${ECHO_T}${_efl_enable_pthread}" >&6; }
+if test "x${_efl_have_pthread}" = "xyes" ; then
+   case "$host_os" in
+      mingw*)
+         EFL_PTHREAD_CFLAGS="-mthreads"
+         EFL_PTHREAD_LIBS="-mthreads -lpthreadGC2"
+         ;;
+      solaris*)
+         EFL_PTHREAD_CFLAGS="-mt"
+         EFL_PTHREAD_LIBS="-mt"
+         ;;
+      *)
+         EFL_PTHREAD_CFLAGS="-pthread"
+         EFL_PTHREAD_LIBS="-pthread"
+         ;;
+   esac
 fi
 
 
@@ -12176,6 +12256,83 @@ else
 fi
 
 
+if test "x${have_pthread}" = "xyes"; then
+   { $as_echo "$as_me:$LINENO: checking for pthread_spin_init in -lpthread" >&5
+$as_echo_n "checking for pthread_spin_init in -lpthread... " >&6; }
+if test "${ac_cv_lib_pthread_pthread_spin_init+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $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 pthread_spin_init ();
+int
+main ()
+{
+return pthread_spin_init ();
+  ;
+  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_pthread_pthread_spin_init=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pthread_pthread_spin_init=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_pthread_pthread_spin_init" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_spin_init" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_spin_init" = x""yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define EINA_PTHREAD_SPIN 1
+_ACEOF
+
+
+fi
+
+fi
 
 ### Additional options to configure
 
@@ -12194,10 +12351,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether magic debug is enable" >&5
-echo $ECHO_N "checking whether magic debug is enable... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_magic_debug}" >&5
-echo "${ECHO_T}${have_magic_debug}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether magic debug is enable" >&5
+$as_echo_n "checking whether magic debug is enable... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_magic_debug}" >&5
+$as_echo "${have_magic_debug}" >&6; }
 
 if test "x${have_magic_debug}" = "xyes" ; then
    EINA_CONFIGURE_MAGIC_DEBUG="#define EINA_MAGIC_DEBUG"
@@ -12219,10 +12376,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to do safety checking on api parameters" >&5
-echo $ECHO_N "checking whether to do safety checking on api parameters... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $have_safety_checks" >&5
-echo "${ECHO_T}$have_safety_checks" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to do safety checking on api parameters" >&5
+$as_echo_n "checking whether to do safety checking on api parameters... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $have_safety_checks" >&5
+$as_echo "$have_safety_checks" >&6; }
 
  if test "x$have_safety_checks" = "xyes"; then
   SAFETY_CHECKS_TRUE=
@@ -12242,6 +12399,55 @@ _ACEOF
 fi
 
 
+with_max_log_level="<unset>"
+
+# Check whether --with-internal-maximum-log-level was given.
+if test "${with_internal_maximum_log_level+set}" = set; then
+  withval=$with_internal_maximum_log_level;
+    if test "x${withval}" != "xno"; then
+       if echo "${withval}" | grep '^[0-9]\+$' >/dev/null 2>/dev/null; then
+          { $as_echo "$as_me:$LINENO: ignoring any EINA_LOG() with level greater than ${withval}" >&5
+$as_echo "$as_me: ignoring any EINA_LOG() with level greater than ${withval}" >&6;}
+
+cat >>confdefs.h <<_ACEOF
+#define EINA_LOG_LEVEL_MAXIMUM ${withval}
+_ACEOF
+
+          with_max_log_level="${withval}"
+       else
+          { { $as_echo "$as_me:$LINENO: error: --with-internal-maximum-log-level takes a decimal number, got \"${withval}\" instead." >&5
+$as_echo "$as_me: error: --with-internal-maximum-log-level takes a decimal number, got \"${withval}\" instead." >&2;}
+   { (exit 1); exit 1; }; }
+       fi
+    fi
+
+else
+  :
+fi
+
+
+# Check whether --enable-amalgamation was given.
+if test "${enable_amalgamation+set}" = set; then
+  enableval=$enable_amalgamation; if test "x${enableval}" = "xyes"; then
+       do_amalgamation="yes"
+    else
+       do_amalgamation="no"
+    fi
+
+else
+  do_amalgamation="no"
+
+fi
+
+ if test "x${do_amalgamation}" = "xyes"; then
+  EINA_AMALGAMATION_TRUE=
+  EINA_AMALGAMATION_FALSE='#'
+else
+  EINA_AMALGAMATION_TRUE='#'
+  EINA_AMALGAMATION_FALSE=
+fi
+
+
 # Choose best memory pool
 # Check whether --enable-default-mempool was given.
 if test "${enable_default_mempool+set}" = set; then
@@ -12257,10 +12463,10 @@ else
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether to use default mempool allocator" >&5
-echo $ECHO_N "checking whether to use default mempool allocator... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_default_mempool}" >&5
-echo "${ECHO_T}${have_default_mempool}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to use default mempool allocator" >&5
+$as_echo_n "checking whether to use default mempool allocator... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_default_mempool}" >&5
+$as_echo "${have_default_mempool}" >&6; }
 
 if test "x${have_default_mempool}" = "xyes" ; then
    EINA_CONFIGURE_DEFAULT_MEMPOOL="#define EINA_DEFAULT_MEMPOOL"
@@ -12282,10 +12488,10 @@ else
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether to report stringshare usage" >&5
-echo $ECHO_N "checking whether to report stringshare usage... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_stringshare_usage}" >&5
-echo "${ECHO_T}${have_stringshare_usage}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to report stringshare usage" >&5
+$as_echo_n "checking whether to report stringshare usage... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_stringshare_usage}" >&5
+$as_echo "${have_stringshare_usage}" >&6; }
 
 if test "x${have_stringshare_usage}" = "xyes"; then
 
@@ -12311,10 +12517,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether e17 real data benchmark are built" >&5
-echo $ECHO_N "checking whether e17 real data benchmark are built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_benchmark_e17}" >&5
-echo "${ECHO_T}${enable_benchmark_e17}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether e17 real data benchmark are built" >&5
+$as_echo_n "checking whether e17 real data benchmark are built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${enable_benchmark_e17}" >&5
+$as_echo "${enable_benchmark_e17}" >&6; }
 
  if test "x${enable_benchmark_e17}" = "xyes"; then
   EINA_ENABLE_BENCHMARK_E17_TRUE=
@@ -12335,10 +12541,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.
@@ -12351,7 +12557,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
@@ -12362,11 +12568,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
 
 
@@ -12375,10 +12581,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.
@@ -12391,7 +12597,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
@@ -12402,11 +12608,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
@@ -12414,12 +12620,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
@@ -12432,10 +12634,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.
@@ -12448,7 +12650,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
@@ -12459,11 +12661,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
 
 
@@ -12472,10 +12674,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.
@@ -12493,7 +12695,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
@@ -12516,11 +12718,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
 
 
@@ -12531,10 +12733,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.
@@ -12547,7 +12749,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
@@ -12558,11 +12760,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
 
 
@@ -12575,10 +12777,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.
@@ -12591,7 +12793,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
@@ -12602,11 +12804,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
 
 
@@ -12618,12 +12820,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
@@ -12633,50 +12831,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.  */
@@ -12702,20 +12906,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
@@ -12725,15 +12930,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
@@ -12760,20 +12969,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=""
@@ -12798,20 +13008,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
@@ -12837,20 +13048,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
 
 
@@ -12865,8 +13077,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
@@ -12882,10 +13094,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
@@ -12956,20 +13168,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
 
 
@@ -12985,15 +13198,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
 
 
@@ -13011,10 +13224,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
   [\\/]* | ?:[\\/]*)
@@ -13029,7 +13242,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
@@ -13041,11 +13254,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
 
 
@@ -13054,10 +13267,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
   [\\/]* | ?:[\\/]*)
@@ -13072,7 +13285,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
@@ -13084,11 +13297,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
@@ -13096,12 +13309,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
@@ -13113,19 +13322,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
 
 
@@ -13144,10 +13361,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
 
@@ -13161,10 +13378,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.
@@ -13177,7 +13394,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
@@ -13189,11 +13406,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
 
 
@@ -13203,17 +13420,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.
@@ -13226,7 +13443,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
@@ -13238,11 +13455,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
 
 
@@ -13255,12 +13472,14 @@ 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
 
+else
+   efl_have_doxygen="no"
 fi
 
 
@@ -13269,7 +13488,7 @@ if ! test "x${efl_have_doxygen}" = "xyes" ; then
    efl_enable_doc="no"
 fi
 
- if test "x${efl_enable_doc}" = "xyes"; then
+ if test "x${efl_have_doxygen}" = "xyes"; then
   EFL_BUILD_DOC_TRUE=
   EFL_BUILD_DOC_FALSE='#'
 else
@@ -13278,7 +13497,7 @@ else
 fi
 
 
-if test "x${efl_enable_doc}" = "xyes" ; then
+if test "x${efl_have_doxygen}" = "xyes" ; then
   build_doc="yes"
 else
   build_doc="no"
@@ -13291,22 +13510,23 @@ fi
 
 # Evil library for compilation on Windows CE
 
+EFL_EINA_BUILD=""
 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
@@ -13321,10 +13541,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
@@ -13352,7 +13572,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
 
@@ -13363,7 +13583,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
 
@@ -13376,7 +13596,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.
 
@@ -13386,7 +13608,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.
 
@@ -13396,12 +13618,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
 
@@ -13409,9 +13631,12 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_EVIL 1
 _ACEOF
 
+      requirement_eina="evil"
+      EFL_EINA_BUILD="-DEFL_EINA_BUILD"
    ;;
 esac
 
+
 # Check ememoa memory pool library
 
 # Check whether --enable-ememoa was given.
@@ -13428,26 +13653,26 @@ else
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether to use ememoa for memory pool" >&5
-echo $ECHO_N "checking whether to use ememoa for memory pool... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $enable_ememoa" >&5
-echo "${ECHO_T}$enable_ememoa" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to use ememoa for memory pool" >&5
+$as_echo_n "checking whether to use ememoa for memory pool... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $enable_ememoa" >&5
+$as_echo "$enable_ememoa" >&6; }
 
 if test "x${enable_ememoa}" = "xyes" ; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EMEMOA" >&5
-echo $ECHO_N "checking for EMEMOA... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EMEMOA" >&5
+$as_echo_n "checking for EMEMOA... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EMEMOA_CFLAGS"; then
         pkg_cv_EMEMOA_CFLAGS="$EMEMOA_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ememoa >= 0.0.26 \"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ememoa >= 0.0.26 \"") >&5
   ($PKG_CONFIG --exists --print-errors "ememoa >= 0.0.26 ") 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_EMEMOA_CFLAGS=`$PKG_CONFIG --cflags "ememoa >= 0.0.26 " 2>/dev/null`
 else
@@ -13462,10 +13687,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EMEMOA_LIBS="$EMEMOA_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ememoa >= 0.0.26 \"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ememoa >= 0.0.26 \"") >&5
   ($PKG_CONFIG --exists --print-errors "ememoa >= 0.0.26 ") 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_EMEMOA_LIBS=`$PKG_CONFIG --libs "ememoa >= 0.0.26 " 2>/dev/null`
 else
@@ -13493,8 +13718,8 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EMEMOA_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; }
                 enable_ememoa="no"
 
 elif test $pkg_failed = untried; then
@@ -13503,8 +13728,8 @@ elif test $pkg_failed = untried; then
 else
 	EMEMOA_CFLAGS=$pkg_cv_EMEMOA_CFLAGS
 	EMEMOA_LIBS=$pkg_cv_EMEMOA_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; }
 	enable_ememoa="yes"
 fi
 fi
@@ -13527,20 +13752,20 @@ fi
 
 ### Checks for header files
 
-  { echo "$as_me:$LINENO: checking whether to enable assertions" >&5
-echo $ECHO_N "checking whether to enable assertions... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking whether to enable assertions" >&5
+$as_echo_n "checking whether to enable assertions... " >&6; }
   # Check whether --enable-assert was given.
 if test "${enable_assert+set}" = set; then
-  enableval=$enable_assert; { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  enableval=$enable_assert; { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
 
 cat >>confdefs.h <<\_ACEOF
 #define NDEBUG 1
 _ACEOF
 
 else
-  { 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
 
 
@@ -13551,11 +13776,11 @@ fi
 
 ac_header_dirent=no
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }
+  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&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.  */
@@ -13581,20 +13806,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"
@@ -13602,12 +13828,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_hdr" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
@@ -13616,10 +13845,10 @@ fi
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-  { echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
 if test "${ac_cv_search_opendir+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
@@ -13657,26 +13886,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_opendir=$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_opendir+set}" = set; then
@@ -13691,8 +13924,8 @@ fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
@@ -13700,10 +13933,10 @@ if test "$ac_res" != no; then
 fi
 
 else
-  { echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
 if test "${ac_cv_search_opendir+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
@@ -13741,26 +13974,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_opendir=$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_opendir+set}" = set; then
@@ -13775,8 +14012,8 @@ fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
@@ -13785,10 +14022,10 @@ fi
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
 if test "${ac_cv_header_time+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -13815,20 +14052,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_time=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_time=no
@@ -13836,8 +14074,8 @@ fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
 if test $ac_cv_header_time = yes; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -13847,6 +14085,147 @@ _ACEOF
 fi
 
 
+if test "${ac_cv_header_fnmatch_h+set}" = set; then
+  { $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
+  $as_echo_n "(cached) " >&6
+fi
+{ $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?
+{ $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
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <fnmatch.h>
+_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 fnmatch.h presence" >&5
+$as_echo_n "checking fnmatch.h 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 <fnmatch.h>
+_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: 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:* )
+    { $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 ##
+## -------------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $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
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_fnmatch_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_fnmatch_h" >&5
+$as_echo "$ac_cv_header_fnmatch_h" >&6; }
+
+fi
+if test "x$ac_cv_header_fnmatch_h" = x""yes; then
+  dummy="yes"
+else
+  { { $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
+
+
 
 ### Checks for types
 
@@ -13855,10 +14234,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.  */
@@ -13930,20 +14309,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
@@ -13951,38 +14331,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;
@@ -13994,33 +14424,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;
@@ -14032,20 +14463,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
@@ -14053,29 +14485,69 @@ 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.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #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
+  # 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.  */
-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 ();
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
   ;
   return 0;
 }
@@ -14086,30 +14558,101 @@ 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
-  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
 
 
@@ -14128,14 +14671,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;
@@ -14147,60 +14690,67 @@ 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 inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
 if test "${ac_cv_c_inline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
@@ -14223,20 +14773,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_inline=$ac_kw
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -14247,8 +14798,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
 
 
 case $ac_cv_c_inline in
@@ -14268,11 +14819,11 @@ 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.  */
@@ -14303,20 +14854,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"
@@ -14327,8 +14879,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
 
@@ -14344,7 +14896,7 @@ _ACEOF
   else
 
 cat >>confdefs.h <<\_ACEOF
-#define __UNUSED__
+#define __UNUSED__ /**/
 _ACEOF
 
 fi
@@ -14352,10 +14904,10 @@ fi
 
    case $ac_cv_prog_cc_stdc in
   no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;;
-  *) { echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C99... $ECHO_C" >&6; }
+  *) { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
 if test "${ac_cv_prog_cc_c99+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c99=no
 ac_save_CC=$CC
@@ -14502,7 +15054,7 @@ main ()
   return 0;
 }
 _ACEOF
-for ac_arg in '' -std=gnu99 -c99 -qlanglvl=extc99
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
 do
   CC="$ac_save_CC $ac_arg"
   rm -f conftest.$ac_objext
@@ -14511,20 +15063,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_c99=$ac_arg
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 
@@ -14540,23 +15093,23 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c99" 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_c99"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c99" >&6; } ;;
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c99" != xno; then
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
 else
-  { 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
@@ -14627,20 +15180,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
 
 
@@ -14656,15 +15210,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
 if test "x$ac_cv_prog_cc_c89" != xno; then
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
@@ -14677,19 +15231,19 @@ fi
 
  ;;
 esac
-  { echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5
-echo $ECHO_N "checking for $CC option to accept ISO Standard C... $ECHO_C" >&6; }
+  { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
   if test "${ac_cv_prog_cc_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 fi
 
   case $ac_cv_prog_cc_stdc in
-  no) { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
-  '') { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
-  *) { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6; } ;;
+  no) { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  '') { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  *) { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
 esac
 
 
@@ -14704,27 +15258,121 @@ case "$host_os" in
       ;;
 esac
 
-EINA_CFLAGS="${EFL_COVERAGE_CFLAGS}"
+EINA_CFLAGS=
 case "${host_os}" in
    cegcc*)
-      EINA_CFLAGS="${EINA_CFLAGS} ${EVIL_CFLAGS} -mwin32"
+      EINA_CFLAGS="${EVIL_CFLAGS} -mwin32"
    ;;
    mingw*)
-      EINA_CFLAGS="${EINA_CFLAGS} ${EVIL_CFLAGS}"
+      EINA_CFLAGS="${EVIL_CFLAGS}"
    ;;
 esac
 
-if test "x$enable_coverage" = "xyes" ; then
-   EINA_CFLAGS="${EINA_CFLAGS} ${EFL_DEBUG_CFLAGS}"
+if ! test "x${VMIC}" = "x" ; then
+   CFLAGS_save="${CFLAGS}"
+   CFLAGS="${CFLAGS} -Wall -W"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  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
+  have_Wall="yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	have_Wall="no"
 fi
 
-if ! test "${VMIC}" = "x" ; then
-   EINA_CFLAGS="${EINA_CFLAGS} -Wall -W" # -Werror
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   { $as_echo "$as_me:$LINENO: checking whether the compiler supports -Wall" >&5
+$as_echo_n "checking whether the compiler supports -Wall... " >&6; }
+   { $as_echo "$as_me:$LINENO: result: ${have_Wall}" >&5
+$as_echo "${have_Wall}" >&6; }
+   CFLAGS="${CFLAGS_save}"
+   if test "x${have_Wall}" = "xyes" ; then
+      EINA_CFLAGS="${EINA_CFLAGS} -Wall -W" # -Werror
+   fi
 fi
 
-GCC_MAJOR_VERSION=`$CC -dumpversion | sed "s/\..*//"`
+CFLAGS_save="${CFLAGS}"
+CFLAGS="${CFLAGS} -fno-strict-aliasing"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  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
+  have_no_strict_aliasing="yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	have_no_strict_aliasing="no"
+fi
 
-if test "$GCC_MAJOR_VERSION" = "3" ; then
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: checking whether the compiler supports -fno-strict-aliasing" >&5
+$as_echo_n "checking whether the compiler supports -fno-strict-aliasing... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_no_strict_aliasing}" >&5
+$as_echo "${have_no_strict_aliasing}" >&6; }
+CFLAGS="${CFLAGS_save}"
+if test "x${have_no_strict_aliasing}" = "xyes" ; then
    EINA_CFLAGS="${EINA_CFLAGS} -fno-strict-aliasing"
 fi
 
@@ -14733,32 +15381,27 @@ fi
 
 
 ### Checks for linker characteristics
-EINA_LIBS="${EFL_COVERAGE_LIBS}"
+EINA_LIBS=
 lt_enable_auto_import=""
 case "${host_os}" in
    mingw* | cegcc*)
-
-cat >>confdefs.h <<\_ACEOF
-#define EFL_EINA_BUILD 1
-_ACEOF
-
-      EINA_LIBS="${EINA_LIBS} -ldl ${EVIL_LIBS} -lm"
+      EINA_LIBS="-ldl ${EVIL_LIBS} -lm"
       lt_enable_auto_import="-Wl,--enable-auto-import"
    ;;
    dragonfly*|openbsd*)
-      EINA_LIBS="${EINA_LIBS} -lm"
+      EINA_LIBS="-lm"
    ;;
    freebsd*|netbsd*)
-      EINA_LIBS="${EINA_LIBS} -lrt -lm"
+      EINA_LIBS="-lrt -lm"
    ;;
    darwin*)
-      EINA_LIBS="${EINA_LIBS} -lm"
+      EINA_LIBS="-lm"
    ;;
    cygwin*)
-      EINA_LIBS="${EINA_LIBS} -ldl -lm"
+      EINA_LIBS="-ldl -lm"
    ;;
    *)
-      EINA_LIBS="${EINA_LIBS} -ldl -lrt -lm"
+      EINA_LIBS="-ldl -lrt -lm"
    ;;
 esac
 
@@ -14768,10 +15411,10 @@ esac
 ### Checks for library functions
 # 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.  */
@@ -14795,31 +15438,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
@@ -14828,10 +15475,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.  */
@@ -14875,31 +15522,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
 
@@ -14920,10 +15571,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.  */
@@ -14947,15 +15598,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.  */
@@ -15008,33 +15659,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
@@ -15046,10 +15704,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
@@ -15087,36 +15745,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
@@ -15140,11 +15801,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.  */
@@ -15197,35 +15858,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
@@ -15237,11 +15905,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.  */
@@ -15294,35 +15962,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
@@ -15332,10 +16007,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"
@@ -15367,43 +16042,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"
@@ -15435,33 +16114,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
@@ -15470,8 +16153,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
@@ -15479,6 +16162,209 @@ echo "$as_me: error: Cannot find dlopen" >&2;}
 esac
 
 
+fnmatch_libs=""
+
+for ac_func in fnmatch
+do
+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
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  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
+  eval "$as_ac_var=yes"
+else
+  $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 '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 `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ res="yes"
+else
+  res="no"
+fi
+done
+
+if test "x$res" = "xno"; then
+   { $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
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$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 fnmatch ();
+int
+main ()
+{
+return fnmatch ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' fnmatch evil iberty; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  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_search_fnmatch=$ac_res
+else
+  $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
+  break
+fi
+done
+if test "${ac_cv_search_fnmatch+set}" = set; then
+  :
+else
+  ac_cv_search_fnmatch=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $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"
+  res="yes"
+else
+  res="no"
+fi
+
+   if test "x$res" = "xno"; then
+      { { $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
+   fnmatch_libs="${ac_cv_search_fnmatch}"
+fi
+
+
 ### Modules
 
 
@@ -15508,20 +16394,20 @@ if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
    have_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to enable chained pool built" >&5
-echo $ECHO_N "checking whether to enable chained pool built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_module}" >&5
-echo "${ECHO_T}${have_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable chained pool built" >&5
+$as_echo_n "checking whether to enable chained pool built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_module}" >&5
+$as_echo "${have_module}" >&6; }
 
 build_module="no"
 if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
    build_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build chained pool" >&5
-echo $ECHO_N "checking whether to build chained pool... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${build_module}" >&5
-echo "${ECHO_T}${build_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build chained pool" >&5
+$as_echo_n "checking whether to build chained pool... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${build_module}" >&5
+$as_echo "${build_module}" >&6; }
 
 static_module="no"
 if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
@@ -15589,20 +16475,20 @@ if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
    have_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to enable ememoa fixed built" >&5
-echo $ECHO_N "checking whether to enable ememoa fixed built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_module}" >&5
-echo "${ECHO_T}${have_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable ememoa fixed built" >&5
+$as_echo_n "checking whether to enable ememoa fixed built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_module}" >&5
+$as_echo "${have_module}" >&6; }
 
 build_module="no"
 if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
    build_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build ememoa fixed" >&5
-echo $ECHO_N "checking whether to build ememoa fixed... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${build_module}" >&5
-echo "${ECHO_T}${build_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build ememoa fixed" >&5
+$as_echo_n "checking whether to build ememoa fixed... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${build_module}" >&5
+$as_echo "${build_module}" >&6; }
 
 static_module="no"
 if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
@@ -15670,20 +16556,20 @@ if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
    have_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to enable ememoa unknown built" >&5
-echo $ECHO_N "checking whether to enable ememoa unknown built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_module}" >&5
-echo "${ECHO_T}${have_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable ememoa unknown built" >&5
+$as_echo_n "checking whether to enable ememoa unknown built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_module}" >&5
+$as_echo "${have_module}" >&6; }
 
 build_module="no"
 if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
    build_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build ememoa unknown" >&5
-echo $ECHO_N "checking whether to build ememoa unknown... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${build_module}" >&5
-echo "${ECHO_T}${build_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build ememoa unknown" >&5
+$as_echo_n "checking whether to build ememoa unknown... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${build_module}" >&5
+$as_echo "${build_module}" >&6; }
 
 static_module="no"
 if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
@@ -15751,20 +16637,20 @@ if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
    have_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to enable fixed bitmap built" >&5
-echo $ECHO_N "checking whether to enable fixed bitmap built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_module}" >&5
-echo "${ECHO_T}${have_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable fixed bitmap built" >&5
+$as_echo_n "checking whether to enable fixed bitmap built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_module}" >&5
+$as_echo "${have_module}" >&6; }
 
 build_module="no"
 if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
    build_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build fixed bitmap" >&5
-echo $ECHO_N "checking whether to build fixed bitmap... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${build_module}" >&5
-echo "${ECHO_T}${build_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build fixed bitmap" >&5
+$as_echo_n "checking whether to build fixed bitmap... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${build_module}" >&5
+$as_echo "${build_module}" >&6; }
 
 static_module="no"
 if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
@@ -15832,20 +16718,20 @@ if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
    have_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to enable pass through built" >&5
-echo $ECHO_N "checking whether to enable pass through built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${have_module}" >&5
-echo "${ECHO_T}${have_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to enable pass through built" >&5
+$as_echo_n "checking whether to enable pass through built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${have_module}" >&5
+$as_echo "${have_module}" >&6; }
 
 build_module="no"
 if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
    build_module="yes"
 fi
 
-{ echo "$as_me:$LINENO: checking whether to build pass through" >&5
-echo $ECHO_N "checking whether to build pass through... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${build_module}" >&5
-echo "${ECHO_T}${build_module}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to build pass through" >&5
+$as_echo_n "checking whether to build pass through... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${build_module}" >&5
+$as_echo "${build_module}" >&6; }
 
 static_module="no"
 if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
@@ -15909,28 +16795,28 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether tests are built" >&5
-echo $ECHO_N "checking whether tests are built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_tests}" >&5
-echo "${ECHO_T}${_efl_enable_tests}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether tests are built" >&5
+$as_echo_n "checking whether tests are built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_tests}" >&5
+$as_echo "${_efl_enable_tests}" >&6; }
 
 
 
 if test "x${_efl_enable_tests}" = "xyes" ; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for CHECK" >&5
-echo $ECHO_N "checking for CHECK... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for CHECK" >&5
+$as_echo_n "checking for CHECK... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$CHECK_CFLAGS"; then
         pkg_cv_CHECK_CFLAGS="$CHECK_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.5\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.5\"") >&5
   ($PKG_CONFIG --exists --print-errors "check >= 0.9.5") 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_CHECK_CFLAGS=`$PKG_CONFIG --cflags "check >= 0.9.5" 2>/dev/null`
 else
@@ -15945,10 +16831,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_CHECK_LIBS="$CHECK_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.5\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.5\"") >&5
   ($PKG_CONFIG --exists --print-errors "check >= 0.9.5") 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_CHECK_LIBS=`$PKG_CONFIG --libs "check >= 0.9.5" 2>/dev/null`
 else
@@ -15976,16 +16862,16 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$CHECK_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; }
                 _efl_enable_tests="no"
 elif test $pkg_failed = untried; then
 	_efl_enable_tests="no"
 else
 	CHECK_CFLAGS=$pkg_cv_CHECK_CFLAGS
 	CHECK_LIBS=$pkg_cv_CHECK_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; }
 	dummy="yes"
 fi
 fi
@@ -16008,6 +16894,7 @@ fi
 
 
 
+
 # Check whether --enable-coverage was given.
 if test "${enable_coverage+set}" = set; then
   enableval=$enable_coverage;
@@ -16022,27 +16909,27 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether to use profiling instrumentation" >&5
-echo $ECHO_N "checking whether to use profiling instrumentation... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $_efl_enable_coverage" >&5
-echo "${ECHO_T}$_efl_enable_coverage" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether to use profiling instrumentation" >&5
+$as_echo_n "checking whether to use profiling instrumentation... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $_efl_enable_coverage" >&5
+$as_echo "$_efl_enable_coverage" >&6; }
 
 
 if test ! "x${enable_tests}" = "xyes" -a "x$_efl_enable_coverage" = "xyes" ; then
-   { echo "$as_me:$LINENO: WARNING: Coverage report requested but tests not being built, disable profiling instrumentation." >&5
-echo "$as_me: WARNING: Coverage report requested but tests not being built, disable profiling instrumentation." >&2;}
-   { echo "$as_me:$LINENO: WARNING: Run configure with --enable-tests" >&5
-echo "$as_me: WARNING: Run configure with --enable-tests" >&2;}
+   { $as_echo "$as_me:$LINENO: WARNING: Coverage report requested but tests not being built, disable profiling instrumentation." >&5
+$as_echo "$as_me: WARNING: Coverage report requested but tests not being built, disable profiling instrumentation." >&2;}
+   { $as_echo "$as_me:$LINENO: WARNING: Run configure with --enable-tests" >&5
+$as_echo "$as_me: WARNING: Run configure with --enable-tests" >&2;}
    _efl_enable_coverage="no"
 fi
 
 if test "x$_efl_enable_coverage" = "xyes" ; then
    # Extract the first word of "lcov", so it can be a program name with args.
 set dummy lcov; 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_have_lcov+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$have_lcov"; then
   ac_cv_prog_have_lcov="$have_lcov" # Let the user override the test.
@@ -16055,7 +16942,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_have_lcov="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
@@ -16067,11 +16954,11 @@ fi
 fi
 have_lcov=$ac_cv_prog_have_lcov
 if test -n "$have_lcov"; then
-  { echo "$as_me:$LINENO: result: $have_lcov" >&5
-echo "${ECHO_T}$have_lcov" >&6; }
+  { $as_echo "$as_me:$LINENO: result: $have_lcov" >&5
+$as_echo "$have_lcov" >&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
 
 
@@ -16081,8 +16968,8 @@ fi
 # remove any optimisation flag and force debug symbols
       EFL_DEBUG_CFLAGS="-g -O0 -DDEBUG"
    else
-      { echo "$as_me:$LINENO: WARNING: lcov is not found, disable profiling instrumentation" >&5
-echo "$as_me: WARNING: lcov is not found, disable profiling instrumentation" >&2;}
+      { $as_echo "$as_me:$LINENO: WARNING: lcov is not found, disable profiling instrumentation" >&5
+$as_echo "$as_me: WARNING: lcov is not found, disable profiling instrumentation" >&2;}
       _efl_enable_coverage="no"
    fi
 fi
@@ -16105,6 +16992,12 @@ else
    enable_coverage="no"
 fi
 
+EINA_CFLAGS="${EINA_CFLAGS} ${EFL_COVERAGE_CFLAGS}"
+EINA_LIBS="${EINA_LIBS} ${EFL_COVERAGE_LIBS}"
+if test "x$enable_coverage" = "xyes" ; then
+   EINA_CFLAGS="${EINA_CFLAGS} ${EFL_DEBUG_CFLAGS}"
+fi
+
 
 
 
@@ -16122,10 +17015,10 @@ else
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether benchmark are built" >&5
-echo $ECHO_N "checking whether benchmark are built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_enable_benchmark}" >&5
-echo "${ECHO_T}${_efl_enable_benchmark}" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether benchmark are built" >&5
+$as_echo_n "checking whether benchmark are built... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: ${_efl_enable_benchmark}" >&5
+$as_echo "${_efl_enable_benchmark}" >&6; }
 
  if test "x${_efl_enable_benchmark}" = "xyes"; then
   EFL_ENABLE_BENCHMARK_TRUE=
@@ -16164,18 +17057,18 @@ fi
 if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EVAS" >&5
-echo $ECHO_N "checking for EVAS... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for EVAS" >&5
+$as_echo_n "checking for EVAS... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$EVAS_CFLAGS"; then
         pkg_cv_EVAS_CFLAGS="$EVAS_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
   ($PKG_CONFIG --exists --print-errors "evas") 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_EVAS_CFLAGS=`$PKG_CONFIG --cflags "evas" 2>/dev/null`
 else
@@ -16190,10 +17083,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_EVAS_LIBS="$EVAS_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
   ($PKG_CONFIG --exists --print-errors "evas") 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_EVAS_LIBS=`$PKG_CONFIG --libs "evas" 2>/dev/null`
 else
@@ -16221,16 +17114,16 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EVAS_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_module="no"
 elif test $pkg_failed = untried; then
 	have_module="no"
 else
 	EVAS_CFLAGS=$pkg_cv_EVAS_CFLAGS
 	EVAS_LIBS=$pkg_cv_EVAS_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_module="yes"
 fi
 fi
@@ -16275,18 +17168,18 @@ fi
 if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for ECORE" >&5
-echo $ECHO_N "checking for ECORE... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ECORE" >&5
+$as_echo_n "checking for ECORE... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$ECORE_CFLAGS"; then
         pkg_cv_ECORE_CFLAGS="$ECORE_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
   ($PKG_CONFIG --exists --print-errors "ecore") 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_ECORE_CFLAGS=`$PKG_CONFIG --cflags "ecore" 2>/dev/null`
 else
@@ -16301,10 +17194,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_ECORE_LIBS="$ECORE_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
   ($PKG_CONFIG --exists --print-errors "ecore") 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_ECORE_LIBS=`$PKG_CONFIG --libs "ecore" 2>/dev/null`
 else
@@ -16332,16 +17225,16 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$ECORE_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_module="no"
 elif test $pkg_failed = untried; then
 	have_module="no"
 else
 	ECORE_CFLAGS=$pkg_cv_ECORE_CFLAGS
 	ECORE_LIBS=$pkg_cv_ECORE_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_module="yes"
 fi
 fi
@@ -16386,18 +17279,18 @@ fi
 if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
 
 pkg_failed=no
-{ echo "$as_me:$LINENO: checking for GLIB" >&5
-echo $ECHO_N "checking for GLIB... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for GLIB" >&5
+$as_echo_n "checking for GLIB... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
     if test -n "$GLIB_CFLAGS"; then
         pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "glib-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_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null`
 else
@@ -16412,10 +17305,10 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_GLIB_LIBS="$GLIB_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
   ($PKG_CONFIG --exists --print-errors "glib-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_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null`
 else
@@ -16443,16 +17336,16 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GLIB_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_module="no"
 elif test $pkg_failed = untried; then
 	have_module="no"
 else
 	GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS
 	GLIB_LIBS=$pkg_cv_GLIB_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_module="yes"
 fi
 fi
@@ -16476,6 +17369,8 @@ fi
 
 
 
+
+
 ### Create the .pc.in file according to the major version
 #cat > ${srcdir}/eina-${VMAJ}.pc.in << EOF
 #prefix=@prefix@
@@ -16522,11 +17417,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
@@ -16559,12 +17455,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
@@ -16580,7 +17476,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"
@@ -16592,166 +17488,175 @@ 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 "${SAFETY_CHECKS_TRUE}" && test -z "${SAFETY_CHECKS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"SAFETY_CHECKS\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"SAFETY_CHECKS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"SAFETY_CHECKS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${EINA_AMALGAMATION_TRUE}" && test -z "${EINA_AMALGAMATION_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_AMALGAMATION\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"SAFETY_CHECKS\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_AMALGAMATION\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_ENABLE_BENCHMARK_E17_TRUE}" && test -z "${EINA_ENABLE_BENCHMARK_E17_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" 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 "${EINA_ENABLE_EMEMOA_TRUE}" && test -z "${EINA_ENABLE_EMEMOA_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+
 if test -z "${EINA_BUILD_CHAINED_POOL_TRUE}" && test -z "${EINA_BUILD_CHAINED_POOL_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_CHAINED_POOL\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_BUILD_CHAINED_POOL\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_STATIC_BUILD_CHAINED_POOL_TRUE}" && test -z "${EINA_STATIC_BUILD_CHAINED_POOL_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_BUILD_EMEMOA_FIXED_TRUE}" && test -z "${EINA_BUILD_EMEMOA_FIXED_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_EMEMOA_FIXED\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_BUILD_EMEMOA_FIXED\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE}" && test -z "${EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_BUILD_EMEMOA_UNKNOWN_TRUE}" && test -z "${EINA_BUILD_EMEMOA_UNKNOWN_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_EMEMOA_UNKNOWN\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_BUILD_EMEMOA_UNKNOWN\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE}" && test -z "${EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_BUILD_FIXED_BITMAP_TRUE}" && test -z "${EINA_BUILD_FIXED_BITMAP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_FIXED_BITMAP\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_BUILD_FIXED_BITMAP\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_STATIC_BUILD_FIXED_BITMAP_TRUE}" && test -z "${EINA_STATIC_BUILD_FIXED_BITMAP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_BUILD_PASS_THROUGH_TRUE}" && test -z "${EINA_BUILD_PASS_THROUGH_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_PASS_THROUGH\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_PASS_THROUGH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_BUILD_PASS_THROUGH\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_BUILD_PASS_THROUGH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_STATIC_BUILD_PASS_THROUGH_TRUE}" && test -z "${EINA_STATIC_BUILD_PASS_THROUGH_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EFL_ENABLE_TESTS_TRUE}" && test -z "${EFL_ENABLE_TESTS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EFL_ENABLE_TESTS\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EFL_ENABLE_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EFL_ENABLE_TESTS\" was never defined.
+$as_echo "$as_me: error: conditional \"EFL_ENABLE_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EFL_ENABLE_COVERAGE_TRUE}" && test -z "${EFL_ENABLE_COVERAGE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EFL_ENABLE_COVERAGE\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EFL_ENABLE_COVERAGE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EFL_ENABLE_COVERAGE\" was never defined.
+$as_echo "$as_me: error: conditional \"EFL_ENABLE_COVERAGE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EFL_ENABLE_BENCHMARK_TRUE}" && test -z "${EFL_ENABLE_BENCHMARK_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EFL_ENABLE_BENCHMARK\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EFL_ENABLE_BENCHMARK\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EFL_ENABLE_BENCHMARK\" was never defined.
+$as_echo "$as_me: error: conditional \"EFL_ENABLE_BENCHMARK\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_HAVE_EVAS_TRUE}" && test -z "${EINA_HAVE_EVAS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_EVAS\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_EVAS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_HAVE_EVAS\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_HAVE_EVAS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_HAVE_ECORE_TRUE}" && test -z "${EINA_HAVE_ECORE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_ECORE\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_ECORE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_HAVE_ECORE\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_HAVE_ECORE\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 if test -z "${EINA_HAVE_GLIB_TRUE}" && test -z "${EINA_HAVE_GLIB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_GLIB\" was never defined.
+  { { $as_echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_GLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_HAVE_GLIB\" was never defined.
+$as_echo "$as_me: error: conditional \"EINA_HAVE_GLIB\" 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.
@@ -16764,7 +17669,7 @@ ac_cs_silent=false
 SHELL=\${CONFIG_SHELL-$SHELL}
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ## --------------------- ##
 ## M4sh Initialization.  ##
 ## --------------------- ##
@@ -16774,7 +17679,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
@@ -16796,17 +17701,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.
@@ -16822,8 +17755,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.
@@ -16846,7 +17777,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
 
@@ -16859,17 +17790,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 &&
@@ -16891,7 +17815,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
@@ -16942,7 +17866,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
@@ -16970,7 +17894,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
@@ -16983,19 +17906,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
@@ -17020,10 +17946,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
@@ -17045,8 +17971,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 eina $as_me 0.0.2.062, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+This file was extended by eina $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
@@ -17059,7 +17985,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"
@@ -17067,22 +18002,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
@@ -17096,13 +18032,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="\\
-eina config.status 0.0.2.062
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+eina 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."
 
@@ -17110,11 +18046,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
@@ -17136,30 +18073,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; }; } ;;
 
@@ -17178,27 +18121,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
 #
@@ -17332,6 +18277,47 @@ enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quot
 enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
 old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
 striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
+LD_='`$ECHO "X$LD_" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds_='`$ECHO "X$old_archive_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_='`$ECHO "X$compiler_" | $Xsed -e "$delay_single_quote_subst"`'
+GCC_='`$ECHO "X$GCC_" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_='`$ECHO "X$lt_prog_compiler_no_builtin_flag_" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_='`$ECHO "X$lt_prog_compiler_wl_" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_='`$ECHO "X$lt_prog_compiler_pic_" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static_='`$ECHO "X$lt_prog_compiler_static_" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_='`$ECHO "X$lt_cv_prog_compiler_c_o_" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc_='`$ECHO "X$archive_cmds_need_lc_" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_='`$ECHO "X$enable_shared_with_static_runtimes_" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_='`$ECHO "X$export_dynamic_flag_spec_" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec_='`$ECHO "X$whole_archive_flag_spec_" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object_='`$ECHO "X$compiler_needs_object_" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_='`$ECHO "X$old_archive_from_new_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_='`$ECHO "X$old_archive_from_expsyms_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_='`$ECHO "X$archive_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds_='`$ECHO "X$archive_expsym_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds_='`$ECHO "X$module_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds_='`$ECHO "X$module_expsym_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld_='`$ECHO "X$with_gnu_ld_" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag_='`$ECHO "X$allow_undefined_flag_" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag_='`$ECHO "X$no_undefined_flag_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_='`$ECHO "X$hardcode_libdir_flag_spec_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_='`$ECHO "X$hardcode_libdir_flag_spec_ld_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator_='`$ECHO "X$hardcode_libdir_separator_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_='`$ECHO "X$hardcode_direct_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute_='`$ECHO "X$hardcode_direct_absolute_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L_='`$ECHO "X$hardcode_minus_L_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_='`$ECHO "X$hardcode_shlibpath_var_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic_='`$ECHO "X$hardcode_automatic_" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath_='`$ECHO "X$inherit_rpath_" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs_='`$ECHO "X$link_all_deplibs_" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path_='`$ECHO "X$fix_srcfile_path_" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols_='`$ECHO "X$always_export_symbols_" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds_='`$ECHO "X$export_symbols_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms_='`$ECHO "X$exclude_expsyms_" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms_='`$ECHO "X$include_expsyms_" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds_='`$ECHO "X$prelink_cmds_" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec_='`$ECHO "X$file_list_spec_" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action_='`$ECHO "X$hardcode_action_" | $Xsed -e "$delay_single_quote_subst"`'
 
 LTCC='$LTCC'
 LTCFLAGS='$LTCFLAGS'
@@ -17394,7 +18380,27 @@ library_names_spec \
 soname_spec \
 finish_eval \
 old_striplib \
-striplib; do
+striplib \
+LD_ \
+compiler_ \
+lt_prog_compiler_no_builtin_flag_ \
+lt_prog_compiler_wl_ \
+lt_prog_compiler_pic_ \
+lt_prog_compiler_static_ \
+lt_cv_prog_compiler_c_o_ \
+export_dynamic_flag_spec_ \
+whole_archive_flag_spec_ \
+compiler_needs_object_ \
+with_gnu_ld_ \
+allow_undefined_flag_ \
+no_undefined_flag_ \
+hardcode_libdir_flag_spec_ \
+hardcode_libdir_flag_spec_ld_ \
+hardcode_libdir_separator_ \
+fix_srcfile_path_ \
+exclude_expsyms_ \
+include_expsyms_ \
+file_list_spec_; do
     case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
     *[\\\\\\\`\\"\\\$]*)
       eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
@@ -17423,7 +18429,16 @@ postinstall_cmds \
 postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
+sys_lib_dlsearch_path_spec \
+old_archive_cmds_ \
+old_archive_from_new_cmds_ \
+old_archive_from_expsyms_cmds_ \
+archive_cmds_ \
+archive_expsym_cmds_ \
+module_cmds_ \
+module_expsym_cmds_ \
+export_symbols_cmds_ \
+prelink_cmds_; do
     case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
     *[\\\\\\\`\\"\\\$]*)
       eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
@@ -17462,7 +18477,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
@@ -17488,8 +18503,8 @@ do
     "src/modules/mp/fixed_bitmap/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/mp/fixed_bitmap/Makefile" ;;
     "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
 
-  *) { { 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
@@ -17530,287 +18545,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
 
 
+{
+  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; }; }
+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
-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
-VMAJ!$VMAJ$ac_delim
-version_info!$version_info$ac_delim
-release_info!$release_info$ac_delim
-MODULE_ARCH!$MODULE_ARCH$ac_delim
-EFL_SIMD_FLAGS!$EFL_SIMD_FLAGS$ac_delim
-EFL_PTHREAD_CFLAGS!$EFL_PTHREAD_CFLAGS$ac_delim
-EFL_PTHREAD_LIBS!$EFL_PTHREAD_LIBS$ac_delim
-EINA_CONFIGURE_MAGIC_DEBUG!$EINA_CONFIGURE_MAGIC_DEBUG$ac_delim
-SAFETY_CHECKS_TRUE!$SAFETY_CHECKS_TRUE$ac_delim
-SAFETY_CHECKS_FALSE!$SAFETY_CHECKS_FALSE$ac_delim
-EINA_CONFIGURE_SAFETY_CHECKS!$EINA_CONFIGURE_SAFETY_CHECKS$ac_delim
-EINA_CONFIGURE_DEFAULT_MEMPOOL!$EINA_CONFIGURE_DEFAULT_MEMPOOL$ac_delim
-EINA_ENABLE_BENCHMARK_E17_TRUE!$EINA_ENABLE_BENCHMARK_E17_TRUE$ac_delim
-EINA_ENABLE_BENCHMARK_E17_FALSE!$EINA_ENABLE_BENCHMARK_E17_FALSE$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
-EMEMOA_CFLAGS!$EMEMOA_CFLAGS$ac_delim
-EMEMOA_LIBS!$EMEMOA_LIBS$ac_delim
-EINA_ENABLE_EMEMOA_TRUE!$EINA_ENABLE_EMEMOA_TRUE$ac_delim
-EINA_ENABLE_EMEMOA_FALSE!$EINA_ENABLE_EMEMOA_FALSE$ac_delim
-EINA_CPPFLAGS!$EINA_CPPFLAGS$ac_delim
-EINA_CFLAGS!$EINA_CFLAGS$ac_delim
-EINA_LIBS!$EINA_LIBS$ac_delim
-lt_enable_auto_import!$lt_enable_auto_import$ac_delim
-ALLOCA!$ALLOCA$ac_delim
-dlopen_libs!$dlopen_libs$ac_delim
-EINA_BUILD_CHAINED_POOL_TRUE!$EINA_BUILD_CHAINED_POOL_TRUE$ac_delim
-EINA_BUILD_CHAINED_POOL_FALSE!$EINA_BUILD_CHAINED_POOL_FALSE$ac_delim
-EINA_STATIC_BUILD_CHAINED_POOL_TRUE!$EINA_STATIC_BUILD_CHAINED_POOL_TRUE$ac_delim
-EINA_STATIC_BUILD_CHAINED_POOL_FALSE!$EINA_STATIC_BUILD_CHAINED_POOL_FALSE$ac_delim
-EINA_BUILD_EMEMOA_FIXED_TRUE!$EINA_BUILD_EMEMOA_FIXED_TRUE$ac_delim
-EINA_BUILD_EMEMOA_FIXED_FALSE!$EINA_BUILD_EMEMOA_FIXED_FALSE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE!$EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE!$EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE$ac_delim
-EINA_BUILD_EMEMOA_UNKNOWN_TRUE!$EINA_BUILD_EMEMOA_UNKNOWN_TRUE$ac_delim
-EINA_BUILD_EMEMOA_UNKNOWN_FALSE!$EINA_BUILD_EMEMOA_UNKNOWN_FALSE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE!$EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE!$EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE$ac_delim
-EINA_BUILD_FIXED_BITMAP_TRUE!$EINA_BUILD_FIXED_BITMAP_TRUE$ac_delim
-EINA_BUILD_FIXED_BITMAP_FALSE!$EINA_BUILD_FIXED_BITMAP_FALSE$ac_delim
-EINA_STATIC_BUILD_FIXED_BITMAP_TRUE!$EINA_STATIC_BUILD_FIXED_BITMAP_TRUE$ac_delim
-EINA_STATIC_BUILD_FIXED_BITMAP_FALSE!$EINA_STATIC_BUILD_FIXED_BITMAP_FALSE$ac_delim
-EINA_BUILD_PASS_THROUGH_TRUE!$EINA_BUILD_PASS_THROUGH_TRUE$ac_delim
-EINA_BUILD_PASS_THROUGH_FALSE!$EINA_BUILD_PASS_THROUGH_FALSE$ac_delim
-EINA_STATIC_BUILD_PASS_THROUGH_TRUE!$EINA_STATIC_BUILD_PASS_THROUGH_TRUE$ac_delim
-EINA_STATIC_BUILD_PASS_THROUGH_FALSE!$EINA_STATIC_BUILD_PASS_THROUGH_FALSE$ac_delim
-CHECK_CFLAGS!$CHECK_CFLAGS$ac_delim
-CHECK_LIBS!$CHECK_LIBS$ac_delim
-EFL_ENABLE_TESTS_TRUE!$EFL_ENABLE_TESTS_TRUE$ac_delim
-EFL_ENABLE_TESTS_FALSE!$EFL_ENABLE_TESTS_FALSE$ac_delim
-have_lcov!$have_lcov$ac_delim
-EFL_COVERAGE_CFLAGS!$EFL_COVERAGE_CFLAGS$ac_delim
-EFL_COVERAGE_LIBS!$EFL_COVERAGE_LIBS$ac_delim
-EFL_ENABLE_COVERAGE_TRUE!$EFL_ENABLE_COVERAGE_TRUE$ac_delim
-EFL_ENABLE_COVERAGE_FALSE!$EFL_ENABLE_COVERAGE_FALSE$ac_delim
-EFL_ENABLE_BENCHMARK_TRUE!$EFL_ENABLE_BENCHMARK_TRUE$ac_delim
-EFL_ENABLE_BENCHMARK_FALSE!$EFL_ENABLE_BENCHMARK_FALSE$ac_delim
-EVAS_CFLAGS!$EVAS_CFLAGS$ac_delim
-EVAS_LIBS!$EVAS_LIBS$ac_delim
-EINA_HAVE_EVAS_TRUE!$EINA_HAVE_EVAS_TRUE$ac_delim
-EINA_HAVE_EVAS_FALSE!$EINA_HAVE_EVAS_FALSE$ac_delim
-ECORE_CFLAGS!$ECORE_CFLAGS$ac_delim
-ECORE_LIBS!$ECORE_LIBS$ac_delim
-EINA_HAVE_ECORE_TRUE!$EINA_HAVE_ECORE_TRUE$ac_delim
-EINA_HAVE_ECORE_FALSE!$EINA_HAVE_ECORE_FALSE$ac_delim
-GLIB_CFLAGS!$GLIB_CFLAGS$ac_delim
-GLIB_LIBS!$GLIB_LIBS$ac_delim
-EINA_HAVE_GLIB_TRUE!$EINA_HAVE_GLIB_TRUE$ac_delim
-EINA_HAVE_GLIB_FALSE!$EINA_HAVE_GLIB_FALSE$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_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; }; }
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 84; 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
 
-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 || 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 = ""
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
 _ACEOF
-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
@@ -17826,19 +18698,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.
+
+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"
 
-for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
+
+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;;
@@ -17867,26 +18853,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
@@ -17896,7 +18894,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
@@ -17922,7 +18920,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"
@@ -17931,7 +18929,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
@@ -17952,17 +18950,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/ ;;
@@ -18007,12 +19005,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
 }
@@ -18021,13 +19020,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
@@ -18041,15 +19041,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
@@ -18060,121 +19061,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" >$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
@@ -18189,7 +19129,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
@@ -18209,30 +19149,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
@@ -18250,33 +19200,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
@@ -18294,7 +19244,7 @@ echo X"$file" |
 	    q
 	  }
 	  s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
+      { as_dir=$dirpart/$fdir
   case $as_dir in #(
   -*) as_dir=./$as_dir;;
   esac
@@ -18302,7 +19252,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"
@@ -18311,7 +19261,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
@@ -18332,13 +19282,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)
 
@@ -18991,6 +19942,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.
@@ -19012,6 +19968,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
 
 
 #####################################################################
@@ -19029,9 +19989,11 @@ echo "Configuration Options Summary:"
 echo
 echo "  Magic debug..........: ${have_magic_debug}"
 echo "  Safety checks........: ${have_safety_checks}"
+echo "  Maximum log level....: ${with_max_log_level}"
 echo "  Report string usage..: ${have_stringshare_usage}"
 echo "  Default mempool......: ${have_default_mempool}"
 echo "  Thread Support.......: ${have_pthread}"
+echo "  Amalgamation.........: ${do_amalgamation}"
 echo
 echo "  Documentation........: ${build_doc}"
 echo "  Tests................: ${enable_tests}"
@@ -19044,12 +20006,11 @@ echo "    Ecore..............: ${enable_benchmark_ecore}"
 echo "    E17 real data......: ${enable_benchmark_e17}"
 fi
 echo
-echo "CPU Specific Extensions:"
-echo
-echo "  MMX..................: ${have_mmx}"
-echo "  SSE..................: ${have_sse}"
-echo "  SSE2.................: ${have_sse2}"
-echo "  ALTIVEC..............: ${have_altivec}"
+echo "  CPU Specific Extensions:"
+echo "    MMX................: ${have_mmx}"
+echo "    SSE................: ${have_sse}"
+echo "    SSE2...............: ${have_sse2}"
+echo "    ALTIVEC............: ${have_altivec}"
 echo
 echo "  Memory pools:"
 echo "    Chained pool.......: ${enable_chained_pool}"
@@ -19058,13 +20019,13 @@ echo "    Ememoa unknown.....: ${enable_ememoa_unknown}"
 echo "    Fixed bitmap.......: ${enable_fixed_bitmap}"
 echo "    Pass through.......: ${enable_pass_through}"
 echo
-echo "  Installation.........: make install"
-echo
-echo "    prefix.............: $prefix"
+echo "Compilation............: make (or gmake)"
+echo "  CPPFLAGS.............: $CPPFLAGS"
+echo "  CFLAGS...............: $CFLAGS"
+echo "  LDFLAGS..............: $LDFLAGS"
 echo
-echo "Now type 'make' ('gmake' on some systems) to compile $PACKAGE,"
-echo "and then afterwards as root (or the user who will install this), type"
-echo "'make install'. Change users with 'su' or 'sudo' appropriately."
+echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')"
+echo "  prefix...............: $prefix"
 echo
 if test "x${have_static_module}" = "xyes" ; then
 echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Eina."
diff --git a/configure.ac b/configure.ac
index 457006a..febf5be 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,8 @@
 # get rid of that stupid cache mechanism
 rm -f config.cache
 
-AC_INIT([eina], [0.0.2.062], [enlightenment-devel at lists.sourceforge.net])
+AC_INIT([eina], [0.9.9.063], [enlightenment-devel at lists.sourceforge.net])
+release="ver-svn-05"
 AC_PREREQ([2.60])
 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_CXX_CONFIG], [:])dnl
@@ -28,7 +30,8 @@ AC_SUBST(version_info)
 
 ### Needed information
 
-release="ver-svn-03"
+requirement_eina=""
+
 case "$host_os" in
    mingw32ce* | cegcc*)
       MODULE_ARCH="$host_os-$host_cpu"
@@ -49,6 +52,12 @@ EFL_CHECK_CPU_ALTIVEC([have_altivec="yes"], [have_altivec="no"])
 
 EFL_CHECK_PTHREAD([have_pthread="yes"], [have_pthread="no"])
 
+if test "x${have_pthread}" = "xyes"; then
+   AC_CHECK_LIB(pthread, pthread_spin_init,
+   		[
+		  AC_DEFINE(EINA_PTHREAD_SPIN, 1, [Build eina_log lock using pthread_spin])
+		])
+fi
 
 ### Additional options to configure
 
@@ -94,6 +103,34 @@ if test "x$have_safety_checks" = "xyes"; then
 fi
 AC_SUBST(EINA_CONFIGURE_SAFETY_CHECKS)
 
+with_max_log_level="<unset>"
+AC_ARG_WITH(internal-maximum-log-level,
+   [AC_HELP_STRING([--with-internal-maximum-log-level=NUMBER],
+                   [limit eina internal log level to the given number, any call to EINA_LOG() with values greater than this will be compiled out, ignoring runtime settings, but saving function calls.])],
+   [
+    if test "x${withval}" != "xno"; then
+       if echo "${withval}" | grep '^[[0-9]]\+$' >/dev/null 2>/dev/null; then
+          AC_MSG_NOTICE([ignoring any EINA_LOG() with level greater than ${withval}])
+          AC_DEFINE_UNQUOTED(EINA_LOG_LEVEL_MAXIMUM, ${withval}, [if set, logging is limited to this amount.])
+          with_max_log_level="${withval}"
+       else
+          AC_MSG_ERROR([--with-internal-maximum-log-level takes a decimal number, got "${withval}" instead.])
+       fi
+    fi
+    ], [:])
+
+AC_ARG_ENABLE([amalgamation],
+   [AC_HELP_STRING([--enable-amalgamation], [enable generation of one single file with all source code in it, helps compiler optimizations.])],
+   [if test "x${enableval}" = "xyes"; then
+       do_amalgamation="yes"
+    else
+       do_amalgamation="no"
+    fi
+   ],
+   [do_amalgamation="no"]
+)
+AM_CONDITIONAL(EINA_AMALGAMATION, test "x${do_amalgamation}" = "xyes")
+
 # Choose best memory pool
 AC_ARG_ENABLE([default-mempool],
    [AC_HELP_STRING([--enable-default-mempool], [Default memory allocator could be faster for some computer. @<:@default=disabled@:>@])],
@@ -158,6 +195,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"])
@@ -167,12 +212,16 @@ EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
 
 # Evil library for compilation on Windows CE
 
+EFL_EINA_BUILD=""
 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_eina="evil"
+      EFL_EINA_BUILD="-DEFL_EINA_BUILD"
    ;;
 esac
+AC_SUBST(EFL_EINA_BUILD)
 
 # Check ememoa memory pool library
 
@@ -208,6 +257,9 @@ AC_HEADER_ASSERT
 AC_HEADER_DIRENT
 AC_HEADER_TIME
 
+AC_CHECK_HEADER([fnmatch.h],
+   [dummy="yes"],
+   [AC_MSG_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])])
 
 ### Checks for types
 
@@ -232,27 +284,41 @@ case "$host_os" in
       ;;
 esac
 
-EINA_CFLAGS="${EFL_COVERAGE_CFLAGS}"
+EINA_CFLAGS=
 case "${host_os}" in
    cegcc*)
-      EINA_CFLAGS="${EINA_CFLAGS} ${EVIL_CFLAGS} -mwin32"
+      EINA_CFLAGS="${EVIL_CFLAGS} -mwin32"
    ;;
    mingw*)
-      EINA_CFLAGS="${EINA_CFLAGS} ${EVIL_CFLAGS}"
+      EINA_CFLAGS="${EVIL_CFLAGS}"
    ;;
 esac
 
-if test "x$enable_coverage" = "xyes" ; then
-   EINA_CFLAGS="${EINA_CFLAGS} ${EFL_DEBUG_CFLAGS}"
+if ! test "x${VMIC}" = "x" ; then
+   CFLAGS_save="${CFLAGS}"
+   CFLAGS="${CFLAGS} -Wall -W"
+   AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM([[]])],
+      [have_Wall="yes"],
+      [have_Wall="no"])
+   AC_MSG_CHECKING([whether the compiler supports -Wall])
+   AC_MSG_RESULT([${have_Wall}])
+   CFLAGS="${CFLAGS_save}"
+   if test "x${have_Wall}" = "xyes" ; then
+      EINA_CFLAGS="${EINA_CFLAGS} -Wall -W" # -Werror
+   fi
 fi
 
-if ! test "${VMIC}" = "x" ; then
-   EINA_CFLAGS="${EINA_CFLAGS} -Wall -W" # -Werror
-fi
-
-GCC_MAJOR_VERSION=`$CC -dumpversion | sed "s/\..*//"`
-
-if test "$GCC_MAJOR_VERSION" = "3" ; then
+CFLAGS_save="${CFLAGS}"
+CFLAGS="${CFLAGS} -fno-strict-aliasing"
+AC_COMPILE_IFELSE(
+   [AC_LANG_PROGRAM([[]])],
+   [have_no_strict_aliasing="yes"],
+   [have_no_strict_aliasing="no"])
+AC_MSG_CHECKING([whether the compiler supports -fno-strict-aliasing])
+AC_MSG_RESULT([${have_no_strict_aliasing}])
+CFLAGS="${CFLAGS_save}"
+if test "x${have_no_strict_aliasing}" = "xyes" ; then
    EINA_CFLAGS="${EINA_CFLAGS} -fno-strict-aliasing"
 fi
 
@@ -261,28 +327,27 @@ AC_SUBST(EINA_CFLAGS)
 
 
 ### Checks for linker characteristics
-EINA_LIBS="${EFL_COVERAGE_LIBS}"
+EINA_LIBS=
 lt_enable_auto_import=""
 case "${host_os}" in
    mingw* | cegcc*)
-      AC_DEFINE(EFL_EINA_BUILD, 1, [Define to mention that eina is built])
-      EINA_LIBS="${EINA_LIBS} -ldl ${EVIL_LIBS} -lm"
+      EINA_LIBS="-ldl ${EVIL_LIBS} -lm"
       lt_enable_auto_import="-Wl,--enable-auto-import"
    ;;
    dragonfly*|openbsd*)
-      EINA_LIBS="${EINA_LIBS} -lm"
+      EINA_LIBS="-lm"
    ;;
    freebsd*|netbsd*)
-      EINA_LIBS="${EINA_LIBS} -lrt -lm"
+      EINA_LIBS="-lrt -lm"
    ;;
    darwin*)
-      EINA_LIBS="${EINA_LIBS} -lm"
+      EINA_LIBS="-lm"
    ;;
    cygwin*)
-      EINA_LIBS="${EINA_LIBS} -ldl -lm"
+      EINA_LIBS="-ldl -lm"
    ;;
    *)
-      EINA_LIBS="${EINA_LIBS} -ldl -lrt -lm"
+      EINA_LIBS="-ldl -lrt -lm"
    ;;
 esac
 AC_SUBST(EINA_LIBS)
@@ -316,6 +381,20 @@ case "$host_os" in
 esac
 AC_SUBST(dlopen_libs)
 
+fnmatch_libs=""
+AC_CHECK_FUNCS([fnmatch], [res="yes"], [res="no"])
+if test "x$res" = "xno"; then
+   AC_SEARCH_LIBS([fnmatch],
+      [fnmatch evil iberty],
+      [res="yes"],
+      [res="no"])
+   if test "x$res" = "xno"; then
+      AC_MSG_ERROR([Cannot find fnmatch() in neither libc nor libfnmatch, nor libiberty, nor libevil])
+   fi
+   fnmatch_libs="${ac_cv_search_fnmatch}"
+fi
+AC_SUBST(fnmatch_libs)
+
 ### Modules
 
 EINA_CHECK_MODULE([chained-pool], [yes], [chained pool])
@@ -330,12 +409,21 @@ EINA_CHECK_MODULE([pass-through], [yes], [pass through])
 ### Unit tests, coverage and benchmarking
 
 EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
+
 EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
+EINA_CFLAGS="${EINA_CFLAGS} ${EFL_COVERAGE_CFLAGS}"
+EINA_LIBS="${EINA_LIBS} ${EFL_COVERAGE_LIBS}"
+if test "x$enable_coverage" = "xyes" ; then
+   EINA_CFLAGS="${EINA_CFLAGS} ${EFL_DEBUG_CFLAGS}"
+fi
+
 EFL_CHECK_BENCHMARK([enable_benchmark="yes"], [enable_benchmark="no"])
 EINA_BENCH_MODULE([evas], [${enable_benchmark}], [evas], [enable_benchmark_evas="yes"], [enable_benchmark_evas="no"])
 EINA_BENCH_MODULE([ecore], [${enable_benchmark}], [ecore], [enable_benchmark_ecore="yes"], [enable_benchmark_ecore="no"])
 EINA_BENCH_MODULE([glib], [${enable_benchmark}], [glib-2.0], [enable_benchmark_glib="yes"], [enable_benchmark_glib="no"])
 
+AC_SUBST(requirement_eina)
+
 ### Create the .pc.in file according to the major version
 #cat > ${srcdir}/eina-${VMAJ}.pc.in << EOF
 #prefix=@prefix@
@@ -388,9 +476,11 @@ echo "Configuration Options Summary:"
 echo
 echo "  Magic debug..........: ${have_magic_debug}"
 echo "  Safety checks........: ${have_safety_checks}"
+echo "  Maximum log level....: ${with_max_log_level}"
 echo "  Report string usage..: ${have_stringshare_usage}"
 echo "  Default mempool......: ${have_default_mempool}"
 echo "  Thread Support.......: ${have_pthread}"
+echo "  Amalgamation.........: ${do_amalgamation}"
 echo
 echo "  Documentation........: ${build_doc}"
 echo "  Tests................: ${enable_tests}"
@@ -403,12 +493,11 @@ echo "    Ecore..............: ${enable_benchmark_ecore}"
 echo "    E17 real data......: ${enable_benchmark_e17}"
 fi
 echo
-echo "CPU Specific Extensions:"
-echo
-echo "  MMX..................: ${have_mmx}"
-echo "  SSE..................: ${have_sse}"
-echo "  SSE2.................: ${have_sse2}"
-echo "  ALTIVEC..............: ${have_altivec}"
+echo "  CPU Specific Extensions:"
+echo "    MMX................: ${have_mmx}"
+echo "    SSE................: ${have_sse}"
+echo "    SSE2...............: ${have_sse2}"
+echo "    ALTIVEC............: ${have_altivec}"
 echo
 echo "  Memory pools:"
 echo "    Chained pool.......: ${enable_chained_pool}"
@@ -417,13 +506,13 @@ echo "    Ememoa unknown.....: ${enable_ememoa_unknown}"
 echo "    Fixed bitmap.......: ${enable_fixed_bitmap}"
 echo "    Pass through.......: ${enable_pass_through}"
 echo
-echo "  Installation.........: make install"
-echo
-echo "    prefix.............: $prefix"
+echo "Compilation............: make (or gmake)"
+echo "  CPPFLAGS.............: $CPPFLAGS"
+echo "  CFLAGS...............: $CFLAGS"
+echo "  LDFLAGS..............: $LDFLAGS"
 echo
-echo "Now type 'make' ('gmake' on some systems) to compile $PACKAGE,"
-echo "and then afterwards as root (or the user who will install this), type"
-echo "'make install'. Change users with 'su' or 'sudo' appropriately."
+echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')"
+echo "  prefix...............: $prefix"
 echo
 if test "x${have_static_module}" = "xyes" ; then
 echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Eina."
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 58d48e3..f10a270 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -513,7 +513,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories 
 # with spaces.
 
-INPUT                  = ../src/
+INPUT                  = ../src/include ../src/lib
 
 # This tag can be used to specify the character encoding of the source files 
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
@@ -542,7 +542,7 @@ RECURSIVE              = YES
 # excluded from the INPUT source files. This way you can easily exclude a 
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 
-EXCLUDE                = 
+EXCLUDE                = ../src/lib/eina_amalgamation.c
 
 # The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
 # directories that are symbolic links (a Unix filesystem feature) are excluded 
diff --git a/doc/Makefile.in b/doc/Makefile.in
index d15e4d0..71d16bc 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,
@@ -80,6 +80,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -164,6 +165,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -184,15 +186,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -205,8 +210,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/eina-0.pc b/eina-0.pc
index 587c204..bd499b1 100644
--- a/eina-0.pc
+++ b/eina-0.pc
@@ -5,8 +5,8 @@ includedir=${prefix}/include
 
 Name: Eina
 Description: A Library that implements fast data types and miscellaneous tools
-Requires:
-Version: 0.0.2.062
+Requires.private: 
+Version: 0.9.9.063
 Libs: -L${exec_prefix}/lib -leina
 Libs.private: -ldl
 Cflags: -I${includedir}/eina-0 -I${includedir}/eina-0/eina
diff --git a/eina-0.pc.in b/eina-0.pc.in
index 28108a6..e28741a 100644
--- a/eina-0.pc.in
+++ b/eina-0.pc.in
@@ -5,7 +5,7 @@ includedir=@includedir@
 
 Name: Eina
 Description: A Library that implements fast data types and miscellaneous tools
-Requires:
+ at pkgconfig_requires_private@: @requirement_eina@
 Version: @VERSION@
 Libs: -L${exec_prefix}/lib -leina
 Libs.private: -ldl
diff --git a/eina.spec b/eina.spec
index ef8b0a2..b01121d 100644
--- a/eina.spec
+++ b/eina.spec
@@ -2,7 +2,7 @@
 
 Summary: Data Type Library
 Name: eina
-Version: 0.0.2.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/efl_doxygen.m4 b/m4/efl_doxygen.m4
index d83ed68..8b5a0ff 100644
--- a/m4/efl_doxygen.m4
+++ b/m4/efl_doxygen.m4
@@ -73,6 +73,8 @@ dnl Check the given doxygen program.
           AC_MSG_WARN([no doxygen detected. Documentation will not be built])
        fi
       ])
+else
+   efl_have_doxygen="no"
 fi
 
 dnl
@@ -84,9 +86,9 @@ if ! test "x${efl_have_doxygen}" = "xyes" ; then
    efl_enable_doc="no"
 fi
 
-AM_CONDITIONAL(EFL_BUILD_DOC, test "x${efl_enable_doc}" = "xyes")
+AM_CONDITIONAL(EFL_BUILD_DOC, test "x${efl_have_doxygen}" = "xyes")
 
-if test "x${efl_enable_doc}" = "xyes" ; then
+if test "x${efl_have_doxygen}" = "xyes" ; then
   m4_default([$1], [:])
 else
   m4_default([$2], [:])
diff --git a/m4/efl_pthread.m4 b/m4/efl_pthread.m4
index b11ae84..7bd341c 100644
--- a/m4/efl_pthread.m4
+++ b/m4/efl_pthread.m4
@@ -13,7 +13,7 @@ AC_DEFUN([EFL_CHECK_PTHREAD],
 dnl configure option
 
 AC_ARG_ENABLE([pthread],
-   [AC_HELP_STRING([--disable-pthread], [enable POSIX threads code @<:@default=no@:>@])],
+   [AC_HELP_STRING([--disable-pthread], [enable POSIX threads code @<:@default=yes@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_pthread="yes"
@@ -21,8 +21,8 @@ AC_ARG_ENABLE([pthread],
        _efl_enable_pthread="no"
     fi
    ],
-   [_efl_enable_pthread="yes"]
-)
+   [_efl_enable_pthread="yes"])
+
 AC_MSG_CHECKING([whether to build POSIX threads code])
 AC_MSG_RESULT([${_efl_enable_pthread}])
 
@@ -31,43 +31,29 @@ dnl check if the compiler supports pthreads
 _efl_have_pthread="no"
 
 if test "x${_efl_enable_pthread}" = "xyes" ; then
-
-   SAVE_CFLAGS=${CFLAGS}
-   CFLAGS="-pthread"
-   AC_LANG_PUSH([C])
-
-   AC_COMPILE_IFELSE(
-      [AC_LANG_PROGRAM([[
-#include <pthread.h>
-                       ]],
-                       [[]])
-      ],
-      [
-       _efl_have_pthread="yes"
-       EFL_PTHREAD_CFLAGS="-pthread"
-       EFL_PTHREAD_LIBS="-pthread"
-       ]
-   )
-
-   AC_LANG_POP([C])
-   CFLAGS=${SAVE_CFLAGS}
+   AC_CHECK_HEADER(pthread.h,
+      [_efl_have_pthread="yes"],
+      [_efl_have_pthread="no"])
 fi
 
-AC_MSG_CHECKING([whether compiler need -pthread POSIX for threads support])
-AC_MSG_RESULT([${_efl_have_pthread}])
-
-if test "x${_efl_have_pthread}" = "xno" -a "x${_efl_enable_pthread}" = "xyes" ; then
-   AC_CHECK_HEADER(pthread.h,
-		[
-		  _efl_have_pthread="yes"
-		  EFL_PTHREAD_LIBS="-lpthread"
-		],
-		[
-		  _efl_have_pthread="no"
-		])
+AC_MSG_CHECKING([whether system support POSIX threads])
+AC_MSG_RESULT([${_efl_enable_pthread}])
 
-   AC_MSG_CHECKING([whether system support POSIX threads])
-   AC_MSG_RESULT([${_efl_enable_pthread}])
+if test "x${_efl_have_pthread}" = "xyes" ; then
+   case "$host_os" in
+      mingw*)
+         EFL_PTHREAD_CFLAGS="-mthreads"
+         EFL_PTHREAD_LIBS="-mthreads -lpthreadGC2"
+         ;;
+      solaris*)
+         EFL_PTHREAD_CFLAGS="-mt"
+         EFL_PTHREAD_LIBS="-mt"
+         ;;
+      *)
+         EFL_PTHREAD_CFLAGS="-pthread"
+         EFL_PTHREAD_LIBS="-pthread"
+         ;;
+   esac
 fi
 
 AC_SUBST(EFL_PTHREAD_CFLAGS)
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 e116fbd..78ab41e 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,
@@ -92,6 +92,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -176,6 +177,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -196,15 +198,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -217,8 +222,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; \
@@ -324,7 +329,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/include/Eina.h b/src/include/Eina.h
index 997e0d4..c7b921f 100644
--- a/src/include/Eina.h
+++ b/src/include/Eina.h
@@ -22,6 +22,7 @@
 /**
  * @mainpage Eina
  * @author Jorge Luis Zapata Muga
+ * @author Cedric Bail
  * @date 2008
  *
  * @section eina_toc_sec Table of contents
@@ -52,6 +53,8 @@
  *     <li> @ref eina_counter_subsec
  *     <li> @ref eina_error_subsec
  *   </ul>
+ *   <li> @ref thread_safety_sec
+ *   <li> @ref debugging_sec
  * </ul>
  *
  * @section eina_intro_sec Introduction
@@ -132,6 +135,14 @@
  *
  * Take a look at the @ref tutorial_error_page.
  *
+ * @section thread_safety_sec Thread safety
+ *
+ * Add some stuff for thread safety doc
+ *
+ * @section debugging_sec Debugging
+ *
+ * Add some stuff for the debug doc
+ *
  * @todo add debug function
  * @todo add magic function
  * @todo add other todo items :)
@@ -144,7 +155,7 @@ extern "C" {
 #include "eina_config.h"
 #include "eina_types.h"
 #include "eina_main.h"
-#include "eina_f16p16.h"
+#include "eina_fp.h"
 #include "eina_rectangle.h"
 #include "eina_inlist.h"
 #include "eina_file.h"
@@ -155,6 +166,7 @@ extern "C" {
 #include "eina_module.h"
 #include "eina_mempool.h"
 #include "eina_error.h"
+#include "eina_log.h"
 #include "eina_array.h"
 #include "eina_stringshare.h"
 #include "eina_magic.h"
@@ -166,6 +178,8 @@ extern "C" {
 #include "eina_convert.h"
 #include "eina_cpu.h"
 #include "eina_tiler.h"
+#include "eina_hamster.h"
+#include "eina_matrixsparse.h"
 
 #ifdef __cplusplus
 }
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index c02a04d..568ca0b 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -3,7 +3,12 @@ MAINTAINERCLEANFILES = Makefile.in
 EINAHEADERS = \
 eina_safety_checks.h \
 eina_error.h \
-eina_f16p16.h \
+eina_log.h \
+eina_fp.h \
+eina_inline_f32p32.x \
+eina_inline_f16p16.x \
+eina_inline_f8p24.x \
+eina_inline_fp.x \
 eina_hash.h \
 eina_inline_hash.x \
 eina_lalloc.h \
@@ -33,7 +38,10 @@ eina_trash.h \
 eina_iterator.h \
 eina_main.h \
 eina_cpu.h \
-eina_tiler.h
+eina_tiler.h \
+eina_hamster.h \
+eina_matrixsparse.h \
+eina_inline_tiler.x
 
 installed_mainheaderdir = $(includedir)/eina- at VMAJ@
 dist_installed_mainheader_DATA = Eina.h eina_config.h
diff --git a/src/include/Makefile.in b/src/include/Makefile.in
index c13c179..d0f7ed5 100644
--- a/src/include/Makefile.in
+++ b/src/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,
@@ -95,6 +95,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -179,6 +180,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -199,15 +201,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -215,7 +220,12 @@ MAINTAINERCLEANFILES = Makefile.in
 EINAHEADERS = \
 eina_safety_checks.h \
 eina_error.h \
-eina_f16p16.h \
+eina_log.h \
+eina_fp.h \
+eina_inline_f32p32.x \
+eina_inline_f16p16.x \
+eina_inline_f8p24.x \
+eina_inline_fp.x \
 eina_hash.h \
 eina_inline_hash.x \
 eina_lalloc.h \
@@ -245,7 +255,10 @@ eina_trash.h \
 eina_iterator.h \
 eina_main.h \
 eina_cpu.h \
-eina_tiler.h
+eina_tiler.h \
+eina_hamster.h \
+eina_matrixsparse.h \
+eina_inline_tiler.x
 
 installed_mainheaderdir = $(includedir)/eina- at VMAJ@
 dist_installed_mainheader_DATA = Eina.h eina_config.h
@@ -262,8 +275,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/include/eina_array.h b/src/include/eina_array.h
index ae83b6e..c1988ae 100644
--- a/src/include/eina_array.h
+++ b/src/include/eina_array.h
@@ -73,9 +73,6 @@ struct _Eina_Array
    EINA_MAGIC
 };
 
-EAPI int          eina_array_init     (void);
-EAPI int          eina_array_shutdown (void);
-
 EAPI Eina_Array  *eina_array_new      (unsigned int step) EINA_WARN_UNUSED_RESULT EINA_MALLOC EINA_WARN_UNUSED_RESULT;
 EAPI void         eina_array_free     (Eina_Array *array) EINA_ARG_NONNULL(1);
 EAPI void         eina_array_step_set (Eina_Array *array, unsigned int step) EINA_ARG_NONNULL(1);
diff --git a/src/include/eina_benchmark.h b/src/include/eina_benchmark.h
index 9ffb7e9..04cab9d 100644
--- a/src/include/eina_benchmark.h
+++ b/src/include/eina_benchmark.h
@@ -55,9 +55,6 @@ typedef void (*Eina_Benchmark_Specimens)(int request);
  */
 #define EINA_BENCHMARK(function) ((Eina_Benchmark_Specimens)function)
 
-EAPI int eina_benchmark_init(void);
-EAPI int eina_benchmark_shutdown(void);
-
 EAPI Eina_Benchmark *eina_benchmark_new(const char *name, const char *run);
 EAPI void eina_benchmark_free(Eina_Benchmark *bench);
 
diff --git a/src/include/eina_convert.h b/src/include/eina_convert.h
index 5914c2e..cd935e1 100644
--- a/src/include/eina_convert.h
+++ b/src/include/eina_convert.h
@@ -22,6 +22,8 @@
 #include "eina_types.h"
 #include "eina_error.h"
 
+#include "eina_fp.h"
+
 /**
  * @addtogroup Eina_Tools_Group Tools
  *
@@ -52,14 +54,15 @@ EAPI extern Eina_Error EINA_ERROR_CONVERT_0X_NOT_FOUND;
  */
 EAPI extern Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH;
 
-EAPI int eina_convert_init(void);
-EAPI int eina_convert_shutdown(void);
-
 EAPI int eina_convert_itoa(int n, char *s)  EINA_ARG_NONNULL(2);
 EAPI int eina_convert_xtoa(unsigned int n, char *s) EINA_ARG_NONNULL(2);
+
 EAPI int eina_convert_dtoa(double d, char *des) EINA_ARG_NONNULL(2);
 EAPI Eina_Bool eina_convert_atod(const char *src, int length, long long *m, long *e)  EINA_ARG_NONNULL(1,3,4);
 
+EAPI int eina_convert_fptoa(Eina_F32p32 fp, char *des) EINA_ARG_NONNULL(2);
+EAPI Eina_Bool eina_convert_atofp(const char *src, int length, Eina_F32p32 *fp)  EINA_ARG_NONNULL(1,3);
+
 /**
  * @}
  */
diff --git a/src/include/eina_counter.h b/src/include/eina_counter.h
index 8bb5093..c766b8f 100644
--- a/src/include/eina_counter.h
+++ b/src/include/eina_counter.h
@@ -39,9 +39,6 @@
  */
 typedef struct _Eina_Counter Eina_Counter;
 
-EAPI int eina_counter_init(void);
-EAPI int eina_counter_shutdown(void);
-
 EAPI Eina_Counter *eina_counter_new(const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI void eina_counter_free(Eina_Counter *counter) EINA_ARG_NONNULL(1);
 
diff --git a/src/include/eina_cpu.h b/src/include/eina_cpu.h
index c7cc8c4..c637d93 100644
--- a/src/include/eina_cpu.h
+++ b/src/include/eina_cpu.h
@@ -34,5 +34,6 @@ typedef enum _Eina_Cpu_Features
 } Eina_Cpu_Features;
 
 EAPI Eina_Cpu_Features eina_cpu_features_get(void);
+EAPI int eina_cpu_count(void);
 
 #endif /* EINA_CPU_H_ */
diff --git a/src/include/eina_error.h b/src/include/eina_error.h
index ad69ac0..7b89d88 100644
--- a/src/include/eina_error.h
+++ b/src/include/eina_error.h
@@ -22,6 +22,7 @@
 #include <stdarg.h>
 
 #include "eina_types.h"
+#include "eina_log.h"
 
 /**
  * @addtogroup Eina_Tools_Group Tools
@@ -36,58 +37,45 @@
  */
 
 /**
+ * @deprecated use EINA_LOG_ERR() instead.
  * @def EINA_ERROR_PERR(fmt, ...)
  * Print the error message described with the formatted string @a fmt
  * using the current print callback, file function and line, with the
  * error level EINA_ERROR_LEVEL_ERR.
  */
 #define EINA_ERROR_PERR(fmt, ...) \
-	eina_error_print(EINA_ERROR_LEVEL_ERR, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
+	eina_error_print(EINA_LOG_LEVEL_ERR, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
 
 /**
+ * @deprecated use EINA_LOG_INFO() instead.
  * @def EINA_ERROR_PINFO(fmt, ...)
  * Print the error message described with the formatted string @a fmt
  * using the current print callback, file function and line, with the
  * error level EINA_ERROR_LEVEL_INFO.
  */
 #define EINA_ERROR_PINFO(fmt, ...) \
-	eina_error_print(EINA_ERROR_LEVEL_INFO, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
+	eina_error_print(EINA_LOG_LEVEL_INFO, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
 
 /**
+ * @deprecated use EINA_LOG_WARN() instead.
  * @def EINA_ERROR_PWARN(fmt, ...)
  * Print the error message described with the formatted string @a fmt
  * using the current print callback, file function and line, with the
  * error level EINA_ERROR_LEVEL_WARN.
  */
 #define EINA_ERROR_PWARN(fmt, ...) \
-	eina_error_print(EINA_ERROR_LEVEL_WARN, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
+	eina_error_print(EINA_LOG_LEVEL_WARN, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
 
 /**
+ * @deprecated use EINA_LOG_DBG() instead.
  * @def EINA_ERROR_PDBG(fmt, ...)
  * Print the error message described with the formatted string @a fmt
  * using the current print callback, file function and line, with the
  * error level EINA_ERROR_LEVEL_DBG.
  */
 #define EINA_ERROR_PDBG(fmt, ...) \
-	eina_error_print(EINA_ERROR_LEVEL_DBG, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
+	eina_error_print(EINA_LOG_LEVEL_DBG, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
 
-/**
- * @typedef Eina_Error_Level
- * List of available error levels.
- */
-
-/**
- * @enum _Eina_Error_Level
- * List of available error levels.
- */
-typedef enum _Eina_Error_Level
-{
-	EINA_ERROR_LEVEL_ERR,   /**< Error error level */
-	EINA_ERROR_LEVEL_WARN,  /**< Warning error level */
-	EINA_ERROR_LEVEL_INFO,  /**< Information error level */
-	EINA_ERROR_LEVEL_DBG,   /**< Debug error level */
-	EINA_ERROR_LEVELS       /**< Count of error level */
-} Eina_Error_Level;
 
 /**
  * @typedef Eina_Error
@@ -96,38 +84,22 @@ typedef enum _Eina_Error_Level
 typedef int Eina_Error;
 
 /**
- * @typedef Eina_Error_Print_Cb
- * Type for print callbacks.
- */
-typedef void (*Eina_Error_Print_Cb)(Eina_Error_Level level, const char *file,
-                const char *fnc, int line, const char *fmt, void *data,
-		va_list args);
-
-/**
  * @var EINA_ERROR_OUT_OF_MEMORY
  * Error identifier corresponding to a lack of memory.
  */
 EAPI extern Eina_Error EINA_ERROR_OUT_OF_MEMORY;
 
-EAPI int eina_error_init(void);
-EAPI int eina_error_shutdown(void);
-EAPI Eina_Error eina_error_msg_register(const char *msg) EINA_ARG_NONNULL(1);
+EAPI Eina_Error eina_error_msg_register(const char *msg) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
+EAPI Eina_Error eina_error_msg_static_register(const char *msg) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
+
 EAPI Eina_Error eina_error_get(void);
 EAPI void eina_error_set(Eina_Error err);
 EAPI const char * eina_error_msg_get(Eina_Error error) EINA_PURE;
-EAPI void eina_error_print(Eina_Error_Level level, const char *file,
+EINA_DEPRECATED EAPI void eina_error_print(int level, const char *file,
 	        const char *function, int line, const char *fmt, ...) EINA_ARG_NONNULL(2, 3, 5) EINA_PRINTF(5, 6);
-EAPI void eina_error_vprint(Eina_Error_Level level, const char *file,
+EINA_DEPRECATED EAPI void eina_error_vprint(int level, const char *file,
 	        const char *fnc, int line, const char *fmt, va_list args) EINA_ARG_NONNULL(2, 3, 5);
-
-EAPI void eina_error_print_cb_stdout(Eina_Error_Level level, const char *file,
-                const char *fnc, int line, const char *fmt, void *data,
-		va_list args);
-EAPI void eina_error_print_cb_file(Eina_Error_Level level, const char *file,
-                const char *fnc, int line, const char *fmt, void *data,
-                va_list args);
-EAPI void eina_error_print_cb_set(Eina_Error_Print_Cb cb, void *data) EINA_ARG_NONNULL(1);
-EAPI void eina_error_log_level_set(Eina_Error_Level level);
+EINA_DEPRECATED EAPI void eina_error_log_level_set(int level);
 
 /**
  * @}
diff --git a/src/include/eina_f16p16.h b/src/include/eina_f16p16.h
deleted file mode 100644
index 7f09cf8..0000000
--- a/src/include/eina_f16p16.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2007-2008 Jorge Luis Zapata Muga
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef EINA_F16P16_H_
-#define EINA_F16P16_H_
-
-#ifdef _MSC_VER
-# include <Evil.h>
-#else
-# include <stdint.h>
-#endif
-
-/**
- * To be documented
- * FIXME: To be fixed
- */
-typedef int32_t Eina_F16p16;
-
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline Eina_F16p16 eina_f16p16_int_from(int32_t v)
-{
-	return v << 16;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline int32_t eina_f16p16_int_to(Eina_F16p16 v)
-{
-	return v >> 16;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline Eina_F16p16 eina_f16p16_float_from(float v)
-{
-	Eina_F16p16 r;
-	r = (Eina_F16p16)(v * 65536.0f + (v < 0 ? -0.5f : 0.5f));
-	return r;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline float eina_f16p16_float_to(Eina_F16p16 v)
-{
-	float r;
-	r = v / 65536.0f;
-	return r;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline Eina_F16p16 eina_f16p16_add(Eina_F16p16 a, Eina_F16p16 b)
-{
-	return a + b;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline Eina_F16p16 eina_f16p16_sub(Eina_F16p16 a, Eina_F16p16 b)
-{
-	return a - b;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline Eina_F16p16 eina_f16p16_mul(Eina_F16p16 a, Eina_F16p16 b)
-{
-	return ((int64_t)a * (int64_t)b) >> 16;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline Eina_F16p16 eina_f16p16_sqrt(Eina_F16p16 a)
-{
-	unsigned int root, remHi, remLo, testDiv, count;
-
-	root = 0; /* Clear root */
-	remHi = 0; /* Clear high part of partial remainder */
-	remLo = a; /* Get argument into low part of partial remainder */
-	count = (15 + (16 >> 1)); /* Load loop counter */
-	do
-	{
-		remHi = (remHi << 2) | (remLo >> 30);
-		remLo <<= 2; /* get 2 bits of arg */
-		root <<= 1; /* Get ready for the next bit in the root */
-		testDiv = (root << 1) + 1; /* Test radical */
-		if (remHi >= testDiv)
-		{
-			remHi -= testDiv;
-			root++;
-		}
-	} while (count-- != 0);
-	return (root);
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-static inline unsigned int eina_f16p16_fracc_get(Eina_F16p16 v)
-{
-	return (v & 0xffff);
-}
-
-#endif /*EINA_F16P16_H_*/
diff --git a/src/include/eina_fp.h b/src/include/eina_fp.h
new file mode 100644
index 0000000..a488dfe
--- /dev/null
+++ b/src/include/eina_fp.h
@@ -0,0 +1,81 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2008 Jorge Luis Zapata Muga
+ * Copyright (C) 2009 Cedric BAIL
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_FP_H_
+# define EINA_FP_H_
+
+#ifdef _MSC_VER
+# include <Evil.h>
+#else
+# include <stdint.h>
+#endif
+
+typedef int64_t Eina_F32p32;
+typedef int32_t Eina_F16p16;
+typedef int32_t Eina_F8p24;
+
+static inline Eina_F32p32 eina_f32p32_int_from(int32_t v);
+static inline int32_t eina_f32p32_int_to(Eina_F32p32 v);
+static inline Eina_F32p32 eina_f32p32_double_from(double v);
+static inline double eina_f32p32_double_to(Eina_F32p32 v);
+
+static inline Eina_F32p32 eina_f32p32_add(Eina_F32p32 a, Eina_F32p32 b);
+static inline Eina_F32p32 eina_f32p32_sub(Eina_F32p32 a, Eina_F32p32 b);
+static inline Eina_F32p32 eina_f32p32_mul(Eina_F32p32 a, Eina_F32p32 b);
+static inline Eina_F32p32 eina_f32p32_div(Eina_F32p32 a, Eina_F32p32 b);
+static inline Eina_F32p32 eina_f32p32_sqrt(Eina_F32p32 a);
+static inline unsigned int eina_f32p32_fracc_get(Eina_F32p32 v);
+
+static inline Eina_F16p16 eina_f16p16_int_from(int32_t v);
+static inline int32_t eina_f16p16_int_to(Eina_F16p16 v);
+static inline Eina_F16p16 eina_f16p16_float_from(float v);
+static inline float eina_f16p16_float_to(Eina_F16p16 v);
+
+static inline Eina_F16p16 eina_f16p16_add(Eina_F16p16 a, Eina_F16p16 b);
+static inline Eina_F16p16 eina_f16p16_sub(Eina_F16p16 a, Eina_F16p16 b);
+static inline Eina_F16p16 eina_f16p16_mul(Eina_F16p16 a, Eina_F16p16 b);
+static inline Eina_F16p16 eina_f16p16_div(Eina_F16p16 a, Eina_F16p16 b);
+static inline Eina_F16p16 eina_f16p16_sqrt(Eina_F16p16 a);
+static inline unsigned int eina_f16p16_fracc_get(Eina_F16p16 v);
+
+static inline Eina_F8p24 eina_f8p24_int_from(int32_t v);
+static inline int32_t eina_f8p24_int_to(Eina_F8p24 v);
+static inline Eina_F8p24 eina_f8p24_float_from(float v);
+static inline float eina_f8p24_float_to(Eina_F8p24 v);
+
+static inline Eina_F8p24 eina_f8p24_add(Eina_F8p24 a, Eina_F8p24 b);
+static inline Eina_F8p24 eina_f8p24_sub(Eina_F8p24 a, Eina_F8p24 b);
+static inline Eina_F8p24 eina_f8p24_mul(Eina_F8p24 a, Eina_F8p24 b);
+static inline Eina_F8p24 eina_f8p24_div(Eina_F8p24 a, Eina_F8p24 b);
+static inline Eina_F8p24 eina_f8p24_sqrt(Eina_F8p24 a);
+static inline unsigned int eina_f8p24_fracc_get(Eina_F8p24 v);
+
+static inline Eina_F32p32 eina_f16p16_to_f32p32(Eina_F16p16 a);
+static inline Eina_F32p32 eina_f8p24_to_f32p32(Eina_F8p24 a);
+static inline Eina_F16p16 eina_f32p32_to_f16p16(Eina_F32p32 a);
+static inline Eina_F16p16 eina_f8p24_to_f16p16(Eina_F8p24 a);
+static inline Eina_F8p24 eina_f32p32_to_f8p24(Eina_F32p32 a);
+static inline Eina_F8p24 eina_f16p16_to_f8p24(Eina_F16p16 a);
+
+#include "eina_inline_f32p32.x"
+#include "eina_inline_f16p16.x"
+#include "eina_inline_f8p24.x"
+#include "eina_inline_fp.x"
+
+#endif
diff --git a/src/include/eina_main.h b/src/include/eina_hamster.h
similarity index 84%
copy from src/include/eina_main.h
copy to src/include/eina_hamster.h
index c504bbb..84682ce 100644
--- a/src/include/eina_main.h
+++ b/src/include/eina_hamster.h
@@ -16,8 +16,8 @@
  * if not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef EINA_MAIN_H_
-#define EINA_MAIN_H_
+#ifndef EINA_HAMSTER_H_
+#define EINA_HAMSTER_H_
 
 /**
  * @addtogroup Eina_Core_Group Core
@@ -26,14 +26,12 @@
  */
 
 /**
- * @defgroup Eina_Main_Group Main
+ * @defgroup Eina_Main_Group Hamster
  *
  * @{
  */
 
-EAPI int eina_init(void);
-
-EAPI int eina_shutdown(void);
+EAPI int eina_hamster_count(void);
 
 /**
  * @}
@@ -43,4 +41,4 @@ EAPI int eina_shutdown(void);
  * @}
  */
 
-#endif /* EINA_MAIN_H_ */
+#endif /* EINA_HAMSTER_H_ */
diff --git a/src/include/eina_hash.h b/src/include/eina_hash.h
index f343f5a..a1d145c 100644
--- a/src/include/eina_hash.h
+++ b/src/include/eina_hash.h
@@ -60,14 +60,11 @@ typedef int (*Eina_Key_Cmp)(const void *key1, int key1_length,
 typedef int (*Eina_Key_Hash)(const void *key, int key_length);
 #define EINA_KEY_HASH(Function) ((Eina_Key_Hash)Function)
 
-EAPI int eina_hash_init(void);
-EAPI int eina_hash_shutdown(void);
-
 EAPI Eina_Hash * eina_hash_new(Eina_Key_Length key_length_cb,
 			       Eina_Key_Cmp key_cmp_cb,
 			       Eina_Key_Hash key_hash_cb,
 			       Eina_Free_Cb data_free_cb,
-			       int buckets_power_size) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2, 3);
+			       int buckets_power_size) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(2, 3);
 EAPI Eina_Hash * eina_hash_string_djb2_new(Eina_Free_Cb data_free_cb);
 EAPI Eina_Hash * eina_hash_string_superfast_new(Eina_Free_Cb data_free_cb);
 EAPI Eina_Hash * eina_hash_string_small_new(Eina_Free_Cb data_free_cb);
diff --git a/src/include/eina_inline_array.x b/src/include/eina_inline_array.x
index a9a2ba3..1a2dc31 100644
--- a/src/include/eina_inline_array.x
+++ b/src/include/eina_inline_array.x
@@ -19,11 +19,6 @@
 #ifndef EINA_INLINE_ARRAY_X_
 #define EINA_INLINE_ARRAY_X_
 
-#ifdef __GNUC__
-# define UNLIKELY(x) __builtin_expect(!!(x), 0)
-#else
-# define UNLIKELY(x) (x)
-#endif
 
 /**
  * @cond LOCAL
@@ -62,7 +57,7 @@ eina_array_push(Eina_Array *array, const void *data)
 {
    if (!data) return EINA_FALSE;
 
-   if (UNLIKELY((array->count + 1) > array->total))
+   if (EINA_UNLIKELY((array->count + 1) > array->total))
      if (!eina_array_grow(array)) return EINA_FALSE;
 
    array->data[array->count++] = (void*) data;
diff --git a/src/include/eina_inline_f16p16.x b/src/include/eina_inline_f16p16.x
new file mode 100644
index 0000000..f62a3c8
--- /dev/null
+++ b/src/include/eina_inline_f16p16.x
@@ -0,0 +1,77 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2008 Jorge Luis Zapata Muga
+ * Copyright (C) 2009 Cedric BAIL
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_INLINE_F16P16_X_
+#define EINA_INLINE_F16P16_X_
+
+static inline Eina_F16p16
+eina_f16p16_add(Eina_F16p16 a, Eina_F16p16 b)
+{
+   return a + b;
+}
+
+static inline Eina_F16p16
+eina_f16p16_sub(Eina_F16p16 a, Eina_F16p16 b)
+{
+   return a - b;
+}
+
+static inline Eina_F16p16
+eina_f16p16_mul(Eina_F16p16 a, Eina_F16p16 b)
+{
+   return ((int64_t)a * (int64_t)b) >> 16;
+}
+
+static inline Eina_F16p16
+eina_f16p16_div(Eina_F16p16 a, Eina_F16p16 b)
+{
+   return (Eina_F16p16) ((((int64_t) a) << 16) / (int64_t) b);
+}
+
+static inline Eina_F16p16
+eina_f16p16_sqrt(Eina_F16p16 a)
+{
+   unsigned int root, remHi, remLo, testDiv, count;
+
+   root = 0; /* Clear root */
+   remHi = 0; /* Clear high part of partial remainder */
+   remLo = a; /* Get argument into low part of partial remainder */
+   count = (15 + (16 >> 1)); /* Load loop counter */
+   do {
+      remHi = (remHi << 2) | (remLo >> 30);
+      remLo <<= 2; /* get 2 bits of arg */
+      root <<= 1; /* Get ready for the next bit in the root */
+      testDiv = (root << 1) + 1; /* Test radical */
+      if (remHi >= testDiv)
+	{
+	   remHi -= testDiv;
+	   root++;
+	}
+   } while (count-- != 0);
+
+   return root;
+}
+
+static inline unsigned int
+eina_f16p16_fracc_get(Eina_F16p16 v)
+{
+   return (v & 0xffff);
+}
+
+#endif
diff --git a/src/include/eina_inline_f32p32.x b/src/include/eina_inline_f32p32.x
new file mode 100644
index 0000000..9e90e87
--- /dev/null
+++ b/src/include/eina_inline_f32p32.x
@@ -0,0 +1,76 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2009 Jorge Luis Zapata Muga, Cedric BAIL
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_INLINE_F32P32_X_
+# define EINA_INLINE_F32P32_X_
+
+static inline Eina_F32p32
+eina_f32p32_add(Eina_F32p32 a, Eina_F32p32 b)
+{
+   return a + b;
+}
+
+static inline Eina_F32p32
+eina_f32p32_sub(Eina_F32p32 a, Eina_F32p32 b)
+{
+   return a - b;
+}
+
+static inline Eina_F32p32
+eina_f32p32_mul(Eina_F32p32 a, Eina_F32p32 b)
+{
+   return (a * b) >> 32;
+}
+
+static inline Eina_F32p32
+eina_f32p32_div(Eina_F32p32 a, Eina_F32p32 b)
+{
+   /* If a > 2³², you will have a wrong result due to overflow. */
+   return (a << 32) / b;
+}
+
+static inline Eina_F32p32
+eina_f32p32_sqrt(Eina_F32p32 a)
+{
+   uint64_t root, remHi, remLo, testDiv, count;
+
+   root = 0; /* Clear root */
+   remHi = 0; /* Clear high part of partial remainder */
+   remLo = a; /* Get argument into low part of partial remainder */
+   count = (31 + (32 >> 1)); /* Load loop counter */
+   do {
+      remHi = (remHi << 2) | (remLo >> 30);
+      remLo <<= 2; /* get 2 bits of arg */
+      root <<= 1; /* Get ready for the next bit in the root */
+      testDiv = (root << 1) + 1; /* Test radical */
+      if (remHi >= testDiv) {
+	 remHi -= testDiv;
+	 root++;
+      }
+   } while (count-- != 0);
+
+   return root;
+}
+
+static inline unsigned int
+eina_f32p32_fracc_get(Eina_F32p32 v)
+{
+   return (unsigned int)v;
+}
+
+#endif
diff --git a/src/include/eina_inline_f8p24.x b/src/include/eina_inline_f8p24.x
new file mode 100644
index 0000000..7e45220
--- /dev/null
+++ b/src/include/eina_inline_f8p24.x
@@ -0,0 +1,76 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2008 Jorge Luis Zapata Muga
+ * Copyright (C) 2009 Cedric BAIL
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_INLINE_F8P24_X_
+#define EINA_INLINE_F8P24_X_
+
+static inline Eina_F8p24
+eina_f8p24_add(Eina_F8p24 a, Eina_F8p24 b)
+{
+   return a + b;
+}
+
+static inline Eina_F8p24
+eina_f8p24_sub(Eina_F8p24 a, Eina_F8p24 b)
+{
+   return a - b;
+}
+
+static inline Eina_F8p24
+eina_f8p24_mul(Eina_F8p24 a, Eina_F8p24 b)
+{
+   return ((int64_t) a * (int64_t) b) >> 24;
+}
+
+static inline Eina_F8p24
+eina_f8p24_div(Eina_F8p24 a, Eina_F8p24 b)
+{
+   return (Eina_F8p24) ((((int64_t) a) << 24) / (int64_t) b);
+}
+
+static inline Eina_F8p24
+eina_f8p24_sqrt(Eina_F8p24 a)
+{
+   unsigned int root, remHi, remLo, testDiv, count;
+
+   root = 0; /* Clear root */
+   remHi = 0; /* Clear high part of partial remainder */
+   remLo = a; /* Get argument into low part of partial remainder */
+   count = (23 + (24 >> 1)); /* Load loop counter */
+   do {
+      remHi = (remHi << 2) | (remLo >> 30);
+      remLo <<= 2; /* get 2 bits of arg */
+      root <<= 1; /* Get ready for the next bit in the root */
+      testDiv = (root << 1) + 1; /* Test radical */
+      if (remHi >= testDiv)
+	{
+	   remHi -= testDiv;
+	   root++;
+	}
+   } while (count-- != 0);
+   return (root);
+}
+
+static inline unsigned int
+eina_f8p24_fracc_get(Eina_F8p24 v)
+{
+   return (v & 0xffffff);
+}
+
+#endif
diff --git a/src/include/eina_inline_fp.x b/src/include/eina_inline_fp.x
new file mode 100644
index 0000000..b8603bb
--- /dev/null
+++ b/src/include/eina_inline_fp.x
@@ -0,0 +1,153 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2008 Jorge Luis Zapata Muga
+ * Copyright (C) 2009 Cedric BAIL
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_INLINE_FP_X_
+# define EINA_INLINE_FP_X_
+
+static inline Eina_F32p32
+eina_f32p32_int_from(int32_t v)
+{
+   return (Eina_F32p32) v << 32;
+}
+
+static inline int32_t
+eina_f32p32_int_to(Eina_F32p32 v)
+{
+   return v >> 32;
+}
+
+static inline Eina_F32p32
+eina_f32p32_double_from(double v)
+{
+   Eina_F32p32 r;
+   r = (Eina_F32p32)(v * 4294967296.0 + (v < 0 ? -0.5 : 0.5));
+   return r;
+}
+
+static inline double
+eina_f32p32_double_to(Eina_F32p32 v)
+{
+   double r;
+   r = v / 4294967296.0;
+   return r;
+}
+
+
+
+static inline Eina_F16p16
+eina_f16p16_int_from(int32_t v)
+{
+   return v << 16;
+}
+
+static inline int32_t
+eina_f16p16_int_to(Eina_F16p16 v)
+{
+   return v >> 16;
+}
+
+static inline Eina_F16p16
+eina_f16p16_float_from(float v)
+{
+   Eina_F16p16 r;
+
+   r = (Eina_F16p16)(v * 65536.0f + (v < 0 ? -0.5f : 0.5f));
+   return r;
+}
+
+static inline float
+eina_f16p16_float_to(Eina_F16p16 v)
+{
+   float r;
+
+   r = v / 65536.0f;
+   return r;
+}
+
+
+
+static inline Eina_F8p24
+eina_f8p24_int_from(int32_t v)
+{
+   return v << 24;
+}
+
+static inline int32_t
+eina_f8p24_int_to(Eina_F8p24 v)
+{
+   return v >> 24;
+}
+
+static inline Eina_F8p24
+eina_f8p24_float_from(float v)
+{
+   Eina_F8p24 r;
+
+   r = (Eina_F8p24)(v * 16777216.0f + (v < 0 ? -0.5f : 0.5f));
+   return r;
+}
+
+static inline float
+eina_f8p24_float_to(Eina_F8p24 v)
+{
+   float r;
+
+   r = v / 16777216.0f;
+   return r;
+}
+
+
+
+static inline Eina_F32p32
+eina_f16p16_to_f32p32(Eina_F16p16 a)
+{
+   return ((Eina_F32p32) a) << 16;
+}
+
+static inline Eina_F32p32
+eina_f8p24_to_f32p32(Eina_F8p24 a)
+{
+   return ((Eina_F32p32) a) << 8;
+}
+
+static inline Eina_F16p16
+eina_f32p32_to_f16p16(Eina_F32p32 a)
+{
+   return (Eina_F16p16) a >> 16;
+}
+
+static inline Eina_F16p16
+eina_f8p24_to_f16p16(Eina_F8p24 a)
+{
+   return (Eina_F16p16) a >> 8;
+}
+
+static inline Eina_F8p24
+eina_f32p32_to_f8p24(Eina_F32p32 a)
+{
+   return (Eina_F8p24) a >> 8;
+}
+
+static inline Eina_F8p24
+eina_f16p16_to_f8p24(Eina_F16p16 a)
+{
+   return (Eina_F8p24) a << 8;
+}
+
+#endif
diff --git a/src/include/eina_inline_tiler.x b/src/include/eina_inline_tiler.x
new file mode 100644
index 0000000..760f3ba
--- /dev/null
+++ b/src/include/eina_inline_tiler.x
@@ -0,0 +1,177 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2002-2009 Rafael Antognolli
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_TILER_INLINE_H_
+#define EINA_TILER_INLINE_H_
+
+#include "eina_safety_checks.h"
+
+/**
+ * This struct should not be accessed directly, it is used by
+ * eina_tile_grid_slicer functions to maintain context and fill "info"
+ * member with correct values for given iteration.
+ */
+struct _Eina_Tile_Grid_Slicer
+{
+   unsigned long col1, col2, row1, row2; // initial and final col,row
+   int tile_w, tile_h; // tile width, height
+   int x_rel, y_rel; // starting x,y coordinates of the first col,row
+   int w1_rel, h1_rel; // width,height of the first col,row
+   int w2_rel, h2_rel; // width,height of the last col,row
+   struct Eina_Tile_Grid_Info info; // info about the current tile
+   Eina_Bool first;
+};
+
+/**
+ * @brief Iterates over the tiles set by eina_tile_grid_slicer_setup().
+ *
+ * @param   slc Pointer to an Eina_Tile_Grid_Slicer struct.
+ * @param   rect Pointer to a struct Eina_Tile_Grid_Info *.
+ * @return  @c EINA_TRUE if the current rect is valid.
+ *          @c EINA_FALSE if there is no more rects to iterate over (and
+ *	       thus the current one isn't valid).
+ *
+ * This functions iterates over each Eina_Tile_Grid_Info *rect of the grid.
+ * eina_tile_grid_slicer_setup() must be called first, and *rect is only valid
+ * if this function returns EINA_TRUE. Its content shouldn't be modified.
+ */
+static inline Eina_Bool
+eina_tile_grid_slicer_next(Eina_Tile_Grid_Slicer *slc, const Eina_Tile_Grid_Info **rect)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(slc, 0);
+
+   if (slc->first)
+     {
+	slc->first = 0;
+	*rect = &slc->info;
+	return EINA_TRUE;
+     }
+
+   slc->info.col++;
+
+   if (slc->info.col > slc->col2)
+     {
+	slc->info.row++;
+	if (slc->info.row > slc->row2)
+	  return EINA_FALSE;
+	else if (slc->info.row < slc->row2)
+	  slc->info.rect.h = slc->tile_h;
+	else
+	  slc->info.rect.h = slc->h2_rel;
+	slc->info.rect.y = 0;
+	slc->info.col = slc->col1;
+	slc->info.rect.x = slc->x_rel;
+	slc->info.rect.w = slc->w1_rel;
+     }
+   else
+     {
+	slc->info.rect.x = 0;
+	if (slc->info.col < slc->col2)
+	  slc->info.rect.w = slc->tile_w;
+	else
+	  slc->info.rect.w = slc->w2_rel;
+     }
+
+   if (slc->info.rect.w == slc->tile_w && slc->info.rect.h == slc->tile_h)
+     slc->info.full = EINA_TRUE;
+   else
+     slc->info.full = EINA_FALSE;
+
+   *rect = &slc->info;
+
+   return EINA_TRUE;
+}
+
+/**
+ * @brief Setup an Eina_Tile_Grid_Slicer struct.
+ *
+ * @param   slc Pointer to an Eina_Tile_Grid_Slicer struct.
+ * @param   x X axis coordinate.
+ * @param   y Y axis coordinate.
+ * @param   w width.
+ * @param   h height.
+ * @param   tile_w tile width.
+ * @param   tile_h tile height.
+ * @return  A pointer to the Eina_Iterator.
+ *          @c NULL on failure.
+ *
+ * This function splits the rectangle given as argument into tiles of size
+ * tile_w X tile_h, and returns an iterator to them. The geometry of each
+ * tile can be accessed with eina_tile_grid_slicer_next, where rect
+ * will be a pointer to a struct Eina_Tile_Grid_Info.
+ */
+static inline Eina_Bool
+eina_tile_grid_slicer_setup(Eina_Tile_Grid_Slicer *slc, int x, int y, int w, int h, int tile_w, int tile_h)
+{
+   int x1, x2, y1, y2;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(slc, 0);
+
+   x1 = x;
+   y1 = y;
+   x2 = x + w - 1;
+   y2 = y + h - 1;
+
+   if (x < 0 || y < 0 || w <= 0 || h <= 0 || tile_w <= 0 || tile_h <= 0)
+     {
+	slc->first = 0;
+	slc->col1 = slc->row1 = 0;
+	slc->col2 = slc->row2 = 0;
+	slc->info.col = slc->col1;
+	slc->info.row = slc->row1;
+	return EINA_TRUE;
+     }
+
+   slc->col1 = x1 / tile_w;
+   slc->row1 = y1 / tile_h;
+   slc->col2 = (x2 - 0) / tile_w;
+   slc->row2 = (y2 - 0) / tile_h;
+   slc->x_rel = x1 % tile_w;
+   slc->y_rel = y1 % tile_h;
+   slc->w1_rel = tile_w - slc->x_rel;
+   slc->h1_rel = tile_h - slc->y_rel;
+   slc->w2_rel = x2 % tile_w + 1;
+   slc->h2_rel = y2 % tile_h + 1;
+
+   slc->tile_w = tile_w;
+   slc->tile_h = tile_h;
+
+   slc->first = 1;
+   slc->info.col = slc->col1;
+   slc->info.row = slc->row1;
+   slc->info.rect.x = slc->x_rel;
+   slc->info.rect.y = slc->y_rel;
+
+   if (slc->info.col == slc->col2)
+     slc->w1_rel = slc->w2_rel - slc->x_rel;
+
+   if (slc->info.row == slc->row2)
+     slc->h1_rel = slc->h2_rel - slc->y_rel;
+
+   slc->info.rect.w = slc->w1_rel;
+   slc->info.rect.h = slc->h1_rel;
+
+   if (slc->info.rect.w == slc->tile_w && slc->info.rect.h == slc->tile_h)
+     slc->info.full = EINA_TRUE;
+   else
+     slc->info.full = EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+#endif
diff --git a/src/include/eina_inlist.h b/src/include/eina_inlist.h
index 4830b85..833d539 100644
--- a/src/include/eina_inlist.h
+++ b/src/include/eina_inlist.h
@@ -52,7 +52,7 @@ struct _Eina_Inlist
 
 #define EINA_INLIST Eina_Inlist __in_list
 #define EINA_INLIST_GET(Inlist) (&((Inlist)->__in_list))
-#define EINA_INLIST_CONTAINER_GET(ptr, type) ((type *) ((Eina_Inlist *) ptr - offsetof(type, __in_list)))
+#define EINA_INLIST_CONTAINER_GET(ptr, type) ((type *) ((char *) ptr - offsetof(type, __in_list)))
 
 EAPI Eina_Inlist * eina_inlist_append(Eina_Inlist *in_list, Eina_Inlist *in_item) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_Inlist * eina_inlist_prepend(Eina_Inlist *in_list, Eina_Inlist *in_item) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
@@ -67,8 +67,13 @@ EAPI unsigned int eina_inlist_count(const Eina_Inlist *list) EINA_WARN_UNUSED_RE
 EAPI Eina_Iterator *eina_inlist_iterator_new(const Eina_Inlist *in_list) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
 EAPI Eina_Accessor *eina_inlist_accessor_new(const Eina_Inlist *in_list) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
 
-#define EINA_INLIST_FOREACH(list, l) for (l = (void*)list; l; l = (void*)(l->__in_list.next))
-#define EINA_INLIST_REVERSE_FOREACH(list, l) for (l = (list ? (void*)(list->last) : NULL); l; l = (void*)(l->__in_list.prev))
+/* This two macros are helpers for the _FOREACH ones, don't use them */
+#define _EINA_INLIST_OFFSET(ref) ((char*)&(ref)->__in_list - (char*)(ref))
+#define _EINA_INLIST_CONTAINER(ref, ptr) (void*)((char*)(ptr) - _EINA_INLIST_OFFSET(ref))
+
+#define EINA_INLIST_FOREACH(list, l) for (l = NULL, l = (list ? _EINA_INLIST_CONTAINER(l, list) : NULL); l; l = (EINA_INLIST_GET(l)->next ? _EINA_INLIST_CONTAINER(l, EINA_INLIST_GET(l)->next) : NULL))
+#define EINA_INLIST_REVERSE_FOREACH(list, l) for (l = NULL, l = (list ? _EINA_INLIST_CONTAINER(l, list->last) : NULL); l; l = (EINA_INLIST_GET(l)->prev ? _EINA_INLIST_CONTAINER(l, EINA_INLIST_GET(l)->prev) : NULL))
+
 
 /**
  * @}
diff --git a/src/include/eina_list.h b/src/include/eina_list.h
index 5b23b0b..d99fa18 100644
--- a/src/include/eina_list.h
+++ b/src/include/eina_list.h
@@ -75,15 +75,13 @@ struct _Eina_List_Accounting
    EINA_MAGIC
 };
 
-EAPI int eina_list_init(void);
-EAPI int eina_list_shutdown(void);
-
 EAPI Eina_List *eina_list_append (Eina_List *list, const void *data) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_prepend (Eina_List *list, const void *data) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_append_relative (Eina_List *list, const void *data, const void *relative) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_append_relative_list (Eina_List *list, const void *data, Eina_List *relative) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_prepend_relative (Eina_List *list, const void *data, const void *relative) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_prepend_relative_list (Eina_List *list, const void *data, Eina_List *relative) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
+EAPI Eina_List *eina_list_sorted_insert(Eina_List *list, Eina_Compare_Cb func, const void *data) EINA_ARG_NONNULL(2, 3) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_remove (Eina_List *list, const void *data) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_remove_list (Eina_List *list, Eina_List *remove_list) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_promote_list (Eina_List *list, Eina_List *move_list) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
@@ -99,8 +97,10 @@ EAPI Eina_List *eina_list_clone(const Eina_List *list) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_sort (Eina_List *list, unsigned int size, Eina_Compare_Cb func) EINA_ARG_NONNULL(3) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_merge (Eina_List *left, Eina_List *right) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_List *eina_list_sorted_merge(Eina_List *left, Eina_List *right, Eina_Compare_Cb func) EINA_ARG_NONNULL(3) EINA_WARN_UNUSED_RESULT;
+EAPI Eina_List *eina_list_split_list(Eina_List *list, Eina_List *relative, Eina_List **right) EINA_WARN_UNUSED_RESULT;
+
 
-EAPI Eina_List *eina_list_search_sorted_near_list(const Eina_List *list, Eina_Compare_Cb func, const void *data);
+EAPI Eina_List *eina_list_search_sorted_near_list(const Eina_List *list, Eina_Compare_Cb func, const void *data, int *result_cmp);
 EAPI Eina_List *eina_list_search_sorted_list(const Eina_List *list, Eina_Compare_Cb func, const void *data);
 EAPI void *eina_list_search_sorted(const Eina_List *list, Eina_Compare_Cb func, const void *data);
 EAPI Eina_List *eina_list_search_unsorted_list(const Eina_List *list, Eina_Compare_Cb func, const void *data);
@@ -118,24 +118,22 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
 
 /**
  * @def EINA_LIST_FOREACH
- * @brief Macro to iterate over a list easily.
+ * @brief Macro to iterate over a list.
  *
  * @param list The list to iterate over.
- * @param l A list that is used as loop index.
- * @param data The data.
+ * @param l A list that is used as an iterator and points to the current node.
+ * @param data Current item's data.
  *
- * This macro allow the iteration over @p list in an easy way. It
- * iterates from the first element to the last one. @p data is the
- * data of each element of the list. @p l is an #Eina_List that is
- * used as counter.
+ * This macro iterates over @p list from the first element to
+ * the last. @p data is the data related to the current element.
+ * @p l is an #Eina_List used as the list iterator.
  *
- * This macro can be used for freeing the data of a list, like in
- * the following example:
+ * It can be used to free list data, as in the following example:
  *
  * @code
  * Eina_List *list;
  * Eina_List *l;
- * char       *data;
+ * char      *data;
  *
  * // list is already filled,
  * // its elements are just duplicated strings,
@@ -146,36 +144,39 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  * eina_list_free(list);
  * @endcode
  *
- * @note this example is not optimal algorithm to release a list since
- *    it will walk the list twice, but it serves as an example. For
- *    optimized version use EINA_LIST_FREE().
- *
- * @warning do not delete list nodes, specially the current node,
- *    while iterating. If you wish to do so, use
- *    EINA_LIST_FOREACH_SAFE().
+ * @note This is not the optimal way to release memory allocated to
+ *       a list, since it iterates over the list twice.
+ *       For an optimized algorithm, use EINA_LIST_FREE().
+ *
+ * @warning Be careful when deleting list nodes.
+ *          If you remove the current node and continue iterating,
+ *          the code will fail because the macro will not be able
+ *          to get the next node. Notice that it's OK to remove any
+ *          node if you stop the loop after that.
+ *          For destructive operations such as this, consider
+ *          using EINA_LIST_FOREACH_SAFE().
  */
 #define EINA_LIST_FOREACH(list, l, data) for (l = list, data = eina_list_data_get(l); l; l = eina_list_next(l), data = eina_list_data_get(l))
 
 /**
  * @def EINA_LIST_REVERSE_FOREACH
- * @brief Macro to iterate over a list easily in the reverse order.
+ * @brief Macro to iterate over a list in the reverse order.
  *
  * @param list The list to iterate over.
- * @param l A list that is used as loop index.
- * @param data The data.
+ * @param l A list that is used as an iterator and points to the current node.
+ * @param data Current item's data.
  *
- * This macro allow the reversed iteration over @p list in an easy
- * way. It iterates from the last element to the first one. @p data is
- * the data of each element of the list. @p l is an #Eina_List that is
- * used as counter.
+ * This macro works like EINA_LIST_FOREACH, but iterates from the
+ * last element of a list to the first.
+ * @p data is the data related to the current element, while @p l
+ * is an #Eina_List that is used as the list iterator.
  *
- * This macro can be used for freeing the data of a list, like in
- * the following example:
+ * It can be used to free list data, as in the following example:
  *
  * @code
  * Eina_List *list;
  * Eina_List *l;
- * char       *data;
+ * char      *data;
  *
  * // list is already filled,
  * // its elements are just duplicated strings,
@@ -186,42 +187,43 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  * eina_list_free(list);
  * @endcode
  *
- * @note this example is not optimal algorithm to release a list since
- *    it will walk the list twice, but it serves as an example. For
- *    optimized version use EINA_LIST_FREE()
- *
- * @warning do not delete list nodes, specially the current node,
- *    while iterating. If you wish to do so, use
- *    EINA_LIST_REVERSE_FOREACH_SAFE().
+ * @note This is not the optimal way to release memory allocated to
+ *       a list, since it iterates over the list twice.
+ *       For an optimized algorithm, use EINA_LIST_FREE().
+ *
+ * @warning Be careful when deleting list nodes.
+ *          If you remove the current node and continue iterating,
+ *          the code will fail because the macro will not be able
+ *          to get the next node. Notice that it's OK to remove any
+ *          node if you stop the loop after that.
+ *          For destructive operations such as this, consider
+ *          using EINA_LIST_REVERSE_FOREACH_SAFE().
  */
 #define EINA_LIST_REVERSE_FOREACH(list, l, data) for (l = eina_list_last(list), data = eina_list_data_get(l); l; l = eina_list_prev(l), data = eina_list_data_get(l))
 
 /**
  * @def EINA_LIST_FOREACH_SAFE
- * @brief Macro to iterate over a list easily, supporting deletion.
+ * @brief Macro to iterate over a list with support for node deletion.
  *
  * @param list The list to iterate over.
- * @param l A list that is used as loop index.
- * @param l_next A second list that is used as loop next index.
- * @param data The data.
+ * @param l A list that is used as an iterator and points to the current node.
+ * @param l_next A list that is used as an iterator and points to the next node.
+ * @param data Current item's data.
  *
- * This macro allow the iteration over @p list in an easy way. It
- * iterates from the first element to the last one. @p data is the
- * data of each element of the list. @p l is an #Eina_List that is
- * used as counter.
+ * This macro iterates over @p list from the first element to
+ * the last. @p data is the data related to the current element.
+ * @p l is an #Eina_List used as the list iterator.
  *
- * This is the safe version, which stores the next pointer in @p l_next
- * before proceeding, so deletion of @b current node is safe. If you wish
- * to remove anything else, remember to set @p l_next accordingly.
+ * Since this macro stores a pointer to the next list node in @p l_next,
+ * deleting the current node and continuing looping is safe.
  *
- * This macro can be used for freeing list nodes, like in
- * the following example:
+ * This macro can be used to free list nodes, as in the following example:
  *
  * @code
  * Eina_List *list;
  * Eina_List *l;
  * Eina_List *l_next;
- * char       *data;
+ * char      *data;
  *
  * // list is already filled,
  * // its elements are just duplicated strings,
@@ -238,26 +240,23 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
 
 /**
  * @def EINA_LIST_REVERSE_FOREACH_SAFE
- * @brief Macro to iterate over a list easily in the reverse order,
- * supporting deletion.
+ * @brief Macro to iterate over a list in the reverse order with support
+ *        for deletion.
  *
  * @param list The list to iterate over.
- * @param l A list that is used as loop index.
- * @param l_prev A second list that is used as loop previous index.
- * @param data The data.
+ * @param l A list that is used as an iterator and points to the current node.
+ * @param l_prev A list that is used as an iterator and points to the previous node.
+ * @param data Current item's data.
  *
- * This macro allow the reversed iteration over @p list in an easy
- * way. It iterates from the last element to the first one. @p data is
- * the data of each element of the list. @p l is an #Eina_List that is
- * used as counter.
+ * This macro works like EINA_LIST_FOREACH_SAFE, but iterates from the
+ * last element of a list to the first.
+ * @p data is the data related to the current element, while @p l
+ * is an #Eina_List that is used as the list iterator.
  *
- * This is the safe version, which stores the previous pointer in @p
- * l_prev before proceeding, so deletion of @b current node is
- * safe. If you wish to remove anything else, remember to set @p
- * l_prev accordingly.
+ * Since this macro stores a pointer to the previous list node in @p l_prev,
+ * deleting the current node and continuing looping is safe.
  *
- * This macro can be used for freeing list nodes, like in
- * the following example:
+ * This macro can be used to free list nodes, as in the following example:
  *
  * @code
  * Eina_List *list;
@@ -276,14 +275,23 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  *   }
  * @endcode
  */
-#define EINA_LIST_REVERSE_FOREACH_SAFE(list, l, l_prev, data) for (l = list, l_prev = eina_list_prev(l), data = eina_list_data_get(l); l; l = l_prev, l_prev = eina_list_prev(l), data = eina_list_data_get(l))
+#define EINA_LIST_REVERSE_FOREACH_SAFE(list, l, l_prev, data) for (l = eina_list_last(list), l_prev = eina_list_prev(l), data = eina_list_data_get(l); l; l = l_prev, l_prev = eina_list_prev(l), data = eina_list_data_get(l))
 
 /**
- * Easy way to free the while list while being able to release its pointed data.
+ * @def EINA_LIST_FREE
+ * @brief Macro to remove each list node while having access to each node's data.
+ *
+ * @param list The list that will be cleared.
+ * @param data Current node's data.
+ *
+ * This macro will call #eina_list_remove_list for each list node, and store
+ * the data contained in the current node in @p data.
+ *
+ * If you do not need to release node data, it is easier to call #eina_list_free().
  *
  * @code
  * Eina_List *list;
- * char *data;
+ * char      *data;
  *
  * // list is already filled,
  * // its elements are just duplicated strings,
@@ -292,11 +300,9 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  *   free(data);
  * @endcode
  *
- * If you do not need to release node data then use eina_list_free().
- *
  * @see eina_list_free()
  */
-#define EINA_LIST_FREE(list, data) for (data = list ? eina_list_data_get(list) : NULL; list; list = eina_list_remove_list(list, list), data = list ? eina_list_data_get(list) : NULL)
+#define EINA_LIST_FREE(list, data) for (data = eina_list_data_get(list); list; list = eina_list_remove_list(list, list), data = eina_list_data_get(list))
 
 #include "eina_inline_list.x"
 
diff --git a/src/include/eina_log.h b/src/include/eina_log.h
new file mode 100644
index 0000000..0b481ee
--- /dev/null
+++ b/src/include/eina_log.h
@@ -0,0 +1,226 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2008 Jorge Luis Zapata Muga, Cedric Bail
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_LOG_H_
+#define EINA_LOG_H_
+
+#include <stdarg.h>
+
+#include "eina_types.h"
+
+#define EINA_COLOR_LIGHTRED  "\033[31;1m"
+#define EINA_COLOR_RED       "\033[31m"
+#define EINA_COLOR_LIGHTBLUE "\033[34;1m"
+#define EINA_COLOR_BLUE      "\033[34m"
+#define EINA_COLOR_GREEN     "\033[32;1m"
+#define EINA_COLOR_YELLOW    "\033[33;1m"
+#define EINA_COLOR_ORANGE    "\033[0;33m"
+#define EINA_COLOR_WHITE     "\033[37;1m"
+#define EINA_COLOR_LIGHTCYAN "\033[36;1m"
+#define EINA_COLOR_CYAN      "\033[36m"
+#define EINA_COLOR_RESET     "\033[0m"
+#define EINA_COLOR_HIGH      "\033[1m"
+
+/**
+ * @addtogroup Eina_Tools_Group Tools
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Log_Group Log
+ *
+ * @{
+ */
+
+EAPI extern int EINA_LOG_DOMAIN_GLOBAL;
+
+
+/**
+ * @def EINA_LOG(DOM, LEVEL, fmt, ...)
+ * Logs a message on the specified domain, level and format.
+ *
+ * @note if @c EINA_LOG_LEVEL_MAXIMUM is defined, then messages larger
+ *       than this value will be ignored regardless of current domain
+ *       level, the eina_log_print() is not even called! Most
+ *       compilers will just detect the two integers make the branch
+ *       impossible and remove the branch and function call all
+ *       together. Take this as optimization tip and possible remove
+ *       debug messages from binaries to be deployed, saving on hot
+ *       paths. Never define @c EINA_LOG_LEVEL_MAXIMUM on public
+ *       header files.
+ */
+#ifdef EINA_LOG_LEVEL_MAXIMUM
+#define EINA_LOG(DOM, LEVEL, fmt, ...)					\
+  do {									\
+     if (LEVEL <= EINA_LOG_LEVEL_MAXIMUM)				\
+       eina_log_print(DOM, LEVEL, __FILE__, __FUNCTION__, __LINE__,	\
+		      fmt, ##__VA_ARGS__);				\
+  } while (0)
+#else
+#define EINA_LOG(DOM, LEVEL, fmt, ...) \
+	eina_log_print(DOM, LEVEL, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
+#endif
+
+/**
+ * @def EINA_LOG_DOM_CRIT(DOM, fmt, ...)
+ * Logs a message with level CRITICAL on the specified domain and format.
+ */
+#define EINA_LOG_DOM_CRIT(DOM, fmt, ...) \
+	EINA_LOG(DOM, EINA_LOG_LEVEL_CRITICAL, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_DOM_ERR(DOM, fmt, ...)
+ * Logs a message with level ERROR on the specified domain and format.
+ */
+#define EINA_LOG_DOM_ERR(DOM, fmt, ...) \
+	EINA_LOG(DOM, EINA_LOG_LEVEL_ERR, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_DOM_INFO(DOM, fmt, ...)
+ * Logs a message with level INFO on the specified domain and format.
+ */
+#define EINA_LOG_DOM_INFO(DOM, fmt, ...) \
+	EINA_LOG(DOM, EINA_LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_DOM_DBG(DOM, fmt, ...)
+ * Logs a message with level DEBUG on the specified domain and format.
+ */
+#define EINA_LOG_DOM_DBG(DOM, fmt, ...) \
+	EINA_LOG(DOM, EINA_LOG_LEVEL_DBG, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_DOM_WARN(DOM, fmt, ...)
+ * Logs a message with level WARN on the specified domain and format.
+ */
+#define EINA_LOG_DOM_WARN(DOM, fmt, ...) \
+	EINA_LOG(DOM, EINA_LOG_LEVEL_WARN, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_CRIT(fmt, ...)
+ * Logs a message with level CRITICAL on the global domain with the specified
+ * format.
+ */
+#define EINA_LOG_CRIT(fmt, ...) \
+	EINA_LOG(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_CRITICAL, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_ERR(fmt, ...)
+ * Logs a message with level ERROR on the global domain with the specified
+ * format.
+ */
+#define EINA_LOG_ERR(fmt, ...) \
+	EINA_LOG(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_ERR, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_INFO(fmt, ...)
+ * Logs a message with level INFO on the global domain with the specified
+ * format.
+ */
+#define EINA_LOG_INFO(fmt, ...) \
+	EINA_LOG(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_WARN(fmt, ...)
+ * Logs a message with level WARN on the global domain with the specified
+ * format.
+ */
+#define EINA_LOG_WARN(fmt, ...) \
+	EINA_LOG(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_WARN, fmt, ##__VA_ARGS__)
+
+/**
+ * @def EINA_LOG_DBG(fmt, ...)
+ * Logs a message with level DEBUG on the global domain with the specified
+ * format.
+ */
+#define EINA_LOG_DBG(fmt, ...) \
+	EINA_LOG(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_DBG, fmt, ##__VA_ARGS__)
+
+typedef struct _Eina_Log_Domain Eina_Log_Domain;
+
+struct _Eina_Log_Domain
+{
+   int level;     /**< Max level to log */
+   const char *domain_str; /**< Formatted string with color to print */
+   const char *name;       /**< Domain name */
+
+   /* Private */
+   Eina_Bool deleted:1; /**< Flags deletion of domain, a free slot */
+};
+
+EAPI void eina_log_threads_enable(void);
+
+/**
+ * @enum _Eina_Log_Level
+ * List of available logging levels.
+ */
+typedef enum _Eina_Log_Level
+{
+	EINA_LOG_LEVEL_CRITICAL,           /**< Critical log level */
+	EINA_LOG_LEVEL_ERR,                /**< Error log level */
+	EINA_LOG_LEVEL_WARN,               /**< Warning log level */
+	EINA_LOG_LEVEL_INFO,               /**< Information log level */
+	EINA_LOG_LEVEL_DBG,                /**< Debug log level */
+	EINA_LOG_LEVELS,                   /**< Count of default log levels */
+	EINA_LOG_LEVEL_UNKNOWN = (-2147483647-1) /**< Unknown level */
+} Eina_Log_Level;
+
+/**
+ * @typedef Eina_Log_Print_Cb
+ * Type for print callbacks.
+ */
+typedef void (*Eina_Log_Print_Cb)(const Eina_Log_Domain *d, Eina_Log_Level level,
+				  const char *file, const char *fnc, int line,
+				  const char *fmt, void *data, va_list args);
+
+/*
+ * Customization
+ */
+EAPI void eina_log_print_cb_set(Eina_Log_Print_Cb cb, void *data) EINA_ARG_NONNULL(1);
+EAPI void eina_log_level_set(Eina_Log_Level level);
+
+/*
+ * Logging domains
+ */
+EAPI int  eina_log_domain_register(const char *name, const char *color) EINA_ARG_NONNULL(1);
+EAPI void eina_log_domain_unregister(int domain);
+
+/*
+ * Logging functions.
+ */
+EAPI void eina_log_print(int domain, Eina_Log_Level level, const char *file, const char *function, int line, const char *fmt, ...) EINA_ARG_NONNULL(3, 4, 6) EINA_PRINTF(6, 7) EINA_NOINSTRUMENT;
+EAPI void eina_log_vprint(int domain, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, va_list args) EINA_ARG_NONNULL(3, 4, 6) EINA_NOINSTRUMENT;
+
+
+/*
+ * Logging methods (change how logging is done).
+ */
+EAPI void eina_log_print_cb_stdout(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args);
+EAPI void eina_log_print_cb_stderr(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args);
+EAPI void eina_log_print_cb_file(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args);
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#endif /* EINA_LOG_H_ */
diff --git a/src/include/eina_magic.h b/src/include/eina_magic.h
index f58f16b..5b63d81 100644
--- a/src/include/eina_magic.h
+++ b/src/include/eina_magic.h
@@ -35,12 +35,15 @@
  * @{
  */
 
+typedef unsigned int               Eina_Magic;
 
-EAPI int eina_magic_string_init(void);
-EAPI int eina_magic_string_shutdown(void);
-
-
-#ifdef EINA_MAGIC_DEBUG
+/**
+ * @typedef Eina_Magic
+ * An abstract type for a magic number.
+ */
+EAPI const char* eina_magic_string_get(Eina_Magic magic) EINA_PURE EINA_WARN_UNUSED_RESULT;
+EAPI Eina_Bool eina_magic_string_set(Eina_Magic magic, const char *magic_name) EINA_ARG_NONNULL(2);
+EAPI Eina_Bool eina_magic_string_static_set(Eina_Magic magic, const char *magic_name) EINA_ARG_NONNULL(2);
 
 /**
  * @def EINA_MAGIC_NONE
@@ -52,6 +55,8 @@ EAPI int eina_magic_string_shutdown(void);
  */
 #define EINA_MAGIC_NONE            0x1234fedc
 
+#ifdef EINA_MAGIC_DEBUG
+
 /**
  * @def EINA_MAGIC
  * Declaration of a variable of type #Eina_Magic. To put in a structure
@@ -106,14 +111,6 @@ EAPI int eina_magic_string_shutdown(void);
  */
 #define EINA_MAGIC_FAIL(d, m)      eina_magic_fail((void*)(d), (d) ? (d)->__magic : 0, (m), __FILE__, __FUNCTION__, __LINE__);
 
-/**
- * @typedef Eina_Magic
- * An abstract type for a magic number.
- */
-typedef unsigned int               Eina_Magic;
-
-EAPI const char* eina_magic_string_get(Eina_Magic magic) EINA_PURE EINA_WARN_UNUSED_RESULT;
-EAPI void eina_magic_string_set(Eina_Magic magic, const char *magic_name) EINA_ARG_NONNULL(2);
 EAPI void eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m,
 			  const char *file, const char *fnc, int line) EINA_ARG_NONNULL(4, 5);
 
@@ -123,14 +120,11 @@ EAPI void eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m,
  * @cond LOCAL
  */
 
-#define EINA_MAGIC_NONE            ((void) 0)
 #define EINA_MAGIC
 #define EINA_MAGIC_SET(d, m)       ((void) 0)
 #define EINA_MAGIC_CHECK(d, m)	   (1)
 #define EINA_MAGIC_FAIL(d, m)      ((void) 0)
 
-#define eina_magic_string_get(Magic)                  (NULL)
-#define eina_magic_string_set(Magic, Magic_Name)      ((void) 0)
 #define eina_magic_fail(d, m, req_m, file, fnx, line) ((void) 0)
 
 /**
diff --git a/src/include/eina_main.h b/src/include/eina_main.h
index c504bbb..dc4f519 100644
--- a/src/include/eina_main.h
+++ b/src/include/eina_main.h
@@ -35,6 +35,10 @@ EAPI int eina_init(void);
 
 EAPI int eina_shutdown(void);
 
+EAPI int eina_threads_init(void);
+
+EAPI int eina_threads_shutdown(void);
+
 /**
  * @}
  */
diff --git a/src/include/eina_matrixsparse.h b/src/include/eina_matrixsparse.h
new file mode 100644
index 0000000..298bf38
--- /dev/null
+++ b/src/include/eina_matrixsparse.h
@@ -0,0 +1,112 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2009 Gustavo Sverzut Barbieri
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_MATRIXSPARSE_H_
+#define EINA_MATRIXSPARSE_H_
+
+#include <stdlib.h>
+
+#include "eina_config.h"
+
+#include "eina_types.h"
+#include "eina_iterator.h"
+#include "eina_accessor.h"
+
+/**
+ * @addtogroup Eina_Data_Types_Group Data Types
+ *
+ * @{
+ */
+
+/**
+ * @addtogroup Eina_Containers_Group Containers
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Matrixsparse_Group Sparse Matrix
+ *
+ * @{
+ */
+
+/**
+ * @typedef Eina_Matrixsparse
+ * Type for a generic sparse matrix.
+ */
+typedef struct _Eina_Matrixsparse Eina_Matrixsparse;
+
+/**
+ * @typedef Eina_Matrixsparse_Row
+ * Type for a generic sparse matrix row, opaque for users.
+ */
+typedef struct _Eina_Matrixsparse_Row Eina_Matrixsparse_Row;
+
+/**
+ * @typedef Eina_Matrixsparse_Cell
+ * Type for a generic sparse matrix cell, opaque for users.
+ */
+typedef struct _Eina_Matrixsparse_Cell Eina_Matrixsparse_Cell;
+
+typedef struct _Eina_Matrixsparse_Item_Cell   Eina_Matrixsparse_Item_Cell;
+typedef struct _Eina_Matrixsparse_Item_Row    Eina_Matrixsparse_Item_Row;
+
+
+/* constructors and destructors */
+EAPI Eina_Matrixsparse      *eina_matrixsparse_new(unsigned long rows, unsigned long cols, void (*free_func)(void *user_data, void *cell_data), const void *user_data);
+EAPI void                    eina_matrixsparse_free(Eina_Matrixsparse *m);
+
+/* size manipulation */
+EAPI void                    eina_matrixsparse_size_get(const Eina_Matrixsparse *m, unsigned long *rows, unsigned long *cols);
+EAPI Eina_Bool               eina_matrixsparse_size_set(Eina_Matrixsparse *m, unsigned long rows, unsigned long cols);
+
+/* data getting */
+EAPI Eina_Bool              eina_matrixsparse_cell_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col, Eina_Matrixsparse_Cell **cell);
+EAPI void                   *eina_matrixsparse_cell_data_get(const Eina_Matrixsparse_Cell *cell);
+EAPI void                   *eina_matrixsparse_data_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col);
+EAPI Eina_Bool               eina_matrixsparse_cell_position_get(const Eina_Matrixsparse_Cell *cell, unsigned long *row, unsigned long *col);
+
+/* data setting */
+EAPI Eina_Bool               eina_matrixsparse_cell_data_replace(Eina_Matrixsparse_Cell *cell, const void *data, void **p_old);
+EAPI Eina_Bool               eina_matrixsparse_cell_data_set(Eina_Matrixsparse_Cell *cell, const void *data);
+EAPI Eina_Bool               eina_matrixsparse_data_idx_replace(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data, void **p_old);
+EAPI Eina_Bool               eina_matrixsparse_data_idx_set(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data);
+
+/* data deleting */
+EAPI Eina_Bool               eina_matrixsparse_row_idx_clear(Eina_Matrixsparse *m, unsigned long row);
+EAPI Eina_Bool               eina_matrixsparse_column_idx_clear(Eina_Matrixsparse *m, unsigned long col);
+EAPI Eina_Bool               eina_matrixsparse_cell_idx_clear(Eina_Matrixsparse *m, unsigned long row, unsigned long col);
+EAPI Eina_Bool               eina_matrixsparse_cell_clear(Eina_Matrixsparse_Cell *cell);
+
+/* iterators */
+EAPI Eina_Iterator          *eina_matrixsparse_iterator_new(const Eina_Matrixsparse *m);
+EAPI Eina_Iterator          *eina_matrixsparse_iterator_complete_new(const Eina_Matrixsparse *m);
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#endif /* EINA_MATRIXSPARSE_H_ */
diff --git a/src/include/eina_mempool.h b/src/include/eina_mempool.h
index 22d390f..ee1382d 100644
--- a/src/include/eina_mempool.h
+++ b/src/include/eina_mempool.h
@@ -49,9 +49,6 @@ typedef struct _Eina_Mempool_Backend Eina_Mempool_Backend;
 
 EAPI extern Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE;
 
-EAPI int eina_mempool_init(void);
-EAPI int eina_mempool_shutdown(void);
-
 EAPI Eina_Mempool * eina_mempool_add(const char *module, const char *context, const char *options, ...) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI void eina_mempool_del(Eina_Mempool *mp) EINA_ARG_NONNULL(1);
 
diff --git a/src/include/eina_module.h b/src/include/eina_module.h
index dfa9cbc..dd9c20b 100644
--- a/src/include/eina_module.h
+++ b/src/include/eina_module.h
@@ -41,21 +41,27 @@ typedef Eina_Bool (*Eina_Module_Cb)(Eina_Module *m, void *data);
 typedef Eina_Bool (*Eina_Module_Init)(void);
 typedef void (*Eina_Module_Shutdown)(void);
 
-#define EINA_MODULE_INIT(f) EAPI Eina_Module_Init __eina_module_init = &f;
-#define EINA_MODULE_SHUTDOWN(f) EAPI Eina_Module_Shutdown __eina_module_shutdown = &f;
+#define EINA_MODULE_INIT(f) EAPI Eina_Module_Init __eina_module_init = &f
+#define EINA_MODULE_SHUTDOWN(f) EAPI Eina_Module_Shutdown __eina_module_shutdown = &f
 
+/**
+ * @var EINA_ERROR_WRONG_MODULE
+ * Error identifier corresponding to a wrong module.
+ */
 extern EAPI Eina_Error EINA_ERROR_WRONG_MODULE;
-extern EAPI Eina_Error EINA_ERROR_MODULE_INIT_FAILED;
 
-EAPI int eina_module_init(void);
-EAPI int eina_module_shutdown(void);
+/**
+ * @var EINA_ERROR_MODULE_INIT_FAILED
+ * Error identifier corresponding to a failure during the initialisation of a module.
+ */
+extern EAPI Eina_Error EINA_ERROR_MODULE_INIT_FAILED;
 
 EAPI Eina_Module * eina_module_new(const char *file) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_module_free(Eina_Module *m) EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_module_load(Eina_Module *module) EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_module_unload(Eina_Module *m) EINA_ARG_NONNULL(1);
-EAPI void *eina_module_symbol_get(Eina_Module *module, const char *symbol) EINA_PURE EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT;
-EAPI const char * eina_module_file_get(Eina_Module *m) EINA_PURE EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
+EAPI void *eina_module_symbol_get(const Eina_Module *module, const char *symbol) EINA_PURE EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT;
+EAPI const char * eina_module_file_get(const Eina_Module *m) EINA_PURE EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 
 EAPI char *eina_module_symbol_path_get(const void *symbol, const char *sub_dir) EINA_PURE EINA_MALLOC EINA_ARG_NONNULL(1, 2);
 EAPI char *eina_module_environment_path_get(const char *env, const char *sub_dir) EINA_PURE EINA_MALLOC EINA_ARG_NONNULL(1, 2);
@@ -64,6 +70,11 @@ EAPI Eina_Array * eina_module_list_get(Eina_Array *array, const char *path, unsi
 EAPI void eina_module_list_load(Eina_Array *list) EINA_ARG_NONNULL(1);
 EAPI void eina_module_list_unload(Eina_Array *list) EINA_ARG_NONNULL(1);
 EAPI void eina_module_list_flush(Eina_Array *list) EINA_ARG_NONNULL(1);
+EAPI Eina_Module * eina_module_find(const Eina_Array *array, const char *module) EINA_ARG_NONNULL(1, 2) EINA_PURE;
+
+/**
+ * @}
+ */
 
 /**
  * @}
diff --git a/src/include/eina_private.h b/src/include/eina_private.h
index ebb07a2..e3ba452 100644
--- a/src/include/eina_private.h
+++ b/src/include/eina_private.h
@@ -21,8 +21,6 @@
 
 #include <stdarg.h>
 
-#include "eina_config.h"
-
 #if HAVE___ATTRIBUTE__
 # define __UNUSED__ __attribute__((unused))
 #else
@@ -51,6 +49,8 @@
 
 #define READBUFSIZ 65536
 
+#define EINA_LOG_COLOR_DEFAULT "\033[36m"
+
 /* eina magic types */
 #define EINA_MAGIC_STRINGSHARE 0x98761234
 #define EINA_MAGIC_STRINGSHARE_NODE 0x98761235
@@ -71,6 +71,17 @@
 #define EINA_MAGIC_TILER 0x98761240
 #define EINA_MAGIC_TILER_ITERATOR 0x98761241
 
+#define EINA_MAGIC_MATRIXSPARSE 0x98761242
+#define EINA_MAGIC_MATRIXSPARSE_ROW 0x98761243
+#define EINA_MAGIC_MATRIXSPARSE_CELL 0x98761244
+#define EINA_MAGIC_MATRIXSPARSE_ITERATOR 0x98761245
+#define EINA_MAGIC_MATRIXSPARSE_ROW_ITERATOR 0x98761246
+#define EINA_MAGIC_MATRIXSPARSE_ROW_ACCESSOR 0x98761247
+#define EINA_MAGIC_MATRIXSPARSE_CELL_ITERATOR 0x98761248
+#define EINA_MAGIC_MATRIXSPARSE_CELL_ACCESSOR 0x98761249
+
+
+
 /* undef the following, we want out version */
 #undef FREE
 #define FREE(ptr)				\
@@ -105,5 +116,12 @@
      }							\
   } while(0);
 
+#ifdef EFL_HAVE_PTHREAD
+void eina_stringshare_threads_init(void);
+void eina_stringshare_threads_shutdown(void);
+void eina_log_threads_init(void);
+void eina_log_threads_shutdown(void);
+#endif
+
 #endif /* EINA_PRIVATE_H_ */
 
diff --git a/src/include/eina_rectangle.h b/src/include/eina_rectangle.h
index bc47100..562360d 100644
--- a/src/include/eina_rectangle.h
+++ b/src/include/eina_rectangle.h
@@ -19,12 +19,19 @@
 #ifndef EINA_RECTANGLE_H_
 #define EINA_RECTANGLE_H_
 
+#include "eina_types.h"
+
 /**
- * @file
+ * @addtogroup Eina_Tools_Group Tools
+ *
  * @{
  */
 
-#include "eina_types.h"
+/**
+ * @defgroup Eina_Rectangle_Group Rectangle
+ *
+ * @{
+ */
 
 /**
  * To be documented
@@ -52,9 +59,6 @@ static inline Eina_Bool eina_rectangle_intersection(Eina_Rectangle *dst, const E
 static inline void eina_rectangle_rescale_in(const Eina_Rectangle *out, const Eina_Rectangle *in, Eina_Rectangle *res) EINA_ARG_NONNULL(1, 2, 3);
 static inline void eina_rectangle_rescale_out(const Eina_Rectangle *out, const Eina_Rectangle *in, Eina_Rectangle *res) EINA_ARG_NONNULL(1, 2, 3);
 
-EAPI int eina_rectangle_init(void);
-EAPI int eina_rectangle_shutdown(void);
-
 EAPI Eina_Rectangle_Pool *eina_rectangle_pool_new(int w, int h) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
 EAPI Eina_Rectangle_Pool *eina_rectangle_pool_get(Eina_Rectangle *rect) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_rectangle_pool_geometry_get(Eina_Rectangle_Pool *pool, int *w, int *h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
@@ -65,6 +69,20 @@ EAPI int eina_rectangle_pool_count(Eina_Rectangle_Pool *pool) EINA_PURE EINA_ARG
 EAPI Eina_Rectangle *eina_rectangle_pool_request(Eina_Rectangle_Pool *pool, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI void eina_rectangle_pool_release(Eina_Rectangle *rect) EINA_ARG_NONNULL(1);
 
+/**
+ * @def EINA_RECTANGLE_SET
+ * @brief Macro to set the values of a #Eina_Rectangle.
+ *
+ * @param Rectangle The rectangle to set the values.
+ * @param X The X coordinate of the top left corner of the rectangle.
+ * @param Y The Y coordinate of the top left corner of the rectangle.
+ * @param W The width of the rectangle.
+ * @param H The height of the rectangle.
+ *
+ * This macro set the values of @p Rectangle. (@p X, @p Y) is the
+ * coordinates of the top left corner of @p Rectangle, @p W is its
+ * width and @p H is its height.
+ */
 #define EINA_RECTANGLE_SET(Rectangle, X, Y, W, H) \
   (Rectangle)->x = X;				  \
   (Rectangle)->y = Y;				  \
@@ -76,6 +94,12 @@ EAPI void eina_rectangle_free(Eina_Rectangle *rect) EINA_ARG_NONNULL(1);
 
 #include "eina_inline_rectangle.x"
 
-/** @} */
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
 
 #endif /*_EINA_RECTANGLE_H_*/
diff --git a/src/include/eina_safety_checks.h b/src/include/eina_safety_checks.h
index d931c90..1741678 100644
--- a/src/include/eina_safety_checks.h
+++ b/src/include/eina_safety_checks.h
@@ -19,19 +19,72 @@
 #ifndef EINA_SAFETY_CHECKS_H_
 #define EINA_SAFETY_CHECKS_H_
 
+/**
+ * @addtogroup Eina_Tools_Group Tools
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Safety_Checks_Group Safety Checks
+ *
+ * @warning @c eina_safety_checks.h should only be included by source
+ *          files, after all other includes and before the source file
+ *          specific includes. By source file specific includes we
+ *          mean those that define the functions that are being
+ *          checked. The reason for such complexity is the trick to
+ *          avoid compiler optimizations. If compilers are told that
+ *          some given function will never receive @c NULL
+ *          (EINA_ARG_NONNULL(), then compiler will emit a warning if
+ *          it detects so (good!) but will remove any checks for that
+ *          condition as it believes it will never happen, removing
+ *          all safety checks! By including @c eina_safety_checks.h it
+ *          will redefine EINA_ARG_NONNULL() to void and compiler
+ *          warning will not be emitted, but checks will be there. The
+ *          files already processed with the old macro
+ *          EINA_ARG_NONNULL() will still work and emit the warnings.
+ *
+ *
+ * @code
+ *
+ * // all these files will emit warning from EINA_ARG_NONNULL()
+ * #include <Evas.h>  // third party headers
+ * #include <Ecore.h>
+ * #include <eina_error.h> // eina own header
+ *
+ * #include <eina_safety_checks.h>
+ * // all these files below will NOT emit warning from EINA_ARG_NONNULL(),
+ * // but this is required to have the functions defined there to be checked
+ * // for NULL pointers
+ * #include "my_functions1.h"
+ * #include "my_functions2.h"
+ *
+ * @endcode
+ *
+ * @{
+ */
+
 
 #include "eina_config.h"
+#include "eina_error.h"
+
+/**
+ * @var EINA_ERROR_SAFETY_FAILED
+ * Error identifier corresponding to safety check failure.
+ */
+EAPI extern Eina_Error EINA_ERROR_SAFETY_FAILED;
 
 #ifdef EINA_SAFETY_CHECKS
 
-#include "eina_error.h"
+#include "eina_log.h"
 
 #define EINA_SAFETY_ON_NULL_RETURN(exp)					\
   do									\
     {									\
        if (EINA_UNLIKELY((exp) == NULL))				\
 	 {								\
-	    EINA_ERROR_PERR("%s", "safety check failed: " #exp " == NULL\n"); \
+	    eina_error_set(EINA_ERROR_SAFETY_FAILED);			\
+	    EINA_LOG_ERR("%s", "safety check failed: " #exp " == NULL"); \
 	    return;							\
 	 }								\
     }									\
@@ -42,7 +95,8 @@
     {									\
        if (EINA_UNLIKELY((exp) == NULL))				\
 	 {								\
-	    EINA_ERROR_PERR("%s", "safety check failed: " #exp " == NULL\n"); \
+	    eina_error_set(EINA_ERROR_SAFETY_FAILED);			\
+	    EINA_LOG_ERR("%s", "safety check failed: " #exp " == NULL"); \
 	    return (val);						\
 	 }								\
     }									\
@@ -53,7 +107,8 @@
     {									\
        if (EINA_UNLIKELY(exp))						\
 	 {								\
-	    EINA_ERROR_PERR("%s", "safety check failed: " #exp " is true\n"); \
+	    eina_error_set(EINA_ERROR_SAFETY_FAILED);			\
+	    EINA_LOG_ERR("%s", "safety check failed: " #exp " is true"); \
 	    return;							\
 	 }								\
     }									\
@@ -64,7 +119,8 @@
     {									\
        if (EINA_UNLIKELY(exp))						\
 	 {								\
-	    EINA_ERROR_PERR("%s", "safety check failed: " #exp " is true\n"); \
+	    eina_error_set(EINA_ERROR_SAFETY_FAILED);			\
+	    EINA_LOG_ERR("%s", "safety check failed: " #exp " is true"); \
 	    return val;							\
 	 }								\
     }									\
@@ -75,7 +131,8 @@
     {									\
        if (EINA_UNLIKELY(!(exp)))					\
 	 {								\
-	    EINA_ERROR_PERR("%s", "safety check failed: " #exp " is false\n"); \
+	    eina_error_set(EINA_ERROR_SAFETY_FAILED);			\
+	    EINA_LOG_ERR("%s", "safety check failed: " #exp " is false"); \
 	    return;							\
 	 }								\
     }									\
@@ -86,7 +143,8 @@
     {									\
        if (EINA_UNLIKELY(!(exp)))					\
 	 {								\
-	    EINA_ERROR_PERR("%s", "safety check failed: " #exp " is false\n"); \
+	    eina_error_set(EINA_ERROR_SAFETY_FAILED);			\
+	    EINA_LOG_ERR("%s", "safety check failed: " #exp " is false"); \
 	    return val;							\
 	 }								\
     }									\
@@ -121,3 +179,7 @@
 
 #endif /* safety checks macros */
 #endif /* EINA_SAFETY_CHECKS_H_ */
+
+/**
+ * @}
+ */
diff --git a/src/include/eina_stringshare.h b/src/include/eina_stringshare.h
index 40ace4e..82a3b3a 100644
--- a/src/include/eina_stringshare.h
+++ b/src/include/eina_stringshare.h
@@ -65,8 +65,6 @@
  * @{
  */
 
-EAPI int eina_stringshare_init(void);
-EAPI int eina_stringshare_shutdown(void);
 EAPI const char *eina_stringshare_add_length(const char *str, unsigned int slen) EINA_WARN_UNUSED_RESULT;
 EAPI const char *eina_stringshare_add(const char *str) EINA_WARN_UNUSED_RESULT;
 EAPI const char *eina_stringshare_ref(const char *str);
diff --git a/src/include/eina_tiler.h b/src/include/eina_tiler.h
index dffa636..1a04a9c 100644
--- a/src/include/eina_tiler.h
+++ b/src/include/eina_tiler.h
@@ -25,12 +25,27 @@
 
 typedef struct _Eina_Tiler Eina_Tiler;
 
+struct Eina_Tile_Grid_Info
+{
+   unsigned long col, row;
+   Eina_Rectangle rect;
+   Eina_Bool full;
+};
+
+typedef struct Eina_Tile_Grid_Info Eina_Tile_Grid_Info;
+typedef struct _Eina_Tile_Grid_Slicer Eina_Tile_Grid_Slicer;
+
 EAPI Eina_Tiler *eina_tiler_new(int w, int h);
 EAPI void eina_tiler_free(Eina_Tiler *t);
 EAPI void eina_tiler_tile_size_set(Eina_Tiler *t, int w, int h);
-EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, Eina_Rectangle *r);
-EAPI void eina_tiler_rect_del(Eina_Tiler *t, Eina_Rectangle *r);
+EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, const Eina_Rectangle *r);
+EAPI void eina_tiler_rect_del(Eina_Tiler *t, const Eina_Rectangle *r);
 EAPI void eina_tiler_clear(Eina_Tiler *t);
 EAPI Eina_Iterator * eina_tiler_iterator_new(const Eina_Tiler *t);
+EAPI Eina_Iterator * eina_tile_grid_slicer_iterator_new(int x, int y, int w, int h, int tile_w, int tile_h);
+static inline Eina_Bool eina_tile_grid_slicer_next(Eina_Tile_Grid_Slicer *slc, const Eina_Tile_Grid_Info **rect);
+static inline Eina_Bool eina_tile_grid_slicer_setup(Eina_Tile_Grid_Slicer *slc, int x, int y, int w, int h, int tile_w, int tile_h);
+
+#include "eina_inline_tiler.x"
 
 #endif /* EINA_TILER_H_ */
diff --git a/src/include/eina_trash.h b/src/include/eina_trash.h
index 358fb62..f69efb8 100644
--- a/src/include/eina_trash.h
+++ b/src/include/eina_trash.h
@@ -49,7 +49,7 @@ typedef struct _Eina_Trash Eina_Trash;
  */
 struct _Eina_Trash
 {
-   Eina_Trash *next;
+   Eina_Trash *next; /**< next item in trash. */
 };
 
 static inline void eina_trash_init(Eina_Trash **trash) EINA_ARG_NONNULL(1);
@@ -57,7 +57,7 @@ static inline void eina_trash_push(Eina_Trash **trash, void *data) EINA_ARG_NONN
 static inline void *eina_trash_pop(Eina_Trash **trash) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
 
 /**
- * @def EINA_TRASH_FOREACH
+ * @def EINA_TRASH_CLEAN
  * @brief Macro to remove all pointer from the trash.
  *
  * @param trash The trash to clean.
diff --git a/src/include/eina_types.h b/src/include/eina_types.h
index 6592991..9a2b2ab 100644
--- a/src/include/eina_types.h
+++ b/src/include/eina_types.h
@@ -86,6 +86,9 @@
 #ifdef EINA_CONST
 # undef EINA_CONST
 #endif
+#ifdef EINA_NOINSTRUMENT
+# undef EINA_NOINSTRUMENT
+#endif
 #ifdef EINA_UNLIKELY
 # undef EINA_UNLIKELY
 #endif
@@ -126,6 +129,7 @@
 #  define EINA_SCANF(fmt, arg)  __attribute__((format (scanf, fmt, arg)))
 #  define EINA_FORMAT(fmt) __attribute__((format_arg(fmt)))
 #  define EINA_CONST __attribute__((const))
+#  define EINA_NOINSTRUMENT __attribute__((no_instrument_function))
 #  define EINA_UNLIKELY(exp) __builtin_expect((exp), 0)
 #  define EINA_LIKELY(exp) __builtin_expect((exp), 1)
 # else
@@ -133,6 +137,7 @@
 #  define EINA_SCANF(fmt, arg)
 #  define EINA_FORMAT(fmt)
 #  define EINA_CONST
+#  define EINA_NOINSTRUMENT
 #  define EINA_UNLIKELY(exp) exp
 #  define EINA_LIKELY(exp) exp
 # endif
@@ -151,10 +156,34 @@
 # define EINA_SCANF(fmt, arg)
 # define EINA_FORMAT(fmt)
 # define EINA_CONST
+# define EINA_NOINSTRUMENT
+# define EINA_UNLIKELY(exp) exp
+# define EINA_LIKELY(exp) exp
+
+#elif defined(__SUNPRO_C)
+# define EINA_WARN_UNUSED_RESULT
+# define EINA_ARG_NONNULL(...)
+# define EINA_DEPRECATED
+# if __SUNPRO_C >= 0x590
+#  define EINA_MALLOC __attribute__ ((malloc))
+#  define EINA_PURE __attribute__ ((pure))
+# else
+#  define EINA_MALLOC
+#  define EINA_PURE
+# endif
+# define EINA_PRINTF(fmt, arg)
+# define EINA_SCANF(fmt, arg)
+# define EINA_FORMAT(fmt)
+# if __SUNPRO_C >= 0x590
+#  define EINA_CONST __attribute__ ((const))
+# else
+#  define EINA_CONST
+# endif
+# define EINA_NOINSTRUMENT
 # define EINA_UNLIKELY(exp) exp
 # define EINA_LIKELY(exp) exp
 
-#else /* ! __GNUC__ && ! _WIN32 */
+#else /* ! __GNUC__ && ! _WIN32 && ! __SUNPRO_C */
 # define EINA_WARN_UNUSED_RESULT
 # define EINA_ARG_NONNULL(idx, ...)
 # define EINA_DEPRECATED
@@ -164,9 +193,10 @@
 # define EINA_SCANF(fmt, arg)
 # define EINA_FORMAT(fmt)
 # define EINA_CONST
+# define EINA_NOINSTRUMENT
 # define EINA_UNLIKELY(exp) exp
 # define EINA_LIKELY(exp) exp
-#endif /* ! __GNUC__ && ! _WIN32 */
+#endif /* ! __GNUC__ && ! _WIN32 && ! __SUNPRO_C */
 
 
 /* remove this TRUE/FALSE redifinitions */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 9076b20..e9a6057 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -6,18 +6,19 @@ AM_CPPFLAGS = \
 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
- at EINA_CPPFLAGS@
+ at EINA_CPPFLAGS@ \
+ at EFL_EINA_BUILD@
 
-lib_LTLIBRARIES = libeina.la
-
-libeina_la_SOURCES = \
+base_sources = \
 eina_error.c \
+eina_log.c \
 eina_hash.c \
 eina_lalloc.c \
 eina_inlist.c \
 eina_file.c \
 eina_mempool.c \
 eina_list.c \
+eina_matrixsparse.c \
 eina_module.c \
 eina_value.c \
 eina_array.c \
@@ -32,41 +33,100 @@ eina_benchmark.c \
 eina_rectangle.c \
 eina_stringshare.c \
 eina_cpu.c \
-eina_tiler.c
+eina_tiler.c \
+eina_hamster.c \
+eina_safety_checks.c
 
 if EINA_STATIC_BUILD_CHAINED_POOL
-
-libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c
-
+base_sources += $(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c
 endif
 
 if EINA_STATIC_BUILD_EMEMOA_FIXED
-
-libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c
-
+base_sources += $(top_srcdir)/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c
 endif
 
 if EINA_STATIC_BUILD_EMEMOA_UNKNOWN
-
-libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
-
+base_sources += $(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
 endif
 
 if EINA_STATIC_BUILD_FIXED_BITMAP
-
-libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
-
+base_sources += $(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
 endif
 
 if EINA_STATIC_BUILD_PASS_THROUGH
+base_sources += $(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
+endif
 
-libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
+lib_LTLIBRARIES = libeina.la
 
+if EINA_AMALGAMATION
+nodist_libeina_la_SOURCES = eina_amalgamation.c
+
+eina_amalgamation.c: $(base_sources) Makefile
+	-rm -f eina_amalgamation.c
+
+	@echo "#ifdef HAVE_CONFIG_H" >> eina_amalgamation.c
+	@echo "#include \"config.h\"" >> eina_amalgamation.c
+	@echo "#endif" >> eina_amalgamation.c
+
+	@echo "#ifndef _WIN32" >> eina_amalgamation.c
+	@echo "#define _GNU_SOURCE" >> eina_amalgamation.c
+	@echo "#endif" >> eina_amalgamation.c
+
+	@echo "#ifdef HAVE_ALLOCA_H" >> eina_amalgamation.c
+	@echo "# include <alloca.h>" >> eina_amalgamation.c
+	@echo "#elif defined __GNUC__" >> eina_amalgamation.c
+	@echo "# define alloca __builtin_alloca" >> eina_amalgamation.c
+	@echo "#elif defined _AIX" >> eina_amalgamation.c
+	@echo "# define alloca __alloca" >> eina_amalgamation.c
+	@echo "#elif defined _MSC_VER" >> eina_amalgamation.c
+	@echo "# include <malloc.h>" >> eina_amalgamation.c
+	@echo "# define alloca _alloca" >> eina_amalgamation.c
+	@echo "#else" >> eina_amalgamation.c
+	@echo "# include <stddef.h>" >> eina_amalgamation.c
+	@echo "# ifdef __cplusplus" >> eina_amalgamation.c
+	@echo "#extern \"C\"" >> eina_amalgamation.c
+	@echo "# endif" >> eina_amalgamation.c
+	@echo "#void *alloca (size_t);" >> eina_amalgamation.c
+	@echo "#endif" >> eina_amalgamation.c
+
+	@echo "#include <stdio.h>" >> eina_amalgamation.c
+	@echo "#include <stdlib.h>" >> eina_amalgamation.c
+	@echo "#include <string.h>" >> eina_amalgamation.c
+	@echo "#include <dlfcn.h>" >> eina_amalgamation.c
+	@echo "#include <sys/types.h>" >> eina_amalgamation.c
+	@echo "#include <dirent.h>" >> eina_amalgamation.c
+	@echo "#include <assert.h>" >> eina_amalgamation.c
+	@echo "#include <errno.h>" >> eina_amalgamation.c
+	@echo "#include <fnmatch.h>" >> eina_amalgamation.c
+
+	@echo "#ifdef HAVE_EVIL" >> eina_amalgamation.c
+	@echo "# include <Evil.h>" >> eina_amalgamation.c
+	@echo "#endif" >> eina_amalgamation.c
+
+	@echo "#include \"eina_config.h\"" >> eina_amalgamation.c
+	@echo "#include \"eina_private.h\"" >> eina_amalgamation.c
+	@echo "#include \"eina_safety_checks.h\"" >> eina_amalgamation.c
+	@echo "#include \"Eina.h\"" >> eina_amalgamation.c
+
+	@for f in $(base_sources); do \
+	   if [ `expr substr $$f 1 1` != '/' ]; then \
+		  file="$(srcdir)/$$f" ; \
+	   else \
+		  file="$$f" ; \
+	   fi ; \
+	   echo "/* file: $$file */" >> eina_amalgamation.c; \
+	   grep -v -e '^# *include \+.\(config\|eina_[a-z_]\+\|Evil\|stdio\|stdlib\|string\|dlfcn\|dirent\|assert\|errno\|fnmatch\)[.]h.*' $$file >> eina_amalgamation.c; \
+	done
+	@echo "eina_amalgamation.c generated"
+
+else
+libeina_la_SOURCES = $(base_sources)
 endif
 
 libeina_la_LIBADD = @EINA_LIBS@ @dlopen_libs@
-libeina_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
-libeina_la_CFLAGS = @EINA_CFLAGS@
+libeina_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ @EFL_PTHREAD_LIBS@
+libeina_la_CFLAGS = @EINA_CFLAGS@ @EFL_PTHREAD_CFLAGS@
 
 clean-local:
-	rm -rf *.gcno
+	rm -rf *.gcno eina_amalgamation.c
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index f7bcedf..260c266 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,
@@ -64,12 +64,13 @@ am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libeina_la_DEPENDENCIES =
-am__libeina_la_SOURCES_DIST = eina_error.c eina_hash.c eina_lalloc.c \
-	eina_inlist.c eina_file.c eina_mempool.c eina_list.c \
-	eina_module.c eina_value.c eina_array.c eina_magic.c \
-	eina_main.c eina_counter.c eina_iterator.c eina_accessor.c \
-	eina_convert.c eina_rbtree.c eina_benchmark.c eina_rectangle.c \
-	eina_stringshare.c eina_cpu.c eina_tiler.c \
+am__libeina_la_SOURCES_DIST = eina_error.c eina_log.c eina_hash.c \
+	eina_lalloc.c eina_inlist.c eina_file.c eina_mempool.c \
+	eina_list.c eina_matrixsparse.c eina_module.c eina_value.c \
+	eina_array.c eina_magic.c eina_main.c eina_counter.c \
+	eina_iterator.c eina_accessor.c eina_convert.c eina_rbtree.c \
+	eina_benchmark.c eina_rectangle.c eina_stringshare.c \
+	eina_cpu.c eina_tiler.c eina_hamster.c eina_safety_checks.c \
 	$(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c \
 	$(top_srcdir)/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c \
 	$(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c \
@@ -80,20 +81,26 @@ am__libeina_la_SOURCES_DIST = eina_error.c eina_hash.c eina_lalloc.c \
 @EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE at am__objects_3 = libeina_la-eina_ememoa_unknown.lo
 @EINA_STATIC_BUILD_FIXED_BITMAP_TRUE at am__objects_4 = libeina_la-eina_fixed_bitmap.lo
 @EINA_STATIC_BUILD_PASS_THROUGH_TRUE at am__objects_5 = libeina_la-eina_pass_through.lo
-am_libeina_la_OBJECTS = libeina_la-eina_error.lo \
+am__objects_6 = libeina_la-eina_error.lo libeina_la-eina_log.lo \
 	libeina_la-eina_hash.lo libeina_la-eina_lalloc.lo \
 	libeina_la-eina_inlist.lo libeina_la-eina_file.lo \
 	libeina_la-eina_mempool.lo libeina_la-eina_list.lo \
-	libeina_la-eina_module.lo libeina_la-eina_value.lo \
-	libeina_la-eina_array.lo libeina_la-eina_magic.lo \
-	libeina_la-eina_main.lo libeina_la-eina_counter.lo \
-	libeina_la-eina_iterator.lo libeina_la-eina_accessor.lo \
-	libeina_la-eina_convert.lo libeina_la-eina_rbtree.lo \
-	libeina_la-eina_benchmark.lo libeina_la-eina_rectangle.lo \
-	libeina_la-eina_stringshare.lo libeina_la-eina_cpu.lo \
-	libeina_la-eina_tiler.lo $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3) $(am__objects_4) $(am__objects_5)
-libeina_la_OBJECTS = $(am_libeina_la_OBJECTS)
+	libeina_la-eina_matrixsparse.lo libeina_la-eina_module.lo \
+	libeina_la-eina_value.lo libeina_la-eina_array.lo \
+	libeina_la-eina_magic.lo libeina_la-eina_main.lo \
+	libeina_la-eina_counter.lo libeina_la-eina_iterator.lo \
+	libeina_la-eina_accessor.lo libeina_la-eina_convert.lo \
+	libeina_la-eina_rbtree.lo libeina_la-eina_benchmark.lo \
+	libeina_la-eina_rectangle.lo libeina_la-eina_stringshare.lo \
+	libeina_la-eina_cpu.lo libeina_la-eina_tiler.lo \
+	libeina_la-eina_hamster.lo libeina_la-eina_safety_checks.lo \
+	$(am__objects_1) $(am__objects_2) $(am__objects_3) \
+	$(am__objects_4) $(am__objects_5)
+ at EINA_AMALGAMATION_FALSE@am_libeina_la_OBJECTS = $(am__objects_6)
+ at EINA_AMALGAMATION_TRUE@nodist_libeina_la_OBJECTS =  \
+ at EINA_AMALGAMATION_TRUE@	libeina_la-eina_amalgamation.lo
+libeina_la_OBJECTS = $(am_libeina_la_OBJECTS) \
+	$(nodist_libeina_la_OBJECTS)
 libeina_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libeina_la_CFLAGS) \
 	$(CFLAGS) $(libeina_la_LDFLAGS) $(LDFLAGS) -o $@
@@ -109,7 +116,7 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-SOURCES = $(libeina_la_SOURCES)
+SOURCES = $(libeina_la_SOURCES) $(nodist_libeina_la_SOURCES)
 DIST_SOURCES = $(am__libeina_la_SOURCES_DIST)
 ETAGS = etags
 CTAGS = ctags
@@ -143,6 +150,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -227,6 +235,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -247,15 +256,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -266,20 +278,24 @@ AM_CPPFLAGS = \
 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
- at EINA_CPPFLAGS@
+ at EINA_CPPFLAGS@ \
+ at EFL_EINA_BUILD@
 
-lib_LTLIBRARIES = libeina.la
-libeina_la_SOURCES = eina_error.c eina_hash.c eina_lalloc.c \
+base_sources = eina_error.c eina_log.c eina_hash.c eina_lalloc.c \
 	eina_inlist.c eina_file.c eina_mempool.c eina_list.c \
-	eina_module.c eina_value.c eina_array.c eina_magic.c \
-	eina_main.c eina_counter.c eina_iterator.c eina_accessor.c \
-	eina_convert.c eina_rbtree.c eina_benchmark.c eina_rectangle.c \
-	eina_stringshare.c eina_cpu.c eina_tiler.c $(am__append_1) \
+	eina_matrixsparse.c eina_module.c eina_value.c eina_array.c \
+	eina_magic.c eina_main.c eina_counter.c eina_iterator.c \
+	eina_accessor.c eina_convert.c eina_rbtree.c eina_benchmark.c \
+	eina_rectangle.c eina_stringshare.c eina_cpu.c eina_tiler.c \
+	eina_hamster.c eina_safety_checks.c $(am__append_1) \
 	$(am__append_2) $(am__append_3) $(am__append_4) \
 	$(am__append_5)
+lib_LTLIBRARIES = libeina.la
+ at EINA_AMALGAMATION_TRUE@nodist_libeina_la_SOURCES = eina_amalgamation.c
+ at EINA_AMALGAMATION_FALSE@libeina_la_SOURCES = $(base_sources)
 libeina_la_LIBADD = @EINA_LIBS@ @dlopen_libs@
-libeina_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
-libeina_la_CFLAGS = @EINA_CFLAGS@
+libeina_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ @EFL_PTHREAD_LIBS@
+libeina_la_CFLAGS = @EINA_CFLAGS@ @EFL_PTHREAD_CFLAGS@
 all: all-am
 
 .SUFFIXES:
@@ -288,8 +304,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; \
@@ -350,6 +366,7 @@ distclean-compile:
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_accessor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_amalgamation.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_array.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_benchmark.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_chained_mempool.Plo at am__quote@
@@ -361,18 +378,22 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_error.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_file.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_fixed_bitmap.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_hamster.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_hash.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_inlist.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_iterator.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_lalloc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_list.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_log.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_magic.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_main.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_matrixsparse.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_mempool.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_module.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_pass_through.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_rbtree.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_rectangle.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_safety_checks.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_stringshare.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_tiler.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_value.Plo at am__quote@
@@ -405,6 +426,13 @@ libeina_la-eina_error.lo: eina_error.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_error.lo `test -f 'eina_error.c' || echo '$(srcdir)/'`eina_error.c
 
+libeina_la-eina_log.lo: eina_log.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_log.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_log.Tpo -c -o libeina_la-eina_log.lo `test -f 'eina_log.c' || echo '$(srcdir)/'`eina_log.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_log.Tpo $(DEPDIR)/libeina_la-eina_log.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_log.c' object='libeina_la-eina_log.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_log.lo `test -f 'eina_log.c' || echo '$(srcdir)/'`eina_log.c
+
 libeina_la-eina_hash.lo: eina_hash.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_hash.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_hash.Tpo -c -o libeina_la-eina_hash.lo `test -f 'eina_hash.c' || echo '$(srcdir)/'`eina_hash.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_hash.Tpo $(DEPDIR)/libeina_la-eina_hash.Plo
@@ -447,6 +475,13 @@ libeina_la-eina_list.lo: eina_list.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_list.lo `test -f 'eina_list.c' || echo '$(srcdir)/'`eina_list.c
 
+libeina_la-eina_matrixsparse.lo: eina_matrixsparse.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_matrixsparse.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_matrixsparse.Tpo -c -o libeina_la-eina_matrixsparse.lo `test -f 'eina_matrixsparse.c' || echo '$(srcdir)/'`eina_matrixsparse.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_matrixsparse.Tpo $(DEPDIR)/libeina_la-eina_matrixsparse.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_matrixsparse.c' object='libeina_la-eina_matrixsparse.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_matrixsparse.lo `test -f 'eina_matrixsparse.c' || echo '$(srcdir)/'`eina_matrixsparse.c
+
 libeina_la-eina_module.lo: eina_module.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_module.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_module.Tpo -c -o libeina_la-eina_module.lo `test -f 'eina_module.c' || echo '$(srcdir)/'`eina_module.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_module.Tpo $(DEPDIR)/libeina_la-eina_module.Plo
@@ -552,6 +587,20 @@ libeina_la-eina_tiler.lo: eina_tiler.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_tiler.lo `test -f 'eina_tiler.c' || echo '$(srcdir)/'`eina_tiler.c
 
+libeina_la-eina_hamster.lo: eina_hamster.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_hamster.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_hamster.Tpo -c -o libeina_la-eina_hamster.lo `test -f 'eina_hamster.c' || echo '$(srcdir)/'`eina_hamster.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_hamster.Tpo $(DEPDIR)/libeina_la-eina_hamster.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_hamster.c' object='libeina_la-eina_hamster.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_hamster.lo `test -f 'eina_hamster.c' || echo '$(srcdir)/'`eina_hamster.c
+
+libeina_la-eina_safety_checks.lo: eina_safety_checks.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_safety_checks.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_safety_checks.Tpo -c -o libeina_la-eina_safety_checks.lo `test -f 'eina_safety_checks.c' || echo '$(srcdir)/'`eina_safety_checks.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_safety_checks.Tpo $(DEPDIR)/libeina_la-eina_safety_checks.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_safety_checks.c' object='libeina_la-eina_safety_checks.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_safety_checks.lo `test -f 'eina_safety_checks.c' || echo '$(srcdir)/'`eina_safety_checks.c
+
 libeina_la-eina_chained_mempool.lo: $(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_chained_mempool.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_chained_mempool.Tpo -c -o libeina_la-eina_chained_mempool.lo `test -f '$(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_chained_mempool.Tpo $(DEPDIR)/libeina_la-eina_chained_mempool.Plo
@@ -587,6 +636,13 @@ libeina_la-eina_pass_through.lo: $(top_srcdir)/src/modules/mp/pass_through/eina_
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_pass_through.lo `test -f '$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
 
+libeina_la-eina_amalgamation.lo: eina_amalgamation.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_amalgamation.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_amalgamation.Tpo -c -o libeina_la-eina_amalgamation.lo `test -f 'eina_amalgamation.c' || echo '$(srcdir)/'`eina_amalgamation.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_amalgamation.Tpo $(DEPDIR)/libeina_la-eina_amalgamation.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_amalgamation.c' object='libeina_la-eina_amalgamation.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_amalgamation.lo `test -f 'eina_amalgamation.c' || echo '$(srcdir)/'`eina_amalgamation.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -598,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
@@ -774,8 +830,66 @@ uninstall-am: uninstall-libLTLIBRARIES
 	tags uninstall uninstall-am uninstall-libLTLIBRARIES
 
 
+ at EINA_AMALGAMATION_TRUE@eina_amalgamation.c: $(base_sources) Makefile
+ at EINA_AMALGAMATION_TRUE@	-rm -f eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@echo "#ifdef HAVE_CONFIG_H" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include \"config.h\"" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#endif" >> eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@echo "#ifndef _WIN32" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#define _GNU_SOURCE" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#endif" >> eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@echo "#ifdef HAVE_ALLOCA_H" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# include <alloca.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#elif defined __GNUC__" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# define alloca __builtin_alloca" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#elif defined _AIX" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# define alloca __alloca" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#elif defined _MSC_VER" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# include <malloc.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# define alloca _alloca" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#else" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# include <stddef.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# ifdef __cplusplus" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#extern \"C\"" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# endif" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#void *alloca (size_t);" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#endif" >> eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <stdio.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <stdlib.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <string.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <dlfcn.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <sys/types.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <dirent.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <assert.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <errno.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include <fnmatch.h>" >> eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@echo "#ifdef HAVE_EVIL" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "# include <Evil.h>" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#endif" >> eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@echo "#include \"eina_config.h\"" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include \"eina_private.h\"" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include \"eina_safety_checks.h\"" >> eina_amalgamation.c
+ at EINA_AMALGAMATION_TRUE@	@echo "#include \"Eina.h\"" >> eina_amalgamation.c
+
+ at EINA_AMALGAMATION_TRUE@	@for f in $(base_sources); do \
+ at EINA_AMALGAMATION_TRUE@	   if [ `expr substr $$f 1 1` != '/' ]; then \
+ at EINA_AMALGAMATION_TRUE@		  file="$(srcdir)/$$f" ; \
+ at EINA_AMALGAMATION_TRUE@	   else \
+ at EINA_AMALGAMATION_TRUE@		  file="$$f" ; \
+ at EINA_AMALGAMATION_TRUE@	   fi ; \
+ at EINA_AMALGAMATION_TRUE@	   echo "/* file: $$file */" >> eina_amalgamation.c; \
+ at EINA_AMALGAMATION_TRUE@	   grep -v -e '^# *include \+.\(config\|eina_[a-z_]\+\|Evil\|stdio\|stdlib\|string\|dlfcn\|dirent\|assert\|errno\|fnmatch\)[.]h.*' $$file >> eina_amalgamation.c; \
+ at EINA_AMALGAMATION_TRUE@	done
+ at EINA_AMALGAMATION_TRUE@	@echo "eina_amalgamation.c generated"
+
 clean-local:
-	rm -rf *.gcno
+	rm -rf *.gcno eina_amalgamation.c
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/lib/eina_accessor.c b/src/lib/eina_accessor.c
index f89768a..0e1b71e 100644
--- a/src/lib/eina_accessor.c
+++ b/src/lib/eina_accessor.c
@@ -25,10 +25,12 @@
 
 #include <stdlib.h>
 
+#include "eina_config.h"
 #include "eina_private.h"
 
-#include "eina_accessor.h"
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_accessor.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -38,6 +40,8 @@
  * @cond LOCAL
  */
 
+static const char EINA_MAGIC_ACCESSOR_STR[] = "Eina Accessor";
+
 #define EINA_MAGIC_CHECK_ACCESSOR(d)				\
   do {								\
     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ACCESSOR))		\
@@ -77,6 +81,40 @@
  */
 
 /**
+ * @internal
+ * @brief Initialize the accessor module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the accessor module of Eina. It is called by
+ * eina_init().
+ *
+ * @see eina_init()
+ */
+Eina_Bool
+eina_accessor_init(void)
+{
+   return eina_magic_string_set(EINA_MAGIC_ACCESSOR, EINA_MAGIC_ACCESSOR_STR);
+}
+
+/**
+ * @internal
+ * @brief Shut down the accessor module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the accessor module set up by
+ * eina_accessor_init(). It is called by eina_shutdown().
+ *
+ * @see eina_shutdown()
+ */
+Eina_Bool
+eina_accessor_shutdown(void)
+{
+   return EINA_TRUE;
+}
+
+/**
  * @brief Free an accessor.
  *
  * @param accessor The accessor to free.
diff --git a/src/lib/eina_array.c b/src/lib/eina_array.c
index c44bdd4..040ffbd 100644
--- a/src/lib/eina_array.c
+++ b/src/lib/eina_array.c
@@ -31,39 +31,7 @@
  *
  * @section tutorial_error_basic_usage Basic Usage
  *
- * The first thing to do when using arrays is to initialize the array
- * module with eina_array_init() and, when no more arrays are used, the
- * module is shut down with eina_array_shutdown(). So a basic program
- * would look like that:
- *
- * @code
- * #include <stdlib.h>
- * #include <stdio.h>
- *
- * #include <eina_array.h>
- *
- * int main(void)
- * {
- *    if (!eina_array_init())
- *    {
- *        printf ("Error during the initialization of eina_error module\n");
- *        return EXIT_FAILURE;
- *    }
- *
- *    eina_array_shutdown();
- *
- *    return EXIT_SUCCESS;
- * }
- * @endcode
- *
- * All program using any module of eina must be compiled with the
- * following command:
- *
- * @code
- * gcc -o my_bin my_source.c `pkg-config --cflags --libs eina-0`
- * @endcode
- *
- * Then, an array must created with eina_array_new(). That function
+ * An array must created with eina_array_new(). That function
  * takes an integer as parameter, which is the count of pointers to
  * add when increasing the array size. Once the array is not used
  * anymore, it must be destroyed with eina_array_free().
@@ -97,15 +65,15 @@
  *     Eina_Array_Iterator iterator;
  *     unsigned int        i;
  *
- *     if (!eina_array_init())
+ *     if (!eina_init())
  *     {
- *         printf ("Error during the initialization of eina_error module\n");
+ *         printf ("Error during the initialization of eina\n");
  *         return EXIT_FAILURE;
  *     }
  *
  *     array = eina_array_new(16);
  *     if (!array)
- *         goto shutdown_array;
+ *         goto shutdown;
  *
  *     for (i = 0; i < 4; i++)
  *     {
@@ -127,12 +95,12 @@
  *     }
  *
  *     eina_array_free(array);
- *     eina_array_shutdown();
+ *     eina_shutdown();
  *
  *     return EXIT_SUCCESS;
  *
- *   shutdown_array:
- *     eina_array_shutdown();
+ *   shutdown:
+ *     eina_shutdown();
  *
  *     return EXIT_FAILURE;
  * }
@@ -150,12 +118,13 @@
 #include <string.h>
 #include <stdio.h>
 
-#include "eina_types.h"
-#include "eina_error.h"
-#include "eina_array.h"
-#include "eina_inline_array.x"
+#include "eina_config.h"
 #include "eina_private.h"
+#include "eina_error.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_array.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -165,29 +134,33 @@
  * @cond LOCAL
  */
 
-#define EINA_MAGIC_CHECK_ARRAY(d)				\
-   do {								\
-     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ARRAY))		\
-       EINA_MAGIC_FAIL(d, EINA_MAGIC_ARRAY);			\
-   } while (0);
+static const char EINA_MAGIC_ARRAY_STR[] = "Eina Array";
+static const char EINA_MAGIC_ARRAY_ITERATOR_STR[] = "Eina Array Iterator";
+static const char EINA_MAGIC_ARRAY_ACCESSOR_STR[] = "Eina Array Accessor";
 
-#define EINA_MAGIC_CHECK_ARRAY_ITERATOR(d, ...)		\
-   do {								\
+#define EINA_MAGIC_CHECK_ARRAY(d)			\
+  do {							\
+     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ARRAY))	\
+       EINA_MAGIC_FAIL(d, EINA_MAGIC_ARRAY);		\
+  } while (0);
+
+#define EINA_MAGIC_CHECK_ARRAY_ITERATOR(d, ...)			\
+  do {								\
      if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ARRAY_ITERATOR))	\
        {							\
           EINA_MAGIC_FAIL(d, EINA_MAGIC_ARRAY_ITERATOR);	\
-          return __VA_ARGS__;						\
+          return __VA_ARGS__;					\
        }							\
-   } while (0);
+  } while (0);
 
-#define EINA_MAGIC_CHECK_ARRAY_ACCESSOR(d, ...)		\
-   do {								\
+#define EINA_MAGIC_CHECK_ARRAY_ACCESSOR(d, ...)			\
+  do {								\
      if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ARRAY_ACCESSOR))	\
        {							\
           EINA_MAGIC_FAIL(d, EINA_MAGIC_ACCESSOR);		\
-          return __VA_ARGS__;						\
+          return __VA_ARGS__;					\
        }							\
-   } while (0);
+  } while (0);
 
 
 typedef struct _Eina_Iterator_Array Eina_Iterator_Array;
@@ -209,7 +182,17 @@ struct _Eina_Accessor_Array
    EINA_MAGIC
 };
 
-static int _eina_array_init_count = 0;
+static int _eina_array_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_array_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_array_log_dom, __VA_ARGS__)
 
 static void eina_array_iterator_free(Eina_Iterator_Array *it) EINA_ARG_NONNULL(1);
 static Eina_Array *eina_array_iterator_get_container(Eina_Iterator_Array *it) EINA_ARG_NONNULL(1);
@@ -284,7 +267,7 @@ eina_array_grow(Eina_Array *array)
    total = array->total + array->step;
    eina_error_set(0);
    tmp = realloc(array->data, sizeof (void*) * total);
-   if (UNLIKELY(!tmp)) {
+   if (EINA_UNLIKELY(!tmp)) {
       eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
       return 0;
    }
@@ -319,9 +302,9 @@ eina_array_grow(Eina_Array *array)
  * data at any place, the Eina @ref Eina_List_Group is the correct container
  * to use.
  *
- * To use the array data type, eina_array_init() must be called before
- * any other array functions. When no more array function is used,
- * eina_array_shutdown() must be called to free all the resources.
+ * To use the array data type, eina_init() must be called before any
+ * other array functions. When eina is no more array function is used,
+ * eina_shutdown() must be called to free all the resources.
  *
  * An array must be created with eina_array_new(). It allocated all
  * the necessary data for an array. When not needed anymore, an array
@@ -347,84 +330,51 @@ eina_array_grow(Eina_Array *array)
  */
 
 /**
+ * @internal
  * @brief Initialize the array module.
  *
- * @return 1 or greater on success, 0 on error.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
  * This function sets up the error and magic modules or Eina. It is
- * also called by eina_init(). It returns 0 on failure, otherwise it
- * returns the number of times it has already been called. See
- * eina_error_init() and eina_magic_string_init() for the
- * documentation of the initialisation of the dependency modules.
+ * called by eina_init().
  *
- * When no more Eina arrays are used, call eina_array_shutdown() to shut
- * down the array module.
- *
- * @see eina_error_init()
- * @see eina_magic_string_init()
  * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_array_init(void)
 {
-   if (!_eina_array_init_count)
+   _eina_array_log_dom = eina_log_domain_register("eina_array", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_array_log_dom < 0)
      {
-        if (!eina_error_init())
-          {
-             fprintf(stderr, "Could not initialize eina error module.\n");
-             return 0;
-          }
-
-        if (!eina_magic_string_init())
-          {
-             EINA_ERROR_PERR("ERROR: Could not initialize eina magic string module.\n");
-             eina_error_shutdown();
-             return 0;
-          }
-
-        eina_magic_string_set(EINA_MAGIC_ITERATOR,
-                              "Eina Iterator");
-        eina_magic_string_set(EINA_MAGIC_ACCESSOR,
-                              "Eina Accessor");
-        eina_magic_string_set(EINA_MAGIC_ARRAY,
-                              "Eina Array");
-        eina_magic_string_set(EINA_MAGIC_ARRAY_ITERATOR,
-                              "Eina Array Iterator");
-        eina_magic_string_set(EINA_MAGIC_ARRAY_ACCESSOR,
-                              "Eina Array Accessor");
+	EINA_LOG_ERR("Could not register log domain: eina_array");
+	return EINA_FALSE;
      }
 
-   return ++_eina_array_init_count;
+#define EMS(n) eina_magic_string_static_set(n, n##_STR)
+   EMS(EINA_MAGIC_ARRAY);
+   EMS(EINA_MAGIC_ARRAY_ITERATOR);
+   EMS(EINA_MAGIC_ARRAY_ACCESSOR);
+#undef EMS
+   return EINA_TRUE;
 }
 
 /**
+ * @internal
  * @brief Shut down the array module.
  *
- * @return 0 when the list module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function shuts down the array module. It returns 0 when it has
- * been called the same number of times than eina_array_init(). In
- * that case it shut down the magic and error modules. This function
- * is also called by eina_shutdown(). See eina_error_shutdown() and
- * eina_magic_string_shutdown() for the documentation of the
- * shutting down of the dependency modules.
+ * This function shuts down the array module set up by
+ * eina_array_init(). It is called by eina_shutdown().
  *
- * @see eina_error_shutdown()
- * @see eina_magic_string_shutdown()
  * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_array_shutdown(void)
 {
-   --_eina_array_init_count;
-   if (!_eina_array_init_count)
-     {
-       eina_magic_string_shutdown();
-       eina_error_shutdown();
-     }
-
-   return _eina_array_init_count;
+   eina_log_domain_unregister(_eina_array_log_dom);
+   _eina_array_log_dom = -1;
+   return EINA_TRUE;
 }
 
 /**
@@ -460,6 +410,8 @@ eina_array_new(unsigned int step)
    array->count = 0;
    array->step = step;
 
+   DBG("array=%p", array);
+
    return array;
 }
 
@@ -481,6 +433,7 @@ eina_array_free(Eina_Array *array)
 
    EINA_MAGIC_CHECK_ARRAY(array);
    EINA_SAFETY_ON_NULL_RETURN(array);
+   DBG("array=%p", array);
    MAGIC_FREE(array);
 }
 
@@ -503,6 +456,7 @@ eina_array_step_set(Eina_Array *array, unsigned int step)
   array->count = 0;
   array->step = step;
   EINA_MAGIC_SET(array, EINA_MAGIC_ARRAY);
+  DBG("array=%p, step=%u", array, step);
 }
 
 /**
@@ -520,6 +474,7 @@ eina_array_clean(Eina_Array *array)
    EINA_MAGIC_CHECK_ARRAY(array);
    EINA_SAFETY_ON_NULL_RETURN(array);
    array->count = 0;
+   DBG("array=%p", array);
 }
 
 /**
@@ -537,6 +492,7 @@ eina_array_flush(Eina_Array *array)
 {
    EINA_MAGIC_CHECK_ARRAY(array);
    EINA_SAFETY_ON_NULL_RETURN(array);
+   DBG("array=%p", array);
    array->count = 0;
    array->total = 0;
 
@@ -566,7 +522,11 @@ EAPI Eina_Bool
 eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata)
 {
    void **tmp;
-   void *data;
+   /* WARNING:
+      The algorithm does exit before using unitialized data. So compiler is
+      giving you a false positiv here too.
+    */
+   void *data = NULL;
    unsigned int total = 0;
    unsigned int limit;
    unsigned int i;
@@ -575,6 +535,8 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata),
    EINA_SAFETY_ON_NULL_RETURN_VAL(array, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(keep, EINA_FALSE);
 
+   DBG("array=%p, keep=%p, gdata=%p", array, keep, gdata);
+
    if (array->total == 0) return EINA_TRUE;
 
    for (i = 0; i < array->count; ++i)
@@ -665,8 +627,6 @@ eina_array_iterator_new(const Eina_Array *array)
    EINA_MAGIC_CHECK_ARRAY(array);
    EINA_SAFETY_ON_NULL_RETURN_VAL(array, NULL);
 
-   if (eina_array_count_get(array) <= 0) return NULL;
-
    eina_error_set(0);
    it = calloc(1, sizeof (Eina_Iterator_Array));
    if (!it) {
@@ -683,6 +643,8 @@ eina_array_iterator_new(const Eina_Array *array)
    it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(eina_array_iterator_get_container);
    it->iterator.free = FUNC_ITERATOR_FREE(eina_array_iterator_free);
 
+   DBG("array=%p, iterator=%p", array, it);
+
    return &it->iterator;
 }
 
@@ -722,6 +684,8 @@ eina_array_accessor_new(const Eina_Array *array)
    it->accessor.get_container = FUNC_ACCESSOR_GET_CONTAINER(eina_array_accessor_get_container);
    it->accessor.free = FUNC_ACCESSOR_FREE(eina_array_accessor_free);
 
+   DBG("array=%p, accessor=%p", array, it);
+
    return &it->accessor;
 }
 
diff --git a/src/lib/eina_benchmark.c b/src/lib/eina_benchmark.c
index f08066c..c0c4bbd 100644
--- a/src/lib/eina_benchmark.c
+++ b/src/lib/eina_benchmark.c
@@ -28,10 +28,6 @@
 # include "config.h"
 #endif
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
 #ifdef HAVE_ALLOCA_H
 # include <alloca.h>
 #elif defined __GNUC__
@@ -49,6 +45,17 @@ extern "C"
 void *alloca (size_t);
 #endif
 
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_EVIL
+# include <Evil.h>
+#endif
+
+#include "eina_config.h"
+#include "eina_private.h"
+#include "eina_log.h"
 #include "eina_benchmark.h"
 #include "eina_inlist.h"
 #include "eina_counter.h"
@@ -84,7 +91,17 @@ struct _Eina_Benchmark
    Eina_Inlist *runs;
 };
 
-static int _eina_benchmark_count = 0;
+static int _eina_benchmark_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_benchmark_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_benchmark_log_dom, __VA_ARGS__)
 
 /**
  * @endcond
@@ -106,9 +123,9 @@ static int _eina_benchmark_count = 0;
  * in Eina to compare the time used by eina, glib, evas and ecore data
  * types.
  *
- * The benchmark module must be initialized with eina_benchmark_init()
- * and shut down with eina_benchmark_shutdown(). A benchmark is
- * created with eina_benchmark_new() and freed with
+ * To use the benchmark module, Eina must be initialized with
+ * eina_init() and later shut down with eina_shutdown(). A benchmark
+ * is created with eina_benchmark_new() and freed with
  * eina_benchmark_free().
  *
  * eina_benchmark_register() adds a test to a benchmark. That test can
@@ -126,84 +143,46 @@ static int _eina_benchmark_count = 0;
  */
 
 /**
+ * @internal
  * @brief Initialize the benchmark module.
  *
- * @return 1 or greater on success, 0 on error.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function sets up the error, array and counter modules or
- * Eina. It is also called by eina_init(). It returns 0 on failure,
- * otherwise it returns the number of times it has already been
- * called. See eina_error_init(), eina_array_init() and
- * eina_counter_init() for the documentation of the initialisation of
- * the dependency modules.
+ * This function sets up the benchmark module of Eina. It is called by
+ * eina_init().
  *
- * When no more Eina benchmarks are used, call
- * eina_benchmark_shutdown() to shut down the benchmark module.
- *
- * @see eina_error_init()
- * @see eina_array_init()
- * @see eina_counter_init()
  * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_benchmark_init(void)
 {
-   _eina_benchmark_count++;
-
-   if (_eina_benchmark_count > 1) return _eina_benchmark_count;
-
-   if (!eina_error_init())
-     {
-        fprintf(stderr, "Could not initialize eina error module.\n");
-        return 0;
-     }
-   if (!eina_array_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina array module.\n");
-        goto array_init_error;
-     }
-   if (!eina_counter_init())
+   _eina_benchmark_log_dom = eina_log_domain_register("eina_benchmark", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_benchmark_log_dom < 0)
      {
-        EINA_ERROR_PERR("Could not initialize eina counter module.\n");
-        goto counter_init_error;
+	EINA_LOG_ERR("Could not register log domain: eina_benchmark");
+	return EINA_FALSE;
      }
 
-   return _eina_benchmark_count;
-
- counter_init_error:
-   eina_array_shutdown();
- array_init_error:
-   eina_error_shutdown();
-   return 0;
+   return EINA_TRUE;
 }
 
 /**
+ * @internal
  * @brief Shut down the benchmark module.
  *
- * @return 0 when the error module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function shut down the error, array and counter modules set up
- * by eina_array_init(). It is also called by eina_shutdown(). It returns
- * 0 when it is called the same number of times than eina_benchmark_init().
+ * This function shuts down the benchmark module set up by
+ * eina_benchmark_init(). It is called by eina_shutdown().
  *
- * @see eina_error_shutdown()
- * @see eina_array_shutdown()
- * @see eina_counter_shutdown()
  * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_benchmark_shutdown(void)
 {
-   _eina_benchmark_count--;
-
-   if (_eina_benchmark_count != 0) return _eina_benchmark_count;
-
-   eina_counter_shutdown();
-   eina_array_shutdown();
-   eina_error_shutdown();
-
-   return 0;
+   eina_log_domain_unregister(_eina_benchmark_log_dom);
+   _eina_benchmark_log_dom = -1;
+   return EINA_TRUE;
 }
 
 /**
diff --git a/src/lib/eina_convert.c b/src/lib/eina_convert.c
index 27fac40..e983163 100644
--- a/src/lib/eina_convert.c
+++ b/src/lib/eina_convert.c
@@ -23,9 +23,20 @@
 #include <math.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdio.h>
 
-#include "eina_convert.h"
+#ifdef HAVE_EVIL
+# include <Evil.h>
+#endif
+
+#include "eina_config.h"
+#include "eina_private.h"
+#include "eina_log.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_convert.h"
+#include "eina_fp.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -38,7 +49,17 @@
 static const char look_up_table[] = {'0', '1', '2', '3', '4',
 				     '5', '6', '7', '8', '9',
 				     'a', 'b', 'c', 'd', 'e', 'f'};
-static int _eina_convert_init_count = 0;
+static int _eina_convert_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_convert_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_convert_log_dom, __VA_ARGS__)
 
 #define HEXA_TO_INT(Hexa) (Hexa >= 'a') ? Hexa - 'a' + 10 : Hexa - '0'
 
@@ -75,6 +96,10 @@ EAPI Eina_Error EINA_ERROR_CONVERT_P_NOT_FOUND = 0;
 EAPI Eina_Error EINA_ERROR_CONVERT_0X_NOT_FOUND = 0;
 EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
 
+static const char EINA_ERROR_CONVERT_0X_NOT_FOUND_STR[] = "Error during string convertion to float, First '0x' was not found.";
+static const char EINA_ERROR_CONVERT_P_NOT_FOUND_STR[] = "Error during string convertion to float, First 'p' was not found.";
+static const char EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH_STR[] = "Error outrun string limit during convertion string convertion to float.";
+
 /**
  * @endcond
  */
@@ -85,8 +110,8 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  * These functions allow you to convert integer or real numbers to
  * string or conversely.
  *
- * To use these function, you have to call eina_convert_init()
- * first, and eina_convert_shutdown() when they are not used anymore.
+ * To use these functions, you have to call eina_init()
+ * first, and eina_shutdown() when eina is not used anymore.
  *
  * @section Eina_Convert_From_Integer_To_Sring Conversion from integer to string
  *
@@ -107,9 +132,9 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  * {
  *    char *tmp[128];
  *
- *    if (!eina_convert_init())
+ *    if (!eina_init())
  *    {
- *        printf ("Error during the initialization of eina_convert module\n");
+ *        printf ("Error during the initialization of eina.\n");
  *        return EXIT_FAILURE;
  *    }
  *
@@ -119,7 +144,7 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  *    eina_convert_xtoa(0xA1, tmp);
  *    printf("value: %s\n", tmp);
  *
- *    eina_convert_shutdown();
+ *    eina_shutdown();
  *
  *    return EXIT_SUCCESS;
  * }
@@ -173,9 +198,9 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  *    long int  e = 0;
  *    doule     r;
  *
- *    if (!eina_convert_init())
+ *    if (!eina_init())
  *    {
- *        printf ("Error during the initialization of eina_convert module\n");
+ *        printf ("Error during the initialization of eina.\n");
  *        return EXIT_FAILURE;
  *    }
  *
@@ -186,7 +211,7 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  *    r = ldexp((double)m, e);
  *    printf("value: %s\n", tmp);
  *
- *    eina_convert_shutdown();
+ *    eina_shutdown();
  *
  *    return EXIT_SUCCESS;
  * }
@@ -198,54 +223,57 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  */
 
 /**
- * @brief Initialize the eina convert internal structure.
+ * @internal
+ * @brief Initialize the convert module.
  *
- * @return 1 or greater on success, 0 on error.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the convert module of Eina. It is called by
+ * eina_init().
  *
  * This function sets up the error module of Eina and registers the
  * errors #EINA_ERROR_CONVERT_0X_NOT_FOUND,
  * #EINA_ERROR_CONVERT_P_NOT_FOUND and
- * #EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH. It is also called by
- * eina_init(). It returns 0 on failure, otherwise it returns the
- * number of times it has already been called.
+ * #EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH.
+ *
+ * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_convert_init(void)
 {
-   _eina_convert_init_count++;
-
-   if (_eina_convert_init_count > 1) goto init_out;
+   _eina_convert_log_dom = eina_log_domain_register("eina_convert", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_convert_log_dom < 0)
+     {
+	EINA_LOG_ERR("Could not register log domain: eina_convert");
+	return EINA_FALSE;
+     }
 
-   eina_error_init();
-   EINA_ERROR_CONVERT_0X_NOT_FOUND = eina_error_msg_register("Error during string convertion to float, First '0x' was not found.");
-   EINA_ERROR_CONVERT_P_NOT_FOUND = eina_error_msg_register("Error during string convertion to float, First 'p' was not found.");
-   EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = eina_error_msg_register("Error outrun string limit during convertion string convertion to float.");
+#define EEMR(n) n = eina_error_msg_static_register(n##_STR)
+   EEMR(EINA_ERROR_CONVERT_0X_NOT_FOUND);
+   EEMR(EINA_ERROR_CONVERT_P_NOT_FOUND);
+   EEMR(EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH);
+#undef EEMR
 
- init_out:
-   return _eina_convert_init_count;
+   return EINA_TRUE;
 }
 
 /**
- * @brief Shut down the eina convert internal structures
+ * @internal
+ * @brief Shut down the convert module.
  *
- * @return 0 when the convert module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function just shuts down the error module. It is also called by
- * eina_shutdown(). It returns 0 when it is called the same number of
- * times than eina_convert_init().
+ * This function shuts down the convert module set up by
+ * eina_convert_init(). It is called by eina_shutdown().
+ *
+ * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_convert_shutdown(void)
 {
-   _eina_convert_init_count--;
-
-   if (_eina_convert_init_count > 0) goto shutdown_out;
-
-   eina_error_shutdown();
-
- shutdown_out:
-   return _eina_convert_init_count;
+   eina_log_domain_unregister(_eina_convert_log_dom);
+   _eina_convert_log_dom = -1;
+   return EINA_TRUE;
 }
 
 /*
@@ -264,7 +292,7 @@ eina_convert_shutdown(void)
  * converted string is in decimal base. As no check is done, @p s must
  * be a buffer that is sufficiently large to store the integer.
  *
- * The returned value is the length os the string, including the nul
+ * The returned value is the length of the string, including the nul
  * terminated character.
  */
 EAPI int
@@ -306,7 +334,7 @@ eina_convert_itoa(int n, char *s)
  * cyphers are in lower case. As no check is done, @p s must be a
  * buffer that is sufficiently large to store the integer.
  *
- * The returned value is the length os the string, including the nul
+ * The returned value is the length of the string, including the nul
  * terminated character.
  */
 EAPI int
@@ -329,7 +357,7 @@ eina_convert_xtoa(unsigned int n, char *s)
 }
 
 /**
- * @brief Convert a string to a double
+ * @brief Convert a string to a double.
  *
  * @param src The string to convert.
  * @param length The length of the string.
@@ -398,7 +426,7 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
    if (strncmp(str, "0x", 2))
      {
 	eina_error_set(EINA_ERROR_CONVERT_0X_NOT_FOUND);
-	EINA_ERROR_PDBG("'0x' not found in '%s'\n", src);
+	DBG("'0x' not found in '%s'", src);
         return EINA_FALSE;
      }
 
@@ -426,7 +454,7 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
    if (*str != 'p')
      {
 	eina_error_set(EINA_ERROR_CONVERT_P_NOT_FOUND);
-	EINA_ERROR_PDBG("'p' not found in '%s'\n", src);
+	DBG("'p' not found in '%s'", src);
         return EINA_FALSE;
      }
    sign = +1;
@@ -463,7 +491,7 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
 }
 
 /**
- * @brief Convert a double to a string
+ * @brief Convert a double to a string.
  *
  * @param d The double to convert.
  * @param des The destination buffer to store the converted double.
@@ -471,7 +499,7 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
  *
  * This function converts the double @p d to a string. The string is
  * stored in the buffer pointed by @p des and must be sufficiently
- * large to contain the converted double. The returned string is
+ * large to contain the converted double. The returned string is nul
  * terminated and has the following format:
  *
  * @code
@@ -547,5 +575,183 @@ eina_convert_dtoa(double d, char *des)
 }
 
 /**
+ * @brief Convert a 32.32 fixed point number to a string.
+ *
+ * @param fp The fixed point number to convert.
+ * @param des The destination buffer to store the converted fixed point number.
+ * @return #EINA_TRUE on success, #EINA_FALSE otherwise.
+ *
+ * This function converts the 32.32 fixed point number @fp to a
+ * string. The string is stored in the buffer pointed by @p des and
+ * must be sufficiently large to contain the converted fixed point
+ * number. The returned string is terminated and has the following
+ * format:
+ *
+ * @code
+ * [-]0xh.hhhhhp[+-]e
+ * @endcode
+ *
+ * where the h are the hexadecimal cyphers of the mantiss and e the
+ * exponent (a decimal number).
+ *
+ * The returned value is the length of the string, including the nul
+ * character.
+ *
+ * @note The code is the same than eina_convert_dtoa() except that it
+ * implements the frexp() function for fixed point numbers and does
+ * some optimisations.
+ */
+EAPI int
+eina_convert_fptoa(Eina_F32p32 fp, char *des)
+{
+   int length = 0;
+   int p = 0;
+   int i;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(des, EINA_FALSE);
+
+   if (fp == 0)
+     {
+       memcpy(des, "0x0p+0", 7);
+       return 7;
+     }
+
+   if (fp < 0)
+     {
+        *(des++) = '-';
+        fp = -fp;
+	length++;
+     }
+
+   /* fp >= 1 */
+   if (fp >= 0x0000000100000000LL)
+     {
+        while (fp >= 0x0000000100000000LL)
+          {
+            p++;
+            /* fp /= 2 */
+            fp >>= 1;
+          }
+     }
+   /* fp < 0.5 */
+   else if (fp < 0x80000000)
+     {
+        while (fp < 0x80000000)
+          {
+             p--;
+             /* fp *= 2 */
+             fp <<= 1;
+          }
+     }
+
+   if (p)
+     {
+        p--;
+	/* fp *= 2 */
+        fp <<= 1;
+     }
+
+   *(des++) = '0';
+   *(des++) = 'x';
+   *(des++) = look_up_table[fp >> 32];
+   *(des++) = '.';
+   length += 4;
+
+   for (i = 0; i < 16; i++, length++)
+     {
+        fp &= 0x00000000ffffffffLL;
+        fp <<= 4; /* fp *= 16 */
+        *(des++) = look_up_table[fp >> 32];
+     }
+
+   while (*(des - 1) == '0')
+     {
+	des--;
+	length--;
+     }
+
+   if (*(des - 1) == '.')
+     {
+	des--;
+	length--;
+     }
+
+   *(des++) = 'p';
+   if (p < 0)
+     {
+        *(des++) = '-';
+        p = -p;
+     }
+   else
+     *(des++) = '+';
+   length += 2;
+
+   return length + eina_convert_itoa(p, des);
+}
+
+/**
+ * @brief Convert a string to a 32.32 fixed point number.
+ *
+ * @param src The string to convert.
+ * @param length The length of the string.
+ * @param fp The fixed point number.
+ * @return #EINA_TRUE on success, #EINA_FALSE otherwise.
+ *
+ * This function converts the string @p src of length @p length that
+ * represent a double in hexadecimal base to a 32.32 fixed point
+ * number stored in @p fp. The function always tries to convert the
+ * string with eina_convert_atod().
+ *
+ * The string must have the following format:
+ *
+ * @code
+ * [-]0xh.hhhhhp[+-]e
+ * @endcode
+ *
+ * where the h are the hexadecimal cyphers of the mantiss and e the
+ * exponent (a decimal number). If n is the number of cypers after the
+ * point, the returned mantiss and exponents are:
+ *
+ * @code
+ * mantiss  : [-]hhhhhh
+ * exponent : 2^([+-]e - 4 * n)
+ * @endcode
+ *
+ * The mantiss and exponent are stored in the buffers pointed
+ * respectively by @p m and @p e.
+ *
+ * If the string is invalid, the error is set to:
+ *
+ * @li #EINA_ERROR_CONVERT_0X_NOT_FOUND if no 0x is found,
+ * @li #EINA_ERROR_CONVERT_P_NOT_FOUND if no p is found,
+ * @li #EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH if @p length is not
+ * correct.
+ *
+ * In those cases, or if @p fp is @c NULL, #EINA_FALSE is returned,
+ * otherwise @p fp is computed and #EINA_TRUE is returned.
+ *
+ * @note The code uses eina_convert_atod() and do the correct bit
+ * shift to compute the fixed point number.
+ */
+EAPI Eina_Bool
+eina_convert_atofp(const char *src, int length, Eina_F32p32 *fp)
+{
+   long long m;
+   long e;
+
+   if (!eina_convert_atod(src, length, &m, &e))
+     return EINA_FALSE;
+
+   if (!fp) return EINA_TRUE;
+
+   e += 32;
+
+   if (e > 0) *fp = m << e;
+   else *fp = m >> e;
+
+   return EINA_TRUE;
+}
+
+/**
  * @}
  */
diff --git a/src/lib/eina_counter.c b/src/lib/eina_counter.c
index f76d42c..a6bbaf6 100644
--- a/src/lib/eina_counter.c
+++ b/src/lib/eina_counter.c
@@ -32,11 +32,14 @@
 # undef WIN32_LEAN_AND_MEAN
 #endif /* _WIN2 */
 
-#include "eina_counter.h"
+#include "eina_config.h"
+#include "eina_private.h"
 #include "eina_inlist.h"
 #include "eina_error.h"
-#include "eina_private.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_counter.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -73,8 +76,6 @@ struct _Eina_Clock
    Eina_Bool valid;
 };
 
-static int _eina_counter_init_count = 0;
-
 #ifndef _WIN32
 static inline int
 _eina_counter_time_get(Eina_Nano_Time *tp)
@@ -90,6 +91,7 @@ _eina_counter_time_get(Eina_Nano_Time *tp)
 # endif
 }
 #else
+static const char EINA_ERROR_COUNTER_WINDOWS_STR[] = "Change your OS, you moron !";
 static int EINA_ERROR_COUNTER_WINDOWS = 0;
 static LARGE_INTEGER _eina_counter_frequency;
 
@@ -151,9 +153,10 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  *
  * @brief These functions allow you to get the time spent in a part of a code.
  *
- * The counter system must be initialized with eina_counter_init() and
- * shut down with eina_counter_shutdown(). The create a counter, use
- * eina_counter_new(). To free it, use eina_counter_free().
+ * Before using the counter system, Eina must be initialized with
+ * eina_init() and later shut down with eina_shutdown(). The create a
+ * counter, use eina_counter_new(). To free it, use
+ * eina_counter_free().
  *
  * To time a part of a code, call eina_counter_start() just before it,
  * and eina_counter_stop() just after it. Each time you start to time
@@ -187,9 +190,9 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  * {
  *    Eina_Counter *counter;
  *
- *    if (!eina_counter_init())
+ *    if (!eina_init())
  *    {
- *        printf("Error during the initialization of eina_counter module\n");
+ *        printf("Error during the initialization of eina\n");
  *        return EXIT_FAILURE;
  *    }
  *
@@ -202,7 +205,7 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  *    eina_counter_dump(counter);
  *
  *    eina_counter_free(counter);
- *    eina_counter_shutdown();
+ *    eina_shutdown();
  *
  *    return EXIT_SUCCESS;
  * }
@@ -227,73 +230,51 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  */
 
 /**
+ * @internal
  * @brief Initialize the eina counter internal structure.
  *
- * @return 1 or greater on success, 0 on error.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the counter module set up by
+ * eina_counter_init(). It is called by eina_init().
  *
  * This function sets up the error module of Eina and only on Windows,
  * it initializes the high precision timer. It also registers, only on
  * Windows, the error #EINA_ERROR_COUNTER_WINDOWS. It is also called
  * by eina_init(). It returns 0 on failure, otherwise it returns the
- * number of times it has already been called. See eina_error_init()
- * for the documentation of the initialisation of the dependency
- * modules.
- *
- * Once the counter module is not used anymore, then
- * eina_counter_shutdown() must be called to shut down the counter
- * module.
+ * number of times it has already been called.
  *
- * @see eina_error_init()
  * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_counter_init(void)
 {
-   _eina_counter_init_count++;
-
-   if (_eina_counter_init_count == 1)
-     {
-        if (!eina_error_init())
-          {
-             fprintf(stderr, "Could not initialize eina error module.\n");
-             return 0;
-          }
 #ifdef _WIN32
-	EINA_ERROR_COUNTER_WINDOWS = eina_error_msg_register("Change your OS, you moron !");
-        if (!QueryPerformanceFrequency(&_eina_counter_frequency))
-          {
-	     eina_error_set(EINA_ERROR_COUNTER_WINDOWS);
-             eina_error_shutdown();
-             return 0;
-          }
-#endif /* _WIN2 */
+   EINA_ERROR_COUNTER_WINDOWS = eina_error_msg_static_register(EINA_ERROR_COUNTER_WINDOWS_STR);
+   if (!QueryPerformanceFrequency(&_eina_counter_frequency))
+     {
+	eina_error_set(EINA_ERROR_COUNTER_WINDOWS);
+	return EINA_FALSE;
      }
-
-   return _eina_counter_init_count;
+#endif /* _WIN2 */
+   return EINA_TRUE;
 }
 
 /**
- * @brief Shut down the eina counter internal structures
+ * @internal
+ * @brief Shut down the counter module.
  *
- * @return 0 when the counter module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
  * This function shuts down the counter module set up by
- * eina_counter_init(). It is called by eina_shutdown(). It
- * returns 0 when it is called the same number of times than
- * eina_counter_init().
+ * eina_counter_init(). It is called by eina_shutdown().
  *
- * @see eina_error_shutdown()
  * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_counter_shutdown(void)
 {
-   _eina_counter_init_count--;
-
-   if (_eina_counter_init_count == 0) eina_error_shutdown();
-
-   return _eina_counter_init_count;
+   return EINA_TRUE;
 }
 
 /**
diff --git a/src/lib/eina_cpu.c b/src/lib/eina_cpu.c
index 4de30a3..6ae5fa8 100644
--- a/src/lib/eina_cpu.c
+++ b/src/lib/eina_cpu.c
@@ -20,6 +20,29 @@
 # include "config.h"
 #endif
 
+#ifdef EFL_HAVE_PTHREAD
+# ifdef _WIN32
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+# elif defined (__SUNPRO_C)
+#  include <unistd.h>
+# elif defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__) || defined (__DragonFly__) || defined (__MacOSX__) || ( defined (__MACH__) && defined (__APPLE__))
+#  include <unistd.h>
+#  include <sys/param.h>
+#  include <sys/sysctl.h>
+# elif defined (__linux__)
+#  define _GNU_SOURCE
+#  include <sched.h>
+# endif
+# include <pthread.h>
+
+# define TH_MAX 8
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
 #include "eina_cpu.h"
 
 /*============================================================================*
@@ -99,3 +122,72 @@ EAPI Eina_Cpu_Features eina_cpu_features_get(void)
 #endif
 	return ecf;
 }
+
+EAPI int eina_cpu_count(void)
+{
+#ifdef EFL_HAVE_PTHREAD
+
+# if   defined (_WIN32)
+   SYSTEM_INFO sysinfo;
+
+   GetSystemInfo(&sysinfo);
+   return sysinfo.dwNumberOfProcessors;
+
+# elif defined (__SUNPRO_C)
+   /*
+    * _SC_NPROCESSORS_ONLN: number of processors that are online, that
+                            is available when sysconf is called. The number
+                            of cpu can change by admins.
+    * _SC_NPROCESSORS_CONF: maximum number of processors that are available
+                            to the current OS instance. That number can be
+                            change after a reboot.
+    * _SC_NPROCESSORS_MAX : maximum number of processors that are on the
+                            motherboard.
+    */
+   return sysconf(_SC_NPROCESSORS_ONLN);
+
+# elif defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__) || defined (__DragonFly__) || defined (__MacOSX__) || ( defined (__MACH__) && defined (__APPLE__))
+
+   int    mib[4];
+   int    cpus;
+   size_t len = sizeof(cpus);
+
+   mib[0] = CTL_HW;
+#ifdef HW_AVAILCPU
+   mib[1] = HW_AVAILCPU;
+#else
+   mib[1] = HW_NCPU;
+#endif
+   sysctl(mib, 2, &cpus, &len, NULL, 0);
+   if (cpus < 1)
+     cpus = 1;
+
+   return cpus;
+
+# elif defined (__linux__)
+   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)
+     {
+	fprintf(stderr, "[Eina] 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
+#  error "eina_cpu_count() error: Platform not supported"
+# endif
+#else
+   return 1;
+#endif
+}
diff --git a/src/lib/eina_error.c b/src/lib/eina_error.c
index 0cd8f45..d2af26b 100644
--- a/src/lib/eina_error.c
+++ b/src/lib/eina_error.c
@@ -24,224 +24,8 @@
  *
  * The Eina error module provides a way to manage errors in a simple
  * but powerful way in libraries and modules. It is also used in Eina
- * itself. It provides facilities for displaying different kind of
- * messages (warning, informations, errors, or debug), which can be
- * tuned by the user, or for registering new errors messages.
- *
- * @section tutorial_error_basic_usage Basic Usage
- *
- * The first thing to do when using the error module is to initialize
- * it with eina_error_init() and, when the error module is not used
- * anymore, to shut down it with eina_error_shutdown(). So a basic
- * program would look like that:
- *
- * @code
- * #include <stdlib.h>
- * #include <stdio.h>
- *
- * #include <eina_error.h>
- *
- * int main(void)
- * {
- *    if (!eina_error_init())
- *    {
- *        printf ("Error during the initialization of eina_error module\n");
- *        return EXIT_FAILURE;
- *    }
- *
- *    eina_error_shutdown();
- *
- *    return EXIT_SUCCESS;
- * }
- * @endcode
- *
- * All program using any module of eina must be compiled with the
- * following command:
- *
- * @code
- * gcc -Wall -o my_exe my_source.c `pkg-config --cflags --libs eina`
- * @endcode
- *
- * Now that the error module is initialized, error messages can
- * be displayed. Helper macros are already defined for such purpose:
- *
- * @li EINA_ERROR_PERR(),
- * @li EINA_ERROR_PINFO(),
- * @li EINA_ERROR_PWARN(),
- * @li EINA_ERROR_PDBG().
- *
- * Here is an example:
- *
- * @code
- * #include <stdlib.h>
- * #include <stdio.h>
- *
- * #include <eina_error.h>
- *
- * void test(int i)
- * {
- *    EINA_ERROR_PDBG("Entering test\n");
- *
- *    if (i < 0)
- *    {
- *        EINA_ERROR_PERR("argument is negative\n");
- *        return;
- *    }
- *
- *    EINA_ERROR_PINFO("argument non negative\n");
- *
- *    EINA_ERROR_PDBG("Exiting test\n");
- * }
- *
- * int main(void)
- * {
- *    if (!eina_error_init())
- *    {
- *        printf ("Error during the initialization of eina_error module\n");
- *        return EXIT_FAILURE;
- *    }
- *
- *    test(-1);
- *    test(0);
- *
- *    eina_error_shutdown();
- *
- *    return EXIT_SUCCESS;
- * }
- * @endcode
- *
- * If you compiled Eina without debug mode, after executing that
- * program, you will see only 1 message (the argument being
- * negative). Why ? These macros are just wrappers around
- * eina_error_print(). This function only displays messages if the
- * current error level is lesser or equal than the one used by
- * eina_error_print(). By default, the current error level is
- * #EINA_ERROR_LEVEL_ERR (in non debug mode), and the macro uses
- * the error values defines by #Eina_Error_Level. So as
- * #EINA_ERROR_LEVEL_ERR is the smallest value, only
- * EINA_ERROR_PERR() will display the message.
- *
- * To modify this behavior, you have two solutions:
- *
- * @li Using the environment variable EINA_ERROR_LEVEL. In that case,
- * just set the environment variable to a integer number between 0
- * (#EINA_ERROR_LEVEL_ERR) and 3 (#EINA_ERROR_LEVEL_DBG)
- * before executing the program. That environment variable will be
- * read during the first call of eina_error_init().
- * @li Using the function eina_error_log_level_set().
- *
- * So try using the environment variable like this:
- *
- * @code
- * EINA_ERROR_LEVEL=2 ./my_app
- * @endcode
- *
- * To do the same with eina_error_log_level_set(), just add
- *
- * @code
- * eina_error_log_level_set(EINA_ERROR_LEVEL_INFO);
- * @endcode
- *
- * before the calls of the tests in the above example.
- *
- * @section tutorial_error_advanced_display Advanced usage of print callbacks
- *
- * The error module allows the user to change the way
- * eina_error_print() displays the messages. It suffices to pass to
- * eina_error_print_cb_set() the function used to display the
- * message. That  function must be of type #Eina_Error_Print_Cb. As a
- * custom data can be passed to that callback, powerful display
- * messages can be displayed.
- *
- * It is suggested to not use __FILE__, __FUNCTION__ or __LINE__ when
- * writing that callback, but when defining macros (like
- * EINA_ERROR_PERR() and other macros).
- *
- * Here is an example of custom callback, whose behavior can be
- * changed at runtime:
- *
- * @code
- * #include <stdlib.h>
- * #include <stdio.h>
- *
- * #include <eina_error.h>
- *
- * #define ERROR(fmt, ...)                                    \
- *    eina_error_print(EINA_ERROR_LEVEL_ERR, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
- *
- * typedef struct _Data Data;
- *
- * struct _Data
- * {
- *    int to_stderr;
- * };
- *
- * void print_cb(Eina_Error_Level level,
- *               const char *file,
- *               const char *fnc,
- *               int line,
- *               const char *fmt,
- *               void *data,
- *               va_list args)
- * {
- *    Data *d;
- *    FILE *output;
- *    char *str;
- *
- *    d = (Data *)data;
- *    if (d->to_stderr)
- *    {
- *       output = stderr;
- *       str = "stderr";
- *    }
- *    else
- *    {
- *       output = stdout;
- *       str = "stdout";
- *    }
- *
- *    fprintf(output, "%s:%s (%d) %s: ", file, fnc, line, str);
- *    vfprintf(output, fmt, args);
- * }
- *
- * void test(Data *data, int i)
- * {
- *    if (i < 0)
- *       data->to_stderr = 0;
- *    else
- *       data->to_stderr = 1;
- *
- *    ERROR("error message...\n");
- * }
- *
- * int main(void)
- * {
- *    Data *data;
- *
- *    if (!eina_error_init())
- *    {
- *       printf ("Error during the initialization of eina_error module\n");
- *       return EXIT_FAILURE;
- *    }
- *
- *    data = (Data *)malloc(sizeof(Data));
- *    if (!data)
- *    {
- *       printf ("Error during memory allocation\n");
- *       eina_error_shutdown();
- *       return EXIT_FAILURE;
- *    }
- *
- *    eina_error_print_cb_set(print_cb, data);
- *
- *    test(data, -1);
- *    test(data, 0);
- *
- *    eina_error_shutdown();
- *
- *    return EXIT_SUCCESS;
- * }
- * @endcode
+ * itself. Similar to libC's @c errno and strerror() facilities, this
+ * is extensible and recommended for other libraries and applications.
  *
  * @section tutorial_error_registering_msg Registering messages
  *
@@ -296,7 +80,7 @@
  * {
  *    void *data;
  *
- *    if (!eina_error_init())
+ *    if (!eina_init())
  *    {
  *       printf ("Error during the initialization of eina_error module\n");
  *       return EXIT_FAILURE;
@@ -336,13 +120,13 @@
  *                 eina_error_msg_get(err));
  *    }
  *
- *    eina_error_shutdown();
+ *    eina_shutdown();
  *
  *    return EXIT_SUCCESS;
  * }
  * @endcode
  *
- * Of course, instead of printf(), eina_error_print() can be used to
+ * Of course, instead of printf(), eina_log_print() can be used to
  * have beautiful error messages.
  */
 
@@ -358,10 +142,14 @@
 # include <Evil.h>
 #endif
 
-#include "eina_error.h"
-#include "eina_inlist.h"
+#include "eina_config.h"
 #include "eina_private.h"
+#include "eina_log.h" /* remove me when eina_error_print is removed! */
+
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_error.h"
 
 /* TODO
  * + printing errors to stdout or stderr can be implemented
@@ -380,32 +168,45 @@
  * @cond LOCAL
  */
 
-static int _eina_error_init_count = 0;
-static Eina_Inlist *_error_list = NULL;
-static int _error_list_count = 0;
-static Eina_Error _err;
-static Eina_Error_Print_Cb _print_cb = eina_error_print_cb_stdout;
-static void *_print_cb_data = NULL;
-
-#define RED     "\033[31;1m"
-#define GREEN   "\033[32;1m"
-#define YELLOW  "\033[33;1m"
-#define WHITE   "\033[37;1m"
-#define NOTHING "\033[0m"
-
-#ifdef DEBUG
-static Eina_Error_Level _error_level = EINA_ERROR_LEVEL_DBG;
-#else
-static Eina_Error_Level _error_level = EINA_ERROR_LEVEL_ERR;
-#endif
-
-static const char *_colors[EINA_ERROR_LEVELS] = {
-  RED, // EINA_ERROR_LEVEL_ERR
-  YELLOW, // EINA_ERROR_LEVEL_WARN
-  NOTHING, // EINA_ERROR_LEVEL_INFO
-  GREEN, // EINA_ERROR_LEVEL_DBG
+typedef struct _Eina_Error_Message Eina_Error_Message;
+struct _Eina_Error_Message
+{
+   Eina_Bool string_allocated;
+   const char *string;
 };
 
+static Eina_Error_Message *_eina_errors = NULL;
+static size_t _eina_errors_count = 0;
+static size_t _eina_errors_allocated = 0;
+static Eina_Error _eina_last_error;
+
+static Eina_Error_Message *
+_eina_error_msg_alloc(void)
+{
+   size_t idx;
+
+   if (_eina_errors_count == _eina_errors_allocated)
+     {
+	void *tmp;
+	size_t size;
+
+	if (EINA_UNLIKELY(_eina_errors_allocated == 0))
+	  size = 24;
+	else
+	  size = _eina_errors_allocated + 8;
+
+	tmp = realloc(_eina_errors, sizeof(Eina_Error_Message) * size);
+	if (!tmp)
+	  return NULL;
+	_eina_errors = tmp;
+	_eina_errors_allocated = size;
+     }
+
+   idx = _eina_errors_count;
+   _eina_errors_count++;
+   return _eina_errors + idx;
+}
+
 /**
  * @endcond
  */
@@ -424,61 +225,13 @@ static const char *_colors[EINA_ERROR_LEVELS] = {
  *
  * @brief These functions provide error management for projects.
  *
- * The error system must be initialized with eina_error_init() and
- * shut down with eina_error_shutdown(). The most generic way to print
- * errors is to use eina_error_print() but the helper macros
- * EINA_ERROR_PERR(), EINA_ERROR_PINFO(), EINA_ERROR_PWARN() and
- * EINA_ERROR_PDBG() should be used instead.
- *
- * Here is a straightforward example:
- *
- * @code
- * #include <stdlib.h>
- * #include <stdio.h>
- *
- * #include <eina_error.h>
- *
- * void test_warn(void)
- * {
- *    EINA_ERROR_PWARN("Here is a warning message\n");
- * }
- *
- * int main(void)
- * {
- *    if (!eina_error_init())
- *    {
- *        printf ("Error during the initialization of eina_error module\n");
- *        return EXIT_FAILURE;
- *    }
- *
- *    test_warn();
- *
- *    eina_error_shutdown();
- *
- *    return EXIT_SUCCESS;
- * }
- * @endcode
- *
- * Compile this code with the following command:
- *
- * @code
- * gcc -Wall -o test_eina_error test_eina.c `pkg-config --cflags --libs eina`
- * @endcode
- *
- * If Eina is compiled without debug mode, then executing the
- * resulting program displays nothing because the default error level
- * is #EINA_ERROR_LEVEL_ERR and we want to display a warning
- * message, which level is strictly greater than the error level (see
- * eina_error_print() for more informations). Now execute the program
- * with:
- *
- * @code
- * EINA_ERROR_LEVEL=2 ./test_eina_error
- * @endcode
- *
- * You should see a message displayed in the terminal.
+ * To use the error system Eina must be initialized with eina_init()
+ * and later shut down with eina_shutdown(). Error codes are
+ * registered with eina_error_msg_register() and converted from
+ * identifier to original message string with eina_error_msg_get().
  *
- * For more information, you can look at the @ref tutorial_error_page.
+ * Logging functions are not in eina_error anymore, see
+ * eina_log_print() instead.
  *
  * @{
  */
@@ -490,116 +243,129 @@ static const char *_colors[EINA_ERROR_LEVELS] = {
 
 EAPI Eina_Error EINA_ERROR_OUT_OF_MEMORY = 0;
 
+static const char EINA_ERROR_OUT_OF_MEMORY_STR[] = "Out of memory";
+
 /**
  * @endcond
  */
 
 /**
+ * @internal
  * @brief Initialize the error module.
  *
- * @return 1 or greater on success, 0 on error.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
  * This function sets up the error module of Eina. It is called by
- * eina_init() and by all modules initialization functions. It returns
- * @c 0 on failure, otherwise it returns the number of times it is
- * called.
- *
- * The default error level value is set by default to
- * #EINA_ERROR_LEVEL_DBG if Eina is compiled with debug mode, or to
- * #EINA_ERROR_LEVEL_ERR otherwise. That value can be overwritten by
- * setting the environment variable EINA_ERROR_LEVEL. This function
- * checks the value of that environment variable in the first
- * call. Its value must be a number between 0 and 3, to match the
- * error levels #EINA_ERROR_LEVEL_ERR, #EINA_ERROR_LEVEL_WARN,
- * #EINA_ERROR_LEVEL_INFO and #EINA_ERROR_LEVEL_DBG. That value can
- * also be set later with eina_error_log_level_set().
+ * eina_init().
  *
  * This function registers the error #EINA_ERROR_OUT_OF_MEMORY.
  *
- * Once the error module is not used anymore, then
- * eina_error_shutdown() must be called to shut down the error
- * module.
- *
  * @see eina_init()
  */
-EAPI int eina_error_init(void)
+Eina_Bool
+eina_error_init(void)
 {
-	if (!_eina_error_init_count)
-	{
-		char *level;
-		/* TODO register the eina's basic errors */
-		if ((level = getenv("EINA_ERROR_LEVEL")))
-		{
-			_error_level = atoi(level);
-		}
-		EINA_ERROR_OUT_OF_MEMORY = eina_error_msg_register("Out of memory");
-	}
-	/* get all the modules */
-	return ++_eina_error_init_count;
+   /* TODO register the eina's basic errors */
+   EINA_ERROR_OUT_OF_MEMORY = eina_error_msg_static_register(EINA_ERROR_OUT_OF_MEMORY_STR);
+   return EINA_TRUE;
 }
 
 /**
+ * @internal
  * @brief Shut down the error module.
  *
- * @return 0 when the error module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
  * This function shuts down the error module set up by
- * eina_error_init(). It is called by eina_shutdown() and by all
- * modules shutdown functions. It returns 0 when it is called the
- * same number of times than eina_error_init(). In that case it clears
- * the error list.
+ * eina_error_init(). It is called by eina_shutdown().
  *
  * @see eina_shutdown()
  */
-EAPI int eina_error_shutdown(void)
+Eina_Bool
+eina_error_shutdown(void)
 {
-	Eina_Inlist *tmp;
-
-	_eina_error_init_count--;
-	if (!_eina_error_init_count)
-	{
-		/* remove the error strings */
-		while (_error_list)
-		{
-			tmp = _error_list;
-
-			_error_list = _error_list->next;
-			free(tmp);
-		}
-		_error_list_count = 0;
-	}
-	return _eina_error_init_count;
+   Eina_Error_Message *eem, *eem_end;
+
+   eem = _eina_errors;
+   eem_end = eem + _eina_errors_count;
+
+   for (; eem < eem_end; eem++)
+     if (eem->string_allocated)
+       free((char *)eem->string);
+
+   free(_eina_errors);
+   _eina_errors = NULL;
+   _eina_errors_count = 0;
+   _eina_errors_allocated = 0;
+
+   return EINA_TRUE;
 }
 
 /**
  * @brief Register a new error type.
  *
- * @param msg The description of the error.
+ * @param msg The description of the error. It will be duplicated using
+ *        strdup().
  * @return The unique number identifier for this error.
  *
  * This function stores in a list the error message described by
  * @p msg. The returned value is a unique identifier greater or equal
  * than 1. The description can be retrieve later by passing to
  * eina_error_msg_get() the returned value.
+ *
+ * @see eina_error_msg_static_register()
  */
-EAPI Eina_Error eina_error_msg_register(const char *msg)
+EAPI Eina_Error
+eina_error_msg_register(const char *msg)
 {
-	Eina_Inlist *tmp;
-	size_t length;
+   Eina_Error_Message *eem;
 
-	EINA_SAFETY_ON_NULL_RETURN_VAL(msg, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(msg, 0);
 
-	length = strlen(msg) + 1;
+   eem = _eina_error_msg_alloc();
+   if (!eem)
+     return 0;
 
-	tmp = malloc(sizeof (Eina_Inlist) + length);
-	if (!tmp) return 0;
+   eem->string_allocated = EINA_TRUE;
+   eem->string = strdup(msg);
+   if (!eem->string)
+     {
+	_eina_errors_count--;
+	return 0;
+     }
 
-	memcpy((char*)(tmp + 1), msg, length);
+   return _eina_errors_count; /* identifier = index + 1 (== _count). */
+}
 
-	_error_list = eina_inlist_append(_error_list, tmp);
+/**
+ * @brief Register a new error type, statically allocated message.
+ *
+ * @param msg The description of the error. This string will not be
+ *        duplicated and thus the given pointer should live during
+ *        usage of eina_error.
+ * @return The unique number identifier for this error.
+ *
+ * This function stores in a list the error message described by
+ * @p msg. The returned value is a unique identifier greater or equal
+ * than 1. The description can be retrieve later by passing to
+ * eina_error_msg_get() the returned value.
+ *
+ * @see eina_error_msg_register()
+ */
+EAPI Eina_Error
+eina_error_msg_static_register(const char *msg)
+{
+   Eina_Error_Message *eem;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(msg, 0);
+
+   eem = _eina_error_msg_alloc();
+   if (!eem)
+     return 0;
 
-	return ++_error_list_count;
+   eem->string_allocated = EINA_FALSE;
+   eem->string = msg;
+   return _eina_errors_count; /* identifier = index + 1 (== _count). */
 }
 
 /**
@@ -612,14 +378,14 @@ EAPI Eina_Error eina_error_msg_register(const char *msg)
  * registered with eina_error_msg_register(). If an incorrect error is
  * given, then @c NULL is returned.
  */
-EAPI const char * eina_error_msg_get(Eina_Error error)
+EAPI const char *
+eina_error_msg_get(Eina_Error error)
 {
-	Eina_Inlist *tmp;
-	int i;
-
-	for (i = 0, tmp = _error_list; i < error - 1; ++i, tmp = tmp->next)
-		;
-	return (char*) (tmp + 1);
+   if (error < 1)
+     return NULL;
+   if ((size_t)error > _eina_errors_count)
+     return NULL;
+   return _eina_errors[error - 1].string;
 }
 
 /**
@@ -630,9 +396,10 @@ EAPI const char * eina_error_msg_get(Eina_Error error)
  * This function returns the last error set by eina_error_set(). The
  * description of the message is returned by eina_error_msg_get().
  */
-EAPI Eina_Error eina_error_get(void)
+EAPI Eina_Error
+eina_error_get(void)
 {
-	return _err;
+   return _eina_last_error;
 }
 
 /**
@@ -643,156 +410,53 @@ EAPI Eina_Error eina_error_get(void)
  * This function sets the last error identifier. The last error can be
  * retrieved with eina_error_get().
  */
-EAPI void eina_error_set(Eina_Error err)
+EAPI void
+eina_error_set(Eina_Error err)
 {
-	_err = err;
+   _eina_last_error = err;
 }
 
 /**
- * @brief Print the error to a file.
- *
- * @param level The error level.
- * @param file The name of the file where the error occurred.
- * @param fnc The name of the function where the error occurred.
- * @param line The number of the line where the error occurred.
- * @param fmt The format to use.
- *
- * This function sends to a stream (like stdout or stderr) a formatted
- * string that describes the error. The error level is set by
- * @p level, the name of the file, of the function and the number of the
- * line where the error occurred are respectively set by @p file,
- * @p fnc and @p line. A description of the error message is given by
- * @p fmt, which is a formatted string, followed by optional arguments
- * that can be converted (like with printf). If @p level is strictly
- * larger than the current error level, that function returns
- * immediately, otherwise it prints all the errors up to the current
- * error level. The current error level can be changed with
- * eina_error_log_level_set(). See also eina_error_init() for more
- * informations.
- *
- * By default, that formatted message is send to stdout and is
- * formatted by eina_error_print_cb_stdout(). The destination of the
- * formatted message is send and the way it is formatted can be
- * changed by setting a print callback with
- * eina_error_print_cb_set(). Some print callbacks are already
- * defined: eina_error_print_cb_stdout() that send the message to
- * stdout and eina_error_print_cb_file() that sends it to a file, but
- * custom print callbacks can be used. They must be of type
- * #Eina_Error_Print_Cb.
+ * @deprecated use eina_log_print() instead.
  */
-EAPI void eina_error_print(Eina_Error_Level level, const char *file,
+EAPI void eina_error_print(int level, const char *file,
 		const char *fnc, int line, const char *fmt, ...)
 {
 	va_list args;
 
-	if (level > _error_level)
-		return;
-
 	EINA_SAFETY_ON_NULL_RETURN(file);
 	EINA_SAFETY_ON_NULL_RETURN(fnc);
 	EINA_SAFETY_ON_NULL_RETURN(fmt);
 
+	EINA_LOG_WARN("this function is deprecated!");
+
 	va_start(args, fmt);
-	_print_cb(level, file, fnc, line, fmt, _print_cb_data, args);
+	eina_log_vprint(EINA_LOG_DOMAIN_GLOBAL, level, file, fnc, line, fmt, args);
 	va_end(args);
-
-	if (getenv("EINA_ERROR_ABORT")) abort();
 }
 
-EAPI void eina_error_vprint(Eina_Error_Level level, const char *file,
+/**
+ * @deprecated use eina_log_vprint() instead.
+ */
+EAPI void eina_error_vprint(int level, const char *file,
 		const char *fnc, int line, const char *fmt, va_list args)
 {
-	if (level > _error_level)
-		return;
-
 	EINA_SAFETY_ON_NULL_RETURN(file);
 	EINA_SAFETY_ON_NULL_RETURN(fnc);
 	EINA_SAFETY_ON_NULL_RETURN(fmt);
 
-	_print_cb(level, file, fnc, line, fmt, _print_cb_data, args);
-
-	if (getenv("EINA_ERROR_ABORT")) abort();
-}
-
-/**
- * @brief Print callback that sends the error message to stdout.
- *
- * @param level The error level.
- * @param file The name of the file where the error occurred.
- * @param fnc The name of the function where the error occurred.
- * @param line The number of the line where the error occurred.
- * @param fmt The format to use.
- * @param data Unused.
- * @param args The arguments that will be converted.
- *
- * This function is used to send a formatted error message to standard
- * output and is used as a print callback, with
- * eina_error_print(). This is the default print callback.
- */
-EAPI void eina_error_print_cb_stdout(Eina_Error_Level level, const char *file,
-		const char *fnc, int line, const char *fmt, __UNUSED__ void *data,
-		va_list args)
-{
-	printf("%s", _colors[level]);
-	printf("[%s:%d] %s() ", file, line, fnc);
-	printf("%s", _colors[EINA_ERROR_LEVEL_INFO]);
-	vprintf(fmt, args);
-}
-
-/**
- * @brief Print callback that sends the error message to a specified stream.
- *
- * @param level Unused.
- * @param file The name of the file where the error occurred.
- * @param fnc The name of the function where the error occurred.
- * @param line The number of the line where the error occurred.
- * @param fmt The format to use.
- * @param data The file stream.
- * @param args The arguments that will be converted.
- *
- * This function is used to send a formatted error message to the
- * stream specified by @p data. That stream must be of type FILE *. Look
- * at eina_error_print_cb_stdout() for the description of the other
- * parameters. Use eina_error_print_cb_set() to set it as default
- * print callback in eina_error_print().
- */
-EAPI void eina_error_print_cb_file(__UNUSED__ Eina_Error_Level level, const char *file,
-		const char *fnc, int line, const char *fmt, void *data,
-		va_list args)
-{
-	FILE *f = data;
+	EINA_LOG_WARN("this function is deprecated!");
 
-	fprintf(f, "[%s:%d] %s() ", file, line, fnc);
-	vfprintf(f, fmt, args);
-}
-
-/**
- * @brief Set the default print callback.
- *
- * @param cb The print callback.
- * @param data The data to pass to the callback
- *
- * This function sets the default print callback @p cb used by
- * eina_error_print(). A data can be passed to that callback with
- * @p data.
- */
-EAPI void eina_error_print_cb_set(Eina_Error_Print_Cb cb, void *data)
-{
-	_print_cb = cb;
-	_print_cb_data = data;
+	eina_log_vprint(EINA_LOG_DOMAIN_GLOBAL, level, file, fnc, line, fmt, args);
 }
 
 /**
- * @brief Set the default error log level.
- *
- * @param level The error level.
- *
- * This function sets the error log level @p level. It is used in
- * eina_error_print().
+ * @deprecated use eina_log_level_set() instead.
  */
-EAPI void eina_error_log_level_set(Eina_Error_Level level)
+EAPI void eina_error_log_level_set(int level)
 {
-	_error_level = level;
+   EINA_LOG_WARN("this function is deprecated!");
+   eina_log_level_set(level);
 }
 
 /**
diff --git a/src/lib/eina_file.c b/src/lib/eina_file.c
index c958f9e..a1a6fe8 100644
--- a/src/lib/eina_file.c
+++ b/src/lib/eina_file.c
@@ -17,23 +17,12 @@
  */
 
 #ifdef HAVE_CONFIG_H
-# include <config.h>
+# include "config.h"
 #endif
 
-#include <string.h>
-
 #ifndef _WIN32
 # define _GNU_SOURCE
-# include <sys/types.h>
-# include <sys/stat.h>
-# include <unistd.h>
-# include <dirent.h>
-#else
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-# undef WIN32_LEAN_AND_MEAN
-# include <Evil.h>
-#endif /* _WIN2 */
+#endif
 
 #ifdef HAVE_ALLOCA_H
 # include <alloca.h>
@@ -52,15 +41,32 @@ extern "C"
 void *alloca (size_t);
 #endif
 
+#include <string.h>
+
+#ifndef _WIN32
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <unistd.h>
+# include <dirent.h>
+#else
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+# include <Evil.h>
+#endif /* _WIN2 */
+
 #ifndef _WIN32
 # define PATH_DELIM '/'
 #else
 # define PATH_DELIM '\\'
 #endif
 
-#include "eina_file.h"
+#include "eina_config.h"
 #include "eina_private.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_file.h"
 
 /*============================================================================*
  *                                 Global                                     *
@@ -81,10 +87,6 @@ void *alloca (size_t);
  * @li eina_file_split() split a path into all the subdirectories that
  * compose it, according to the separator of the file system.
  *
- * @warning eina_file_split() uses the @ref Eina_Array_Group module
- * but does not initialize it. eina_array_init() and
- * eina_array_shutdown() must be called if this function is used.
- *
  * @{
  */
 
@@ -234,10 +236,6 @@ eina_file_dir_list(const char *dir, Eina_Bool recursive, Eina_File_Dir_List_Cb c
  * filesystem. If  @p path is @c NULL or if the array can not be
  * created, @c NULL is returned, otherwise, an array with the
  * different parts of @p path is returned.
- *
- * @warning This function uses the @ref Eina_Array_Group module but
- * does not initialize it. eina_array_init() and eina_array_shutdown()
- * must be called if this function is used.
  */
 EAPI Eina_Array *
 eina_file_split(char *path)
diff --git a/src/lib/eina_hamster.c b/src/lib/eina_hamster.c
new file mode 100644
index 0000000..2c2a86d
--- /dev/null
+++ b/src/lib/eina_hamster.c
@@ -0,0 +1,127 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2008 Cedric Bail
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+#include "eina_config.h"
+#include "eina_types.h"
+#include "eina_hamster.h"
+
+/*============================================================================*
+ *                                  Local                                     *
+ *============================================================================*/
+
+/**
+ * @cond LOCAL
+ */
+
+const char *_eina_hamster_time = __TIME__;
+const char *_eina_hamster_date = __DATE__;
+static int _eina_hamsters = -1;
+
+/**
+ * @endcond
+ */
+
+/*============================================================================*
+ *                                 Global                                     *
+ *============================================================================*/
+
+/*============================================================================*
+ *                                   API                                      *
+ *============================================================================*/
+
+/**
+ * @addtogroup Eina_Main_Group Hamster
+ *
+ * @brief These functions provide hamster calls.
+ *
+ * @{
+ */
+
+/**
+ * @brief Get the hamster count.
+ *
+ * @return The number of available hamsters.
+ *
+ * This function returns how many hamsters you have.
+ */
+EAPI int
+eina_hamster_count(void)
+{
+   if (_eina_hamsters < 0)
+     {
+        int hrs = 0, min = 0, sec = 0;
+        char mon[8] = "";
+        int monnum = 0, day = 0, year = 0;
+        int fields;
+        
+        fields = sscanf(_eina_hamster_time, "%02i:%02i:%02i", &hrs, &min, &sec);
+        if (fields == 3)
+          {
+             _eina_hamsters = (hrs * 60) + min;
+             fields = sscanf(_eina_hamster_date, "%s %i %i", mon, &day, &year);
+             if (fields == 3)
+               {
+                  int i;
+                  const char *mons[] =
+                    {
+                       "Jan",
+                       "Feb",
+                       "Mar",
+                       "Apr",
+                       "May",
+                       "Jun",
+                       "Jul",
+                       "Aug",
+                       "Sep",
+                       "Oct",
+                       "Nov",
+                       "Dec"
+                    };
+                  
+                  for (i = 0; i < 12; i++)
+                    {
+                       if (!strcmp(mon, mons[i]))
+                         {
+                            monnum = i + 1;
+                            break;
+                         }
+                    }
+                  // alloc 60 for mins, 24 for hrs
+                  // alloc 1-31 (32) for days, 1-12 (13) for months
+                  // use year as-is, for 31 bits (signed) this gives us up to
+                  // 3584 years, which is good enough imho. - 1500 years from
+                  // now or so. :)
+                  _eina_hamsters += 
+                    (day + (monnum * 32) + (13 * 32 * year)) * (24 * 60);
+               }
+          }
+     }
+   // format: [rest - year][0-12 - month][0-31 - day][0-23 - hrs][0-59 - sec]
+   return _eina_hamsters;
+}
+
+/**
+ * @}
+ */
diff --git a/src/lib/eina_hash.c b/src/lib/eina_hash.c
index ac32b6c..c5731e8 100644
--- a/src/lib/eina_hash.c
+++ b/src/lib/eina_hash.c
@@ -30,11 +30,14 @@
 # include <stdint.h>
 #endif
 
-#include "eina_hash.h"
+#include "eina_config.h"
+#include "eina_private.h"
 #include "eina_rbtree.h"
 #include "eina_error.h"
-#include "eina_private.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_hash.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -135,8 +138,6 @@ struct _Eina_Hash_Each
    const void *data;
 };
 
-static int _eina_hash_init_count = 0;
-
 #undef get16bits
 #if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
   || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
@@ -578,7 +579,7 @@ _eina_hash_iterator_next(Eina_Iterator_Hash *it, void **data)
    it->index++;
    it->bucket = bucket;
 
-   if (ok && data)
+   if (ok)
      *data = it->get_content(it);
 
    return ok;
@@ -637,54 +638,6 @@ _eina_hash_iterator_free(Eina_Iterator_Hash *it)
  * @{
  */
 
-/**
- * @brief Initialize the hash table module.
- *
- * @return 1 or greater on success, 0 on error.
- *
- * This function sets up the error module of Eina. It is also called
- * by eina_init(). It returns 0 on failure, otherwise it returns the
- * number of times it has already been called. See eina_error_init()
- * for the documentation of the initialisation of the dependency
- * module.
- *
- * When no more Eina hash tables are used, call eina_hash_shutdown()
- * to shut down the array module.
- *
- * @see eina_error_init()
- */
-EAPI int
-eina_hash_init(void)
-{
-   if (!_eina_hash_init_count)
-     if (!eina_error_init())
-       {
-	  fprintf(stderr, "Could not initialize eina error module\n");
-	  return 0;
-       }
-
-   return ++_eina_hash_init_count;
-}
-
-/**
- * @brief Shut down the hash table module.
- *
- * @return 0 when the error module is completely shut down, 1 or
- * greater otherwise.
- *
- * This function just shut down the error module set up by
- * eina_hash_init(). It is also called by eina_shutdown(). It returns
- * 0 when it is called the same number of times than
- * eina_error_init().
- */
-EAPI int
-eina_hash_shutdown(void)
-{
-   if (_eina_hash_init_count == 1)
-     eina_error_shutdown();
-   return --_eina_hash_init_count;
-}
-
 EAPI Eina_Hash *
 eina_hash_new(Eina_Key_Length key_length_cb,
 	      Eina_Key_Cmp key_cmp_cb,
@@ -820,7 +773,8 @@ eina_hash_population(const Eina_Hash *hash)
  * @param hash The hash table to be freed
  *
  * This function frees up all the memory allocated to storing the specified
- * hash tale pointed to by @p hash. Any entries in the table that the program
+ * hash tale pointed to by @p hash. If no data_free_cb has been passed to the
+ * hash at creation time, any entries in the table that the program
  * has no more pointers for elsewhere may now be lost, so this should only be
  * called if the program has lready freed any allocated data in the hash table
  * or has the pointers for data in teh table stored elswehere as well.
diff --git a/src/lib/eina_inlist.c b/src/lib/eina_inlist.c
index 8d922bc..4b7a90f 100644
--- a/src/lib/eina_inlist.c
+++ b/src/lib/eina_inlist.c
@@ -23,10 +23,13 @@
 #include <stdlib.h>
 #include <assert.h>
 
-#include "eina_inlist.h"
-#include "eina_error.h"
+#include "eina_config.h"
 #include "eina_private.h"
+#include "eina_error.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_inlist.h"
 
 /* FIXME: TODO please, refactor this :) */
 
diff --git a/src/lib/eina_iterator.c b/src/lib/eina_iterator.c
index 24644d0..7bec398 100644
--- a/src/lib/eina_iterator.c
+++ b/src/lib/eina_iterator.c
@@ -25,10 +25,12 @@
 
 #include <stdlib.h>
 
+#include "eina_config.h"
 #include "eina_private.h"
 
-#include "eina_iterator.h"
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_iterator.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -38,6 +40,8 @@
  * @cond LOCAL
  */
 
+static const char EINA_MAGIC_ITERATOR_STR[] = "Eina Iterator";
+
 #define EINA_MAGIC_CHECK_ITERATOR(d)				\
   do {								\
     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ITERATOR))		\
@@ -78,6 +82,40 @@
  */
 
 /**
+ * @internal
+ * @brief Initialize the iterator module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the iterator module of Eina. It is called by
+ * eina_init().
+ *
+ * @see eina_init()
+ */
+Eina_Bool
+eina_iterator_init(void)
+{
+   return eina_magic_string_set(EINA_MAGIC_ITERATOR, EINA_MAGIC_ITERATOR_STR);
+}
+
+/**
+ * @internal
+ * @brief Shut down the iterator module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the iterator module set up by
+ * eina_iterator_init(). It is called by eina_shutdown().
+ *
+ * @see eina_shutdown()
+ */
+Eina_Bool
+eina_iterator_shutdown(void)
+{
+   return EINA_TRUE;
+}
+
+/**
  * @brief Free an iterator.
  *
  * @param iterator The iterator to free.
diff --git a/src/lib/eina_lalloc.c b/src/lib/eina_lalloc.c
index 767e123..a93594c 100644
--- a/src/lib/eina_lalloc.c
+++ b/src/lib/eina_lalloc.c
@@ -22,9 +22,12 @@
 
 #include <stdlib.h>
 
-#include "eina_lalloc.h"
+#include "eina_config.h"
 #include "eina_private.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_lalloc.h"
 
 /*============================================================================*
  *                                  Local                                     *
diff --git a/src/lib/eina_list.c b/src/lib/eina_list.c
index da63a82..12aa0b6 100644
--- a/src/lib/eina_list.c
+++ b/src/lib/eina_list.c
@@ -1,3 +1,5 @@
+// vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+
 /* EINA - EFL data type library
  * Copyright (C) 2002-2008 Carsten Haitzler, Gustavo Sverzut Barbieri, Tilman Sauerbeck,
  *                         Vincent Torri, Cedric Bail, Jorge Luis Zapata Muga,
@@ -73,11 +75,13 @@
 #endif
 
 #include "eina_config.h"
+#include "eina_private.h"
 #include "eina_error.h"
-#include "eina_list.h"
 #include "eina_mempool.h"
-#include "eina_private.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_list.h"
 
 
 /*============================================================================*
@@ -88,6 +92,12 @@
  * @cond LOCAL
  */
 
+static const char EINA_MAGIC_LIST_STR[] = "Eina List";
+static const char EINA_MAGIC_LIST_ITERATOR_STR[] = "Eina List Iterator";
+static const char EINA_MAGIC_LIST_ACCESSOR_STR[] = "Eina List Accessor";
+static const char EINA_MAGIC_LIST_ACCOUNTING_STR[] = "Eina List Accounting";
+
+
 #define EINA_MAGIC_CHECK_LIST(d, ...)				\
   do {								\
     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_LIST))			\
@@ -151,9 +161,19 @@ struct _Eina_Accessor_List
    EINA_MAGIC
 };
 
-static int _eina_list_init_count = 0;
 static Eina_Mempool *_eina_list_mp = NULL;
 static Eina_Mempool *_eina_list_accounting_mp = NULL;
+static int _eina_list_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_list_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_list_log_dom, __VA_ARGS__)
 
 static inline Eina_List_Accounting*
 _eina_list_mempool_accounting_new(__UNUSED__ Eina_List *list)
@@ -250,7 +270,7 @@ eina_list_iterator_next(Eina_Iterator_List *it, void **data)
    EINA_MAGIC_CHECK_LIST_ITERATOR(it, EINA_FALSE);
 
    if (it->current == NULL) return EINA_FALSE;
-   if (data) *data = eina_list_data_get(it->current);
+   *data = eina_list_data_get(it->current);
 
    it->current = eina_list_next(it->current);
 
@@ -263,7 +283,7 @@ eina_list_iterator_prev(Eina_Iterator_List *it, void **data)
    EINA_MAGIC_CHECK_LIST_ITERATOR(it, EINA_FALSE);
 
    if (it->current == NULL) return EINA_FALSE;
-   if (data) *data = eina_list_data_get(it->current);
+   *data = eina_list_data_get(it->current);
 
    it->current = eina_list_prev(it->current);
 
@@ -295,7 +315,7 @@ eina_list_accessor_get_at(Eina_Accessor_List *it, unsigned int index, void **dat
 
    EINA_MAGIC_CHECK_LIST_ACCESSOR(it, EINA_FALSE);
 
-   if (index > eina_list_count(it->head)) return EINA_FALSE;
+   if (index >= eina_list_count(it->head)) return EINA_FALSE;
 
    if (it->index == index)
      {
@@ -351,7 +371,7 @@ eina_list_accessor_get_at(Eina_Accessor_List *it, unsigned int index, void **dat
    it->current = over;
    it->index = index;
 
-   if (data) *data = eina_list_data_get(it->current);
+   *data = eina_list_data_get(it->current);
    return EINA_TRUE;
 }
 
@@ -431,130 +451,92 @@ eina_list_sort_merge(Eina_List *a, Eina_List *b, Eina_Compare_Cb func)
  */
 
 /**
+ * @internal
  * @brief Initialize the list module.
  *
- * @return 1 or greater on success, 0 on error.
- *
- * This function sets up the error, magic and mempool modules of
- * Eina. It is also called by eina_init(). It returns 0 on failure,
- * otherwise it returns the number of times it has already been
- * called. If Eina has been configured with the default memory pool,
- * then the memory pool used in an Eina list will be
- * "pass_through". Otherwise, the environment variable EINA_MEMPOOL is
- * read and its value is chosen as memory pool ; if EINA_MEMPOOL is
- * not defined, then the "chained_mempool" memory pool is chosen. If
- * the memory pool is not found, then eina_list_init() return @c 0.
- * See eina_error_init(), eina_magic_string_init() and
- * eina_mempool_init() for the documentation of the initialisation of
- * the dependency modules.
- *
- * When no more Eina lists are used, call eina_list_shutdown() to shut
- * down the list module.
- *
- * @see eina_error_init()
- * @see eina_magic_string_init()
- * @see eina_mempool_init()
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the list module of Eina. It is called by
+ * eina_init().
+ *
+ * This function creates mempool to speed up list node and accounting
+ * management, using EINA_MEMPOOL environment variable if it is set to
+ * choose the memory pool type to use.
+ *
+ * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_list_init(void)
 {
-   const char *choice;
+   const char *choice, *tmp;
 
-   if (!_eina_list_init_count)
+   _eina_list_log_dom = eina_log_domain_register("eina_list", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_list_log_dom < 0)
      {
-	if (!eina_error_init())
-	  {
-	     fprintf(stderr, "Could not initialize eina error module\n");
-	     return 0;
-	  }
-
-	if (!eina_magic_string_init())
-	  {
-	     EINA_ERROR_PERR("ERROR: Could not initialize eina magic string module.\n");
-	     goto on_magic_string_fail;
-	  }
-
-	if (!eina_mempool_init())
-	  {
-	     EINA_ERROR_PERR("ERROR: Could not initialize eina mempool module.\n");
-	     goto on_mempool_fail;
-	  }
+	EINA_LOG_ERR("Could not register log domain: eina_list");
+	return EINA_FALSE;
+     }
 
 #ifdef EINA_DEFAULT_MEMPOOL
-       choice = "pass_through";
+   choice = "pass_through";
 #else
-       if (!(choice = getenv("EINA_MEMPOOL")))
-	 choice = "chained_mempool";
+   choice = "chained_mempool";
 #endif
+   tmp = getenv("EINA_MEMPOOL");
+   if (tmp && tmp[0])
+     choice = tmp;
 
-       _eina_list_mp = eina_mempool_add(choice, "list", NULL,
-					sizeof (Eina_List), 320);
-       if (!_eina_list_mp)
-         {
-           EINA_ERROR_PERR("ERROR: Mempool for list cannot be allocated in list init.\n");
-	   goto on_init_fail;
-         }
-       _eina_list_accounting_mp = eina_mempool_add(choice, "list_accounting", NULL,
-						   sizeof (Eina_List_Accounting), 80);
-       if (!_eina_list_accounting_mp)
-         {
-           EINA_ERROR_PERR("ERROR: Mempool for list accounting cannot be allocated in list init.\n");
-	   eina_mempool_del(_eina_list_mp);
-	   goto on_init_fail;
-         }
-
-       eina_magic_string_set(EINA_MAGIC_ITERATOR,
-			     "Eina Iterator");
-       eina_magic_string_set(EINA_MAGIC_ACCESSOR,
-			     "Eina Accessor");
-       eina_magic_string_set(EINA_MAGIC_LIST,
-			     "Eina List");
-       eina_magic_string_set(EINA_MAGIC_LIST_ITERATOR,
-			     "Eina List Iterator");
-       eina_magic_string_set(EINA_MAGIC_LIST_ACCESSOR,
-			     "Eina List Accessor");
-       eina_magic_string_set(EINA_MAGIC_LIST_ACCOUNTING,
-			     "Eina List Accounting");
+   _eina_list_mp = eina_mempool_add
+     (choice, "list", NULL, sizeof(Eina_List), 320);
+   if (!_eina_list_mp)
+     {
+	ERR("ERROR: Mempool for list cannot be allocated in list init.");
+	goto on_init_fail;
+     }
+   _eina_list_accounting_mp = eina_mempool_add
+     (choice, "list_accounting", NULL, sizeof(Eina_List_Accounting), 80);
+   if (!_eina_list_accounting_mp)
+     {
+	ERR("ERROR: Mempool for list accounting cannot be allocated in list init.");
+	eina_mempool_del(_eina_list_mp);
+	goto on_init_fail;
      }
 
-   return ++_eina_list_init_count;
+#define EMS(n) eina_magic_string_static_set(n, n##_STR)
+   EMS(EINA_MAGIC_LIST);
+   EMS(EINA_MAGIC_LIST_ITERATOR);
+   EMS(EINA_MAGIC_LIST_ACCESSOR);
+   EMS(EINA_MAGIC_LIST_ACCOUNTING);
+#undef EMS
+
+   return EINA_TRUE;
 
  on_init_fail:
-   eina_mempool_shutdown();
- on_mempool_fail:
-   eina_magic_string_shutdown();
- on_magic_string_fail:
-   eina_error_shutdown();
-   return 0;
+   eina_log_domain_unregister(_eina_list_log_dom);
+   _eina_list_log_dom = -1;
+   return EINA_FALSE;
 }
 
 /**
+ * @internal
  * @brief Shut down the list module.
  *
- * @return 0 when the list module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the list module set up by
+ * eina_list_init(). It is called by eina_shutdown().
  *
- * This function shuts down the mempool, magic and error modules set
- * up by eina_list_init(). It is also called by eina_shutdown(). It
- * returns 0 when it is called the same number of times than
- * eina_list_init().
+ * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_list_shutdown(void)
 {
-   --_eina_list_init_count;
+   eina_mempool_del(_eina_list_accounting_mp);
+   eina_mempool_del(_eina_list_mp);
 
-   if (!_eina_list_init_count)
-     {
-	eina_mempool_del(_eina_list_accounting_mp);
-	eina_mempool_del(_eina_list_mp);
-
-	eina_mempool_shutdown();
-	eina_magic_string_shutdown();
-	eina_error_shutdown();
-     }
-
-   return _eina_list_init_count;
+   eina_log_domain_unregister(_eina_list_log_dom);
+   _eina_list_log_dom = -1;
+   return EINA_TRUE;
 }
 
 /**
@@ -863,6 +845,41 @@ eina_list_prepend_relative_list(Eina_List *list, const void *data, Eina_List *re
 }
 
 /**
+ * @brief Insert a new node into a sorted list.
+ *
+ * @param list The given linked list, @b must be sorted.
+ * @param data The data to insert sorted.
+ * @return A list pointer.
+ *
+ * This function inserts values into a linked list assuming it was
+ * sorted and the result will be sorted. If @p list is @c NULLL, a new
+ * list is returned. On success, a new list pointer that should be
+ * used in place of the one given to this function is
+ * returned. Otherwise, the old pointer is returned. See eina_error_get().
+ *
+ * @note O(log2(n)) comparisons (calls to func) average/worst case
+ * performance as it uses eina_list_search_sorted_near_list() and thus
+ * is bounded to that. As said in eina_list_search_sorted_near_list(),
+ * lists do not have O(1) access time, so walking to the correct node
+ * can be costly, consider worst case to be almost O(n) pointer
+ * dereference (list walk).
+ */
+EAPI Eina_List *
+eina_list_sorted_insert(Eina_List *list, Eina_Compare_Cb func, const void *data)
+{
+   Eina_List *lnear;
+   int cmp;
+
+   if (!list) return eina_list_append(NULL, data);
+
+   lnear = eina_list_search_sorted_near_list(list, func, data, &cmp);
+   if (cmp < 0)
+     return eina_list_append_relative_list(list, data, lnear);
+   else
+     return eina_list_prepend_relative_list(list, data, lnear);
+}
+
+/**
  * @brief Remove the first instance of the specified data from the given list.
  *
  * @param list The given list.
@@ -884,7 +901,7 @@ eina_list_remove(Eina_List *list, const void *data)
    if (list) EINA_MAGIC_CHECK_LIST(list, NULL);
 
    l = eina_list_data_find_list(list, data);
-             return eina_list_remove_list(list, l);
+   return eina_list_remove_list(list, l);
 }
 
 /**
@@ -900,7 +917,9 @@ eina_list_remove(Eina_List *list, const void *data)
  * @c NULL, it returns @p list, otherwise, a new list pointer that
  * should be used in place of the one passed to this function.
  *
- * The following code gives an example.
+ * The following code gives an example (notice we use EINA_LIST_FOREACH
+ * instead of EINA_LIST_FOREACH_SAFE because we stop the loop after
+ * removing the current node).
  *
  * @code
  * extern Eina_List *list;
@@ -1405,13 +1424,18 @@ eina_list_clone(const Eina_List *list)
  *
  * This function sorts @p list. @p size if the number of the first
  * element to sort. If @p size is 0 or greater than the number of
- * elements in @p list, all the elemnts are sorted. @p func is used to
+ * elements in @p list, all the elements are sorted. @p func is used to
  * compare two elements of @p list. If @p list or @p func are @c NULL,
  * this function returns @c NULL.
  *
  * @note @b in-place: this will change the given list, so you should
  * now point to the new list head that is returned by this function.
  *
+ * @note worst case is O(n * log2(n)) comparisons (calls to func()),
+ * O(n) comparisons average case. That means that for 1,000,000 list
+ * elements, sort will usually do 1,000,000 comparisons, but may do up
+ * to 20,000,000.
+ *
  * Example:
  * @code
  * int
@@ -1508,30 +1532,113 @@ eina_list_sort(Eina_List *list, unsigned int size, Eina_Compare_Cb func)
  *
  * Both left and right does not exist anymore after the merge.
  *
+ * @note merge cost is O(n), being @b n the size of the smallest
+ * list. This is due the need to fix accounting of that segment,
+ * making count and last access O(1).
  */
 EAPI Eina_List *
 eina_list_merge(Eina_List *left, Eina_List *right)
 {
+   unsigned int n_left, n_right;
+
    if (!left) return right;
    if (!right) return left;
 
    left->accounting->last->next = right;
    right->prev = left->accounting->last;
 
-   left->accounting->last = right->accounting->last;
-   left->accounting->count += right->accounting->count;
+   n_left = left->accounting->count;
+   n_right = right->accounting->count;
 
-   _eina_list_mempool_accounting_free(right->accounting);
+   if (n_left >= n_right)
+     {
+	Eina_List *itr = right;
+	left->accounting->last = right->accounting->last;
+	left->accounting->count += n_right;
 
-   while (right)
+	_eina_list_mempool_accounting_free(right->accounting);
+
+	do
+	  {
+	     itr->accounting = left->accounting;
+	     itr = itr->next;
+	  }
+	while (itr);
+     }
+   else
      {
-	right->accounting = left->accounting;
-	right = right->next;
+	Eina_List *itr = left->accounting->last;
+	right->accounting->count += n_left;
+
+	_eina_list_mempool_accounting_free(left->accounting);
+
+	do
+	  {
+	     itr->accounting = right->accounting;
+	     itr = itr->prev;
+	  }
+	while (itr);
      }
 
    return left;
 }
 
+
+/**
+ * @brief Split a list into 2 lists.
+ *
+ * @param list List to split.
+ * @param relative The list will be split after @p relative.
+ * @param right The head of the new right list.
+ * @return The new left list
+ *
+ * This function split @p list into two lists ( left and right ) after the node @p relative. @p Relative
+ * will become the last node of the left list. If @p list or @p right are NULL list is returns.
+ * If @p relative is NULL right is set to @p list and NULL is returns.
+ * If @p relative is the last node of @p list list is returns and @p right is set to NULL.
+ *
+ * list does not exist anymore after the split.
+ *
+ */
+   EAPI Eina_List *
+eina_list_split_list(Eina_List *list, Eina_List *relative, Eina_List **right)
+{
+   Eina_List *next;
+   Eina_List *itr;
+
+   if(!right) return list;
+   *right = NULL;
+
+   if (!list) return NULL;
+   if (!relative)
+     {
+	*right = list;
+	return NULL;
+     }
+   if (relative == eina_list_last(list)) return list;
+
+   next = eina_list_next(relative);
+   next->prev = NULL;
+   next->accounting = _eina_list_mempool_accounting_new(next);
+   next->accounting->last = list->accounting->last;
+   *right = next;
+
+   itr = next;
+   do
+     {
+	itr->accounting = next->accounting;
+	next->accounting->count++;
+	itr = itr->next;
+     }
+   while (itr);
+
+   relative->next = NULL;
+   list->accounting->last = relative;
+   list->accounting->count = list->accounting->count - next->accounting->count;
+
+   return list;
+}
+
 /**
  * @brief Merge two sorted list according to the ordering func will return.
  *
@@ -1641,66 +1748,214 @@ eina_list_sorted_merge(Eina_List *left, Eina_List *right, Eina_Compare_Cb func)
    return ret;
 }
 
+/**
+ * @brief Returns node nearest to data is in the sorted list.
+ *
+ * @param list The list to search for data, @b must be sorted.
+ * @param func A function pointer that can handle comparing the list data nodes.
+ * @param data reference value to search.
+ * @param result_cmp if provided returns the result of
+ * func(node->data, data) node being the last (returned) node. If node
+ * was found (exact match), then it is 0. If returned node is smaller
+ * than requested data, it is less than 0 and if it's bigger it's
+ * greater than 0. It is the last value returned by func().
+ * @return the nearest node, NULL if not found.
+ *
+ * This can be used to check if some value is inside the list and get
+ * the nearest container node in this case. It should be used when list is
+ * known to be sorted as it will do binary search for results.
+ *
+ * Example: imagine user gives a string, you check if it's in the list
+ * before duplicating its contents, otherwise you want to insert it
+ * sorted. In this case you get the result of this function and either
+ * append or prepend the value.
+ *
+ * @note O(log2(n)) average/worst case performance, for 1,000,000
+ * elements it will do a maximum of 20 comparisons. This is much
+ * faster than the 1,000,000 comparisons made naively walking the list
+ * from head to tail, so depending on the number of searches and
+ * insertions, it may be worth to eina_list_sort() the list and do he
+ * searches later. As lists do not have O(1) access time, walking to
+ * the correct node can be costly, consider worst case to be almost
+ * O(n) pointer dereference (list walk).
+ *
+ * @see eina_list_search_sorted_list()
+ * @see eina_list_sort()
+ * @see eina_list_sorted_merge()
+ */
 EAPI Eina_List *
-eina_list_search_sorted_near_list(const Eina_List *list, Eina_Compare_Cb func, const void *data)
+eina_list_search_sorted_near_list(const Eina_List *list, Eina_Compare_Cb func, const void *data, int *result_cmp)
 {
    const Eina_List *ct;
-   void *d;
-   unsigned int inf, sup, cur, tmp;
-   int part;
+   unsigned int inf, sup, cur;
+   int cmp;
 
-   if (!list) return NULL;
+   if (!list)
+     {
+	if (result_cmp) *result_cmp = 0;
+	return NULL;
+     }
 
-   inf = 0;
-   sup = eina_list_count(list) ;
-   cur = sup >> 1;
-   ct = eina_list_nth_list(list, cur);
-   d = eina_list_data_get(ct);
+   if (list->accounting->count == 1)
+     {
+	if (result_cmp) *result_cmp = func(list->data, data);
+	return (Eina_List *)list;
+     }
 
-   while ((part = func(d, data)))
+   /* list walk is expensive, do quick check: tail */
+   ct = list->accounting->last;
+   cmp = func(ct->data, data);
+   if (cmp <= 0)
+     goto end;
+
+   /* list walk is expensive, do quick check: head */
+   ct = list;
+   cmp = func(ct->data, data);
+   if (cmp >= 0)
+     goto end;
+
+   /* inclusive bounds */
+   inf = 1;
+   sup = list->accounting->count - 2;
+   cur = 1;
+   ct = list->next;
+
+   /* no loop, just compare if comparison value is important to caller */
+   if (inf > sup)
      {
-       if (inf == sup
-	   || (part < 0 && inf == cur)
-	   || (part > 0 && sup == cur))
-	 return (Eina_List*) ct;
-       if (part < 0)
-          inf = (sup + inf) >> 1;
-       else
-          sup = (sup + inf) >> 1;
-       /* Faster to move directly from where we are to the new position than using eina_list_nth_list. */
-       tmp = (sup + inf) >> 1;
-       if (tmp < cur)
-	 for (; cur != tmp; cur--, ct = eina_list_prev(ct))
-	   ;
-       else
-	 for (; cur != tmp; cur++, ct = eina_list_next(ct))
-	   ;
-       d = eina_list_data_get(ct);
+	if (result_cmp) cmp = func(ct->data, data);
+	goto end;
      }
 
-   return (Eina_List*) ct;
+   while (inf <= sup)
+     {
+	unsigned int tmp = cur;
+	cur = inf + ((sup - inf) >> 1);
+	if      (tmp < cur) for (; tmp != cur; tmp++, ct = ct->next);
+	else if (tmp > cur) for (; tmp != cur; tmp--, ct = ct->prev);
+
+	cmp = func(ct->data, data);
+	if (cmp == 0)
+	  break;
+	else if (cmp < 0)
+	  inf = cur + 1;
+	else if (cmp > 0)
+	  {
+	     if (cur > 0)
+	       sup = cur - 1;
+	     else break;
+	  }
+	else break;
+     }
+
+ end:
+   if (result_cmp) *result_cmp = cmp;
+   return (Eina_List *)ct;
 }
 
+/**
+ * @brief Returns node if data is in the sorted list.
+ *
+ * @param list The list to search for data, @b must be sorted.
+ * @param func A function pointer that can handle comparing the list data nodes.
+ * @param data reference value to search.
+ * @return the node if func(node->data, data) == 0, NULL if not found.
+ *
+ * This can be used to check if some value is inside the list and get
+ * the container node in this case. It should be used when list is
+ * known to be sorted as it will do binary search for results.
+ *
+ * Example: imagine user gives a string, you check if it's in the list
+ * before duplicating its contents.
+ *
+ * @note O(log2(n)) average/worst case performance, for 1,000,000
+ * elements it will do a maximum of 20 comparisons. This is much
+ * faster than the 1,000,000 comparisons made by
+ * eina_list_search_unsorted_list(), so depending on the number of
+ * searches and insertions, it may be worth to eina_list_sort() the
+ * list and do he searches later. As said in
+ * eina_list_search_sorted_near_list(), lists do not have O(1) access
+ * time, so walking to the correct node can be costly, consider worst
+ * case to be almost O(n) pointer dereference (list walk).
+ *
+ * @see eina_list_search_sorted()
+ * @see eina_list_sort()
+ * @see eina_list_sorted_merge()
+ * @see eina_list_search_unsorted_list()
+ * @see eina_list_search_sorted_near_list()
+ */
 EAPI Eina_List *
 eina_list_search_sorted_list(const Eina_List *list, Eina_Compare_Cb func, const void *data)
 {
    Eina_List *lnear;
-   void      *d;
+   int cmp;
 
-   lnear = eina_list_search_sorted_near_list(list, func, data);
+   lnear = eina_list_search_sorted_near_list(list, func, data, &cmp);
    if (!lnear) return NULL;
-   d = eina_list_data_get(lnear);
-   if (!func(d, data))
+   if (cmp == 0)
      return lnear;
    return NULL;
 }
 
+
+/**
+ * @brief Returns node data if it is in the sorted list.
+ *
+ * @param list The list to search for data, @b must be sorted.
+ * @param func A function pointer that can handle comparing the list data nodes.
+ * @param data reference value to search.
+ * @return the node value (@c node->data) if func(node->data, data) == 0,
+ * NULL if not found.
+ *
+ * This can be used to check if some value is inside the list and get
+ * the existing instance in this case. It should be used when list is
+ * known to be sorted as it will do binary search for results.
+ *
+ * Example: imagine user gives a string, you check if it's in the list
+ * before duplicating its contents.
+ *
+ * @note O(log2(n)) average/worst case performance, for 1,000,000
+ * elements it will do a maximum of 20 comparisons. This is much
+ * faster than the 1,000,000 comparisons made by
+ * eina_list_search_unsorted(), so depending on the number of
+ * searches and insertions, it may be worth to eina_list_sort() the
+ * list and do he searches later. As said in
+ * eina_list_search_sorted_near_list(), lists do not have O(1) access
+ * time, so walking to the correct node can be costly, consider worst
+ * case to be almost O(n) pointer dereference (list walk).
+ *
+ * @see eina_list_search_sorted_list()
+ * @see eina_list_sort()
+ * @see eina_list_sorted_merge()
+ * @see eina_list_search_unsorted_list()
+ */
 EAPI void *
 eina_list_search_sorted(const Eina_List *list, Eina_Compare_Cb func, const void *data)
 {
    return eina_list_data_get(eina_list_search_sorted_list(list, func, data));
 }
 
+/**
+ * @brief Returns node if data is in the unsorted list.
+ *
+ * @param list The list to search for data, may be unsorted.
+ * @param func A function pointer that can handle comparing the list data nodes.
+ * @param data reference value to search.
+ * @return the node if func(node->data, data) == 0, NULL if not found.
+ *
+ * This can be used to check if some value is inside the list and get
+ * the container node in this case.
+ *
+ * Example: imagine user gives a string, you check if it's in the list
+ * before duplicating its contents.
+ *
+ * @note this is expensive and may walk the whole list, it's order-N,
+ * that is for 1,000,000 elements list it may walk and compare
+ * 1,000,000 nodes.
+ *
+ * @see eina_list_search_sorted_list()
+ * @see eina_list_search_unsorted()
+ */
 EAPI Eina_List *
 eina_list_search_unsorted_list(const Eina_List *list, Eina_Compare_Cb func, const void *data)
 {
@@ -1715,6 +1970,28 @@ eina_list_search_unsorted_list(const Eina_List *list, Eina_Compare_Cb func, cons
    return NULL;
 }
 
+/**
+ * @brief Returns node data if it is in the unsorted list.
+ *
+ * @param list The list to search for data, may be unsorted.
+ * @param func A function pointer that can handle comparing the list data nodes.
+ * @param data reference value to search.
+ * @return the node value (@c node->data) if func(node->data, data) == 0,
+ * NULL if not found.
+ *
+ * This can be used to check if some value is inside the list and get
+ * the existing instance in this case.
+ *
+ * Example: imagine user gives a string, you check if it's in the list
+ * before duplicating its contents.
+ *
+ * @note this is expensive and may walk the whole list, it's order-N,
+ * that is for 1,000,000 elements list it may walk and compare
+ * 1,000,000 nodes.
+ *
+ * @see eina_list_search_sorted()
+ * @see eina_list_search_unsorted_list()
+ */
 EAPI void *
 eina_list_search_unsorted(const Eina_List *list, Eina_Compare_Cb func, const void *data)
 {
diff --git a/src/lib/eina_log.c b/src/lib/eina_log.c
new file mode 100644
index 0000000..1b90bb1
--- /dev/null
+++ b/src/lib/eina_log.c
@@ -0,0 +1,1508 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2007-2009 Jorge Luis Zapata Muga, Cedric Bail, Andre Dieb
+ * Martins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * @page tutorial_log_page log Tutorial
+ *
+ * @section tutorial_log_introduction Introduction
+ *
+ * The Eina Log module provides logging facilities for libraries and
+ * applications. It provides colored logging, basic logging levels (error,
+ * warning, debug, info, critical) and loggers - called logging domains -
+ * which will be covered on next sections.
+ *
+ * @section tutorial_log_basic_usage Basic Usage
+ *
+ * Log messages can be displayed using the following macros:
+ *
+ * @li EINA_LOG_ERR(),
+ * @li EINA_LOG_INFO(),
+ * @li EINA_LOG_WARN(),
+ * @li EINA_LOG_DBG().
+ *
+ * Here is an example:
+ *
+ * @code
+ * #include <stdlib.h>
+ * #include <stdio.h>
+ *
+ * #include <Eina.h>
+ *
+ * void test(int i)
+ * {
+ *    EINA_LOG_DBG("Entering test");
+ *
+ *    if (i < 0)
+ *    {
+ *        EINA_LOG_ERR("Argument is negative");
+ *        return;
+ *    }
+ *
+ *    EINA_LOG_INFO("argument non negative");
+ *
+ *    EINA_LOG_DBG("Exiting test");
+ * }
+ *
+ * int main(void)
+ * {
+ *    if (!eina_init())
+ *    {
+ *        printf("log during the initialization of Eina_Log module\n");
+ *        return EXIT_FAILURE;
+ *    }
+ *
+ *    test(-1);
+ *    test(0);
+ *
+ *    eina_shutdown();
+ *
+ *    return EXIT_SUCCESS;
+ * }
+ * @endcode
+ *
+ * If you compiled Eina without debug mode, execution will yield only one log
+ * message, which is "argument is negative".
+ *
+ * Here we introduce the concept of logging domains (or loggers), which might
+ * already be familiar to readers. It is basically a way to separate a set of
+ * log messages into a context (e.g. a module) and provide a way of controlling
+ * this set as a whole.
+ *
+ * For example, suppose you have 3 different modules on your application and you
+ * want to get logging only from one of them (e.g. create some sort of filter).
+ * For achieving that, all you need to do is create a logging domain for each
+ * module so that all logging inside a module can be considered as a whole.
+ *
+ * Logging domains are specified by a name, color applied to the name and the
+ * level. The first two (name and color) are set through code, that is, inside
+ * your application/module/library.
+ *
+ * The level is used for controlling which messages should appear. It
+ * specifies the lowest level that should be displayed (e.g. a message
+ * with level 11 being logged on a domain with level set to 10 would be
+ * displayed, while a message with level 9 wouldn't).
+ *
+ * The domain level is set during runtime (in contrast with the name and
+ * color) through the environment variable EINA_LOG_LEVELS. This variable
+ * expects a list in the form domain_name1:level1,domain_name2:level2,... . For
+ * example:
+ *
+ * @code
+ *
+ * EINA_LOG_LEVELS=mymodule1:5,mymodule2:2,mymodule3:0 ./myapp
+ *
+ * @encode
+ *
+ * This line would set mymodule1 level to 5, mymodule2 level to 2 and mymodule3
+ * level to 0.
+ *
+ *
+ * There's also a global logger to which EINA_LOG_(ERR, DBG, INFO, CRIT, WARN)
+ * macros do log on. It is a logger that is created internally by Eina Log with
+ * an empty name and can be used for general logging (where logging domains do
+ * not apply).
+ *
+ * Since this global logger doesn't have a name, you can't set its level through
+ * EINA_LOG_LEVELS variable. Here we introduce a second environment variable
+ * that is a bit more special: EINA_LOG_LEVEL.
+ *
+ * This variable specifies the level of the global logging domain and the level
+ * of domains that haven't been set through EINA_LOG_LEVELS. Here's an example:
+ *
+ * @code
+ *
+ * EINA_LOG_LEVEL=3 EINA_LOG_LEVELS=module1:10,module3:2 ./myapp
+ *
+ * @endcode
+ *
+ * Supposing you have modules named "module1", "module2" and "module3", this
+ * line would result in module1 with level 10, module2 with level 3 and module3
+ * with level 2. Note that module2's level wasn't specified, so it's level is
+ * set to the global level. This way we can easily apply filters to multiple
+ * domains with only one parameter (EINA_LOG_LEVEL=num).
+ *
+ * The global level (EINA_LOG_LEVEL) can also be set through code, using
+ * eina_log_level_set() function.
+ *
+ *
+ * While developing your libraries or applications, you may notice that 
+ * EINA_LOG_DOM_(ERR, DBG, INFO, CRIT, WARN) macros also print out 
+ * messages from eina itself. Here we introduce another environment variable
+ * that is a bit more special: EINA_LOG_LEVELS_GLOB.
+ *
+ * This variable allows you to disable the logging of any/all code in eina itself.
+ * This is useful when developing your libraries or applications so that you can 
+ * see your own domain's messages easier without having to sift through a lot of 
+ * internal eina debug messages. Here's an example:
+ *
+ * @code
+ *
+ * EINA_LOG_LEVEL=3 EINA_LOG_LEVELS_GLOB=eina_*:0 ./myapp
+ *
+ * @endcode
+ *
+ * This will disable eina_log output from all internal eina code thus allowing 
+ * you to see your own domain messages easier.
+ * 
+ * @section tutorial_log_advanced_display Advanced usage of print callbacks
+ *
+ * The log module allows the user to change the way
+ * eina_log_print() displays the messages. It suffices to pass to
+ * eina_log_print_cb_set() the function used to display the
+ * message. That  function must be of type #Eina_log_Print_Cb. As a
+ * custom data can be passed to that callback, powerful display
+ * messages can be displayed.
+ *
+ * It is suggested to not use __FILE__, __FUNCTION__ or __LINE__ when
+ * writing that callback, but when defining macros (like
+ * EINA_LOG_ERR() and other macros).
+ *
+ * Here is an example of custom callback, whose behavior can be
+ * changed at runtime:
+ *
+ * @code
+ * #include <stdlib.h>
+ * #include <stdio.h>
+ *
+ * #include <eina_log.h>
+ *
+ * #define log(fmt, ...)                                    \
+ *    eina_log_print(EINA_LOG_LEVEL_ERR, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
+ *
+ * typedef struct _Data Data;
+ *
+ * struct _Data
+ * {
+ *    int to_stderr;
+ * };
+ *
+ * void print_cb(const Eina_Log_Domain *domain,
+ *               Eina_Log_Level level,
+ *               const char *file,
+ *               const char *fnc,
+ *               int line,
+ *               const char *fmt,
+ *               void *data,
+ *               va_list args)
+ * {
+ *    Data *d;
+ *    FILE *output;
+ *    char *str;
+ *
+ *    d = (Data *)data;
+ *    if (d->to_stderr)
+ *    {
+ *       output = stderr;
+ *       str = "stderr";
+ *    }
+ *    else
+ *    {
+ *       output = stdout;
+ *       str = "stdout";
+ *    }
+ *
+ *    fprintf(output, "%s:%s:%s (%d) %s: ",
+ *            domain->domain_str, file, fnc, line, str);
+ *    vfprintf(output, fmt, args);
+ *    putc('\n', output);
+ * }
+ *
+ * void test(Data *data, int i)
+ * {
+ *    if (i < 0)
+ *       data->to_stderr = 0;
+ *    else
+ *       data->to_stderr = 1;
+ *
+ *    log("log message...");
+ * }
+ *
+ * int main(void)
+ * {
+ *    Data data;
+ *
+ *    if (!eina_init())
+ *    {
+ *       printf("log during the initialization of Eina_Log module\n");
+ *       return EXIT_FAILURE;
+ *    }
+ *
+ *    eina_log_print_cb_set(print_cb, &data);
+ *
+ *    test(&data, -1);
+ *    test(&data, 0);
+ *
+ *    eina_shutdown();
+ *
+ *    return EXIT_SUCCESS;
+ * }
+ * @endcode
+ *
+ * @addtogroup Eina_Log_Group Log
+ *
+ * @{
+ *
+ * The default log level value is set by default to
+ * #EINA_LOG_LEVEL_DBG if Eina is compiled with debug mode, or to
+ * #EINA_LOG_LEVEL_ERR otherwise. That value can be overwritten by
+ * setting the environment variable EINA_LOG_LEVEL. This function
+ * checks the value of that environment variable in the first
+ * call. Its value must be a number between 0 and 4, to match the log
+ * levels #EINA_LOG_LEVEL_CRITICAL, #EINA_LOG_LEVEL_ERR,
+ * #EINA_LOG_LEVEL_WARN, #EINA_LOG_LEVEL_INFO and
+ * #EINA_LOG_LEVEL_DBG. That value can also be set later with
+ * eina_log_log_level_set(). When logging domains are created, they
+ * will get either this value or specific value given with
+ * EINA_LOG_LEVELS that takes the format
+ * 'domain_name:level,another_name:other_level'.
+ *
+ * Format and verbosity of messages depend on the logging method, see
+ * eina_log_print_cb_set(). The default logging method is
+ * eina_log_print_cb_stderr(), which will output fancy colored
+ * messages to standard error stream. See its documentation on how to
+ * disable coloring, function or file/line print.
+ *
+ * This module will optionally abort program execution if message
+ * level is below or equal to @c EINA_LOG_LEVEL_CRITICAL and
+ * @c EINA_LOG_ABORT=1.
+ *
+ * @}
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fnmatch.h>
+
+#ifdef HAVE_EVIL
+# include <Evil.h>
+#endif
+
+#include "eina_config.h"
+#include "eina_private.h"
+#include "eina_inlist.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
+#include "eina_safety_checks.h"
+#include "eina_log.h"
+
+#include <assert.h>
+
+/* TODO
+ * + printing logs to stdout or stderr can be implemented
+ * using a queue, useful for multiple threads printing
+ * + add a wrapper for assert?
+ */
+
+/*============================================================================*
+ *                                  Local                                     *
+ *============================================================================*/
+
+/**
+ * @cond LOCAL
+ */
+
+#define EINA_LOG_ENV_ABORT "EINA_LOG_ABORT"
+#define EINA_LOG_ENV_ABORT_LEVEL "EINA_LOG_ABORT_LEVEL"
+#define EINA_LOG_ENV_LEVEL "EINA_LOG_LEVEL"
+#define EINA_LOG_ENV_LEVELS "EINA_LOG_LEVELS"
+#define EINA_LOG_ENV_LEVELS_GLOB "EINA_LOG_LEVELS_GLOB"
+#define EINA_LOG_ENV_COLOR_DISABLE "EINA_LOG_COLOR_DISABLE"
+#define EINA_LOG_ENV_FILE_DISABLE "EINA_LOG_FILE_DISABLE"
+#define EINA_LOG_ENV_FUNCTION_DISABLE "EINA_LOG_FUNCTION_DISABLE"
+
+
+// Structure for storing domain level settings passed from the command line
+// that will be matched with application-defined domains.
+typedef struct _Eina_Log_Domain_Level_Pending Eina_Log_Domain_Level_Pending;
+struct _Eina_Log_Domain_Level_Pending
+{
+   EINA_INLIST;
+   unsigned int level;
+   char name[];
+};
+
+/*
+ * List of levels for domains set by the user before the domains are registered,
+ * updates the domain levels on the first log and clears itself.
+ */
+static Eina_Inlist *_pending_list = NULL;
+static Eina_Inlist *_glob_list = NULL;
+
+// Disable color flag (can be changed through the env var
+// EINA_LOG_ENV_COLOR_DISABLE).
+static Eina_Bool _disable_color = EINA_FALSE;
+static Eina_Bool _disable_file = EINA_FALSE;
+static Eina_Bool _disable_function = EINA_FALSE;
+static Eina_Bool _abort_on_critical = EINA_FALSE;
+static int _abort_level_on_critical = EINA_LOG_LEVEL_CRITICAL;
+
+#ifdef EFL_HAVE_PTHREAD
+#include <pthread.h>
+static Eina_Bool _threads_enabled = EINA_FALSE;
+static pthread_t _main_thread;
+
+#define IS_MAIN(t)  pthread_equal(t, _main_thread)
+#define IS_OTHER(t) EINA_UNLIKELY(!IS_MAIN(t))
+#define CHECK_MAIN(...)							\
+  do {									\
+     if (!IS_MAIN(pthread_self())) {					\
+	fprintf(stderr,							\
+		"ERR: not main thread! current=%lu, main=%lu\n",	\
+		pthread_self(), _main_thread);				\
+	return __VA_ARGS__;						\
+     }									\
+  } while (0)
+
+#ifdef EINA_PTHREAD_SPIN
+static pthread_spinlock_t _log_lock;
+#define LOG_LOCK()								\
+  if(_threads_enabled) \
+  do {									\
+     if (0)								\
+       fprintf(stderr, "+++LOG LOG_LOCKED!   [%s, %lu]\n",			\
+	       __FUNCTION__, pthread_self());				\
+     if (EINA_UNLIKELY(_threads_enabled))				\
+       pthread_spin_lock(&_log_lock);					\
+  } while (0)
+#define LOG_UNLOCK()							\
+  if(_threads_enabled) \
+  do {									\
+     if (EINA_UNLIKELY(_threads_enabled))				\
+       pthread_spin_unlock(&_log_lock);					\
+     if (0)								\
+       fprintf(stderr,							\
+	       "---LOG LOG_UNLOCKED! [%s, %lu]\n",				\
+	       __FUNCTION__, pthread_self());				\
+  } while (0)
+#define INIT() pthread_spin_init(&_log_lock, PTHREAD_PROCESS_PRIVATE);
+#define SHUTDOWN() pthread_spin_destroy(&_log_lock);
+#else
+static pthread_mutex_t _log_mutex = PTHREAD_MUTEX_INITIALIZER;
+#define LOG_LOCK() if(_threads_enabled) pthread_mutex_lock(&_log_mutex);
+#define LOG_UNLOCK() if(_threads_enabled) pthread_mutex_unlock(&_log_mutex);
+#define INIT() do {} while (0)
+#define SHUTDOWN() do {} while (0)
+#endif
+#else
+#define LOG_LOCK() do {} while (0)
+#define LOG_UNLOCK() do {} while (0)
+#define IS_MAIN(t)  (1)
+#define IS_OTHER(t) (0)
+#define CHECK_MAIN(...) do {} while (0)
+#define INIT() do {} while (0)
+#define SHUTDOWN() do {} while (0)
+#endif
+
+
+// List of domains registered
+static Eina_Log_Domain *_log_domains = NULL;
+static int _log_domains_count = 0;
+static int _log_domains_allocated = 0;
+
+// Default function for printing on domains
+static Eina_Log_Print_Cb _print_cb = eina_log_print_cb_stderr;
+static void *_print_cb_data = NULL;
+
+#ifdef DEBUG
+static Eina_Log_Level _log_level = EINA_LOG_LEVEL_DBG;
+#elif DEBUG_CRITICAL
+static Eina_Log_Level _log_level = EINA_LOG_LEVEL_CRITICAL;
+#else
+static Eina_Log_Level _log_level = EINA_LOG_LEVEL_ERR;
+#endif
+
+// Default colors and levels
+static const char *_colors[] = { // + 1 for higher than debug
+  EINA_COLOR_LIGHTRED, // EINA_LOG_LEVEL_CRITICAL
+  EINA_COLOR_RED, // EINA_LOG_LEVEL_ERR
+  EINA_COLOR_YELLOW, // EINA_LOG_LEVEL_WARN
+  EINA_COLOR_GREEN, // EINA_LOG_LEVEL_INFO
+  EINA_COLOR_LIGHTBLUE, // EINA_LOG_LEVEL_DBG
+  EINA_COLOR_BLUE, // Higher than DEBUG
+};
+
+static const char *_names[] = {
+  "CRI",
+  "ERR",
+  "WRN",
+  "INF",
+  "DBG",
+};
+
+static inline void
+eina_log_print_level_name_get(int level, const char **p_name)
+{
+   static char buf[4];
+   if (EINA_UNLIKELY(level < 0))
+     {
+	snprintf(buf, sizeof(buf), "%03d", level);
+	*p_name = buf;
+     }
+   else if (EINA_UNLIKELY(level > EINA_LOG_LEVELS))
+     {
+	snprintf(buf, sizeof(buf), "%03d", level);
+	*p_name = buf;
+     }
+   else
+	*p_name = _names[level];
+}
+
+static inline void
+eina_log_print_level_name_color_get(int level, const char **p_name, const char **p_color)
+{
+   static char buf[4];
+   if (EINA_UNLIKELY(level < 0))
+     {
+	snprintf(buf, sizeof(buf), "%03d", level);
+	*p_name = buf;
+	*p_color = _colors[0];
+     }
+   else if (EINA_UNLIKELY(level > EINA_LOG_LEVELS))
+     {
+	snprintf(buf, sizeof(buf), "%03d", level);
+	*p_name = buf;
+	*p_color = _colors[EINA_LOG_LEVELS];
+     }
+   else
+     {
+	*p_name = _names[level];
+	*p_color = _colors[level];
+     }
+}
+
+#define DECLARE_LEVEL_NAME(level) const char *name; eina_log_print_level_name_get(level, &name)
+#define DECLARE_LEVEL_NAME_COLOR(level) const char *name, *color; eina_log_print_level_name_color_get(level, &name, &color)
+
+/** No threads, No color */
+static void
+eina_log_print_prefix_NOthreads_NOcolor_file_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line)
+{
+   DECLARE_LEVEL_NAME(level);
+   fprintf(fp, "%s:%s %s:%d %s() ", name, d->domain_str, file, line, fnc);
+}
+
+static void
+eina_log_print_prefix_NOthreads_NOcolor_NOfile_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file __UNUSED__, const char *fnc, int line __UNUSED__)
+{
+   DECLARE_LEVEL_NAME(level);
+   fprintf(fp, "%s:%s %s() ", name, d->domain_str, fnc);
+}
+
+static void
+eina_log_print_prefix_NOthreads_NOcolor_file_NOfunc(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc __UNUSED__, int line)
+{
+   DECLARE_LEVEL_NAME(level);
+   fprintf(fp, "%s:%s %s:%d ", name, d->domain_str, file, line);
+}
+
+/* No threads, color */
+static void
+eina_log_print_prefix_NOthreads_color_file_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line)
+{
+   DECLARE_LEVEL_NAME_COLOR(level);
+   fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s %s:%d "
+	   EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
+	   color, name, d->domain_str, file, line, fnc);
+}
+
+static void
+eina_log_print_prefix_NOthreads_color_NOfile_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file __UNUSED__, const char *fnc, int line __UNUSED__)
+{
+   DECLARE_LEVEL_NAME_COLOR(level);
+   fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s "
+	   EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
+	   color, name, d->domain_str, fnc);
+}
+
+static void
+eina_log_print_prefix_NOthreads_color_file_NOfunc(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc __UNUSED__, int line)
+{
+   DECLARE_LEVEL_NAME_COLOR(level);
+   fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s %s:%d ",
+	   color, name, d->domain_str, file, line);
+}
+
+/** threads, No color */
+#ifdef EFL_HAVE_PTHREAD
+static void
+eina_log_print_prefix_threads_NOcolor_file_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line)
+{
+   DECLARE_LEVEL_NAME(level);
+   pthread_t cur = pthread_self();
+   if (IS_OTHER(cur))
+     {
+	fprintf(fp, "%s:%s[T:%lu] %s:%d %s() ",
+		name, d->domain_str, cur, file, line, fnc);
+	return;
+     }
+   fprintf(fp, "%s:%s %s:%d %s() ", name, d->domain_str, file, line, fnc);
+}
+
+static void
+eina_log_print_prefix_threads_NOcolor_NOfile_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file __UNUSED__, const char *fnc, int line __UNUSED__)
+{
+   DECLARE_LEVEL_NAME(level);
+   pthread_t cur = pthread_self();
+   if (IS_OTHER(cur))
+     {
+	fprintf(fp, "%s:%s[T:%lu] %s() ",
+		name, d->domain_str, cur, fnc);
+	return;
+     }
+   fprintf(fp, "%s:%s %s() ", name, d->domain_str, fnc);
+}
+
+static void
+eina_log_print_prefix_threads_NOcolor_file_NOfunc(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc __UNUSED__, int line)
+{
+   DECLARE_LEVEL_NAME(level);
+   pthread_t cur = pthread_self();
+   if (IS_OTHER(cur))
+     {
+	fprintf(fp, "%s:%s[T:%lu] %s:%d ",
+		name, d->domain_str, cur, file, line);
+	return;
+     }
+   fprintf(fp, "%s:%s %s:%d ", name, d->domain_str, file, line);
+}
+
+/* threads, color */
+static void
+eina_log_print_prefix_threads_color_file_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line)
+{
+   DECLARE_LEVEL_NAME_COLOR(level);
+   pthread_t cur = pthread_self();
+   if (IS_OTHER(cur))
+     {
+	fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s[T:"
+		EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] %s:%d "
+		EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
+		color, name, d->domain_str, cur, file, line, fnc);
+	return;
+     }
+   fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s %s:%d "
+	   EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
+	   color, name, d->domain_str, file, line, fnc);
+}
+
+static void
+eina_log_print_prefix_threads_color_NOfile_func(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file __UNUSED__, const char *fnc, int line __UNUSED__)
+{
+   DECLARE_LEVEL_NAME_COLOR(level);
+   pthread_t cur = pthread_self();
+   if (IS_OTHER(cur))
+     {
+	fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s[T:"
+		EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] "
+		EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
+		color, name, d->domain_str, cur, fnc);
+	return;
+     }
+   fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s "
+	   EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
+	   color, name, d->domain_str, fnc);
+}
+
+static void
+eina_log_print_prefix_threads_color_file_NOfunc(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc __UNUSED__, int line)
+{
+   DECLARE_LEVEL_NAME_COLOR(level);
+   pthread_t cur = pthread_self();
+   if (IS_OTHER(cur))
+     {
+	fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s[T:"
+		EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] %s:%d ",
+		color, name, d->domain_str, cur, file, line);
+	return;
+     }
+   fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s %s:%d ",
+	   color, name, d->domain_str, file, line);
+}
+#endif
+
+static void (*_eina_log_print_prefix)(FILE *fp, const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line) = eina_log_print_prefix_NOthreads_color_file_func;
+
+static inline void
+eina_log_print_prefix_update(void)
+{
+   if (_disable_file && _disable_function)
+     {
+	fprintf(stderr, "ERROR: cannot have " EINA_LOG_ENV_FILE_DISABLE " and "
+		EINA_LOG_ENV_FUNCTION_DISABLE " set at the same time, will "
+		"just disable function.\n");
+	_disable_file = 0;
+     }
+
+#define S(NOthread, NOcolor, NOfile, NOfunc) \
+   _eina_log_print_prefix = eina_log_print_prefix_##NOthread##threads_##NOcolor##color_##NOfile##file_##NOfunc##func
+
+#ifdef EFL_HAVE_PTHREAD
+   if (_threads_enabled)
+     {
+	if (_disable_color)
+	  {
+	     if (_disable_file)
+	       S(,NO,NO,);
+	     else if (_disable_function)
+	       S(,NO,,NO);
+	     else
+	       S(,NO,,);
+	  }
+	else
+	  {
+	     if (_disable_file)
+	       S(,,NO,);
+	     else if (_disable_function)
+	       S(,,,NO);
+	     else
+	       S(,,,);
+	  }
+	return;
+     }
+#endif
+
+   if (_disable_color)
+     {
+	if (_disable_file)
+	  S(NO,NO,NO,);
+	else if (_disable_function)
+	  S(NO,NO,,NO);
+	else
+	  S(NO,NO,,);
+     }
+   else
+     {
+	if (_disable_file)
+	  S(NO,,NO,);
+	else if (_disable_function)
+	  S(NO,,,NO);
+	else
+	  S(NO,,,);
+     }
+#undef S
+}
+
+/*
+ * Creates a colored domain name string.
+ */
+static const char *
+eina_log_domain_str_get(const char *name, const char *color)
+{
+   const char *d;
+
+   if (color)
+     {
+	size_t name_len;
+	size_t color_len;
+
+	name_len = strlen(name);
+	color_len = strlen(color);
+	d = malloc(sizeof(char) * (color_len + name_len + strlen(EINA_COLOR_RESET) + 1));
+	if (!d) return NULL;
+	memcpy((char *)d, color, color_len);
+	memcpy((char *)(d + color_len), name, name_len);
+	memcpy((char *)(d + color_len + name_len), EINA_COLOR_RESET, strlen(EINA_COLOR_RESET));
+	((char *)d)[color_len + name_len + strlen(EINA_COLOR_RESET)] = '\0';
+     }
+   else
+	d = strdup(name);
+
+   return d;
+}
+
+/*
+ * Setups a new logging domain to the name and color specified. Note that this
+ * constructor acts upon an pre-allocated object.
+ */
+static Eina_Log_Domain *
+eina_log_domain_new(Eina_Log_Domain *d, const char *name, const char *color)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(d, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
+
+   d->level = EINA_LOG_LEVEL_UNKNOWN;
+   d->deleted = EINA_FALSE;
+
+   if (name)
+     {
+	if ((color) && (!_disable_color))
+	   d->domain_str = eina_log_domain_str_get(name, color);
+	else
+	   d->domain_str = eina_log_domain_str_get(name, NULL);
+
+	d->name = strdup(name);
+     }
+   else
+     {
+	d->domain_str = NULL;
+	d->name = NULL;
+     }
+
+   return d;
+}
+
+/*
+ * Frees internal strings of a log domain, keeping the log domain itself as a
+ * slot for next domain registers.
+ */
+static void
+eina_log_domain_free(Eina_Log_Domain *d)
+{
+   EINA_SAFETY_ON_NULL_RETURN(d);
+
+   if (d->domain_str)
+      free((char *)d->domain_str);
+   if (d->name)
+      free((char *)d->name);
+}
+
+/*
+ * Parses domain levels passed through the env var.
+ */
+static void
+eina_log_domain_parse_pendings(void)
+{
+   const char *start;
+
+   if (!(start = getenv(EINA_LOG_ENV_LEVELS))) return;
+
+   // name1:level1,name2:level2,name3:level3,...
+   while (1)
+     {
+	Eina_Log_Domain_Level_Pending *p;
+	char *end = NULL;
+	char *tmp = NULL;
+	long int level;
+
+	end = strchr(start, ':');
+	if (!end) break;
+
+	// Parse level, keep going if failed
+	level = strtol((char *)(end + 1), &tmp, 10);
+	if (tmp == (end + 1)) goto parse_end;
+
+	// Parse name
+	p = malloc(sizeof(Eina_Log_Domain_Level_Pending) + end - start + 1);
+	if (!p) break;
+	memcpy((char *)p->name, start, end - start);
+	((char *)p->name)[end - start] = '\0';
+	p->level = level;
+
+	_pending_list = eina_inlist_append(_pending_list, EINA_INLIST_GET(p));
+
+	parse_end:
+	start = strchr(tmp, ',');
+	if (start) start++;
+	else break;
+     }
+}
+
+static void
+eina_log_domain_parse_pending_globs(void)
+{
+   const char *start;
+
+   if (!(start = getenv(EINA_LOG_ENV_LEVELS_GLOB))) return;
+
+   // name1:level1,name2:level2,name3:level3,...
+   while (1)
+     {
+	Eina_Log_Domain_Level_Pending *p;
+	char *end = NULL;
+	char *tmp = NULL;
+	long int level;
+
+	end = strchr(start, ':');
+	if (!end) break;
+
+	// Parse level, keep going if failed
+	level = strtol((char *)(end + 1), &tmp, 10);
+	if (tmp == (end + 1)) goto parse_end;
+
+	// Parse name
+	p = malloc(sizeof(Eina_Log_Domain_Level_Pending) + end - start + 1);
+	if (!p) break;
+	memcpy((char *)p->name, start, end - start);
+	((char *)p->name)[end - start] = '\0';
+	p->level = level;
+
+	_glob_list = eina_inlist_append(_glob_list, EINA_INLIST_GET(p));
+
+	parse_end:
+	start = strchr(tmp, ',');
+	if (start) start++;
+	else break;
+     }
+}
+
+/**
+ * @endcond
+ */
+
+
+/*============================================================================*
+ *                                 Global                                     *
+ *============================================================================*/
+
+/*============================================================================*
+ *                                   API                                      *
+ *============================================================================*/
+
+/**
+ * @addtogroup Eina_Log_Group log
+ *
+ * @brief These functions provide log management for projects.
+ *
+ * To use the log system Eina must be initialized with eina_init() and
+ * later shut down with eina_shutdown(). The most generic way to print
+ * logs is to use eina_log_print() but the helper macros
+ * EINA_LOG_ERR(), EINA_LOG_INFO(), EINA_LOG_WARN() and EINA_LOG_DBG()
+ * should be used instead.
+ *
+ * Here is a straightforward example:
+ *
+ * @code
+ * #include <stdlib.h>
+ * #include <stdio.h>
+ *
+ * #include <eina_log.h>
+ *
+ * void test_warn(void)
+ * {
+ *    EINA_LOG_WARN("Here is a warning message");
+ * }
+ *
+ * int main(void)
+ * {
+ *    if (!eina_init())
+ *    {
+ *        printf("log during the initialization of Eina_Log module\n");
+ *        return EXIT_FAILURE;
+ *    }
+ *
+ *    test_warn();
+ *
+ *    eina_shutdown();
+ *
+ *    return EXIT_SUCCESS;
+ * }
+ * @endcode
+ *
+ * Compile this code with the following command:
+ *
+ * @code
+ * gcc -Wall -o test_Eina_Log test_eina.c `pkg-config --cflags --libs eina`
+ * @endcode
+ *
+ * If Eina is compiled without debug mode, then executing the
+ * resulting program displays nothing because the default log level
+ * is #EINA_LOG_LEVEL_ERR and we want to display a warning
+ * message, which level is strictly greater than the log level (see
+ * eina_log_print() for more informations). Now execute the program
+ * with:
+ *
+ * @code
+ * EINA_LOG_LEVEL=2 ./test_eina_log
+ * @endcode
+ *
+ * You should see a message displayed in the terminal.
+ *
+ * For more information, you can look at the @ref tutorial_log_page.
+ *
+ * @{
+ */
+
+
+/**
+ * @cond LOCAL
+ */
+
+EAPI int EINA_LOG_DOMAIN_GLOBAL = 0;
+
+/**
+ * @endcond
+ */
+
+/**
+ * @internal
+ * @brief Initialize the log module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the log module of Eina. It is called by
+ * eina_init().
+ *
+ * @see eina_init()
+ *
+ * @warning Not-MT: just call this function from main thread! The
+ *          place where this function was called the first time is
+ *          considered the main thread.
+ */
+Eina_Bool
+eina_log_init(void)
+{
+   const char *level, *tmp;
+
+   assert((sizeof(_names)/sizeof(_names[0])) == EINA_LOG_LEVELS);
+   assert((sizeof(_colors)/sizeof(_colors[0])) == EINA_LOG_LEVELS + 1);
+
+   // Check if color is disabled
+   if ((tmp = getenv(EINA_LOG_ENV_COLOR_DISABLE)) && (atoi(tmp) == 1))
+     _disable_color = EINA_TRUE;
+
+   if ((tmp = getenv(EINA_LOG_ENV_FILE_DISABLE)) && (atoi(tmp) == 1))
+     _disable_file = EINA_TRUE;
+
+   if ((tmp = getenv(EINA_LOG_ENV_FUNCTION_DISABLE)) && (atoi(tmp) == 1))
+     _disable_function = EINA_TRUE;
+
+   if ((tmp = getenv(EINA_LOG_ENV_ABORT)) && (atoi(tmp) == 1))
+     _abort_on_critical = EINA_TRUE;
+
+   if ((tmp = getenv(EINA_LOG_ENV_ABORT_LEVEL)))
+     _abort_level_on_critical = atoi(tmp);
+
+   eina_log_print_prefix_update();
+
+   // Global log level
+   if ((level = getenv(EINA_LOG_ENV_LEVEL)))
+      _log_level = atoi(level);
+
+   // Register UNKNOWN domain, the default logger
+   EINA_LOG_DOMAIN_GLOBAL = eina_log_domain_register("", NULL);
+
+   if (EINA_LOG_DOMAIN_GLOBAL < 0)
+     {
+	fprintf(stderr, "Failed to create global logging domain.\n");
+	return EINA_FALSE;
+     }
+
+   // Parse pending domains passed through EINA_LOG_LEVELS_GLOB
+   eina_log_domain_parse_pending_globs();
+
+   // Parse pending domains passed through EINA_LOG_LEVELS
+   eina_log_domain_parse_pendings();
+
+   return EINA_TRUE;
+}
+
+/**
+ * @internal
+ * @brief Shut down the log module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the log module set up by
+ * eina_log_init(). It is called by eina_shutdown().
+ *
+ * @see eina_shutdown()
+ *
+ * @warning Not-MT: just call this function from main thread! The
+ *          place where eina_log_init() (eina_init()) was called the
+ *          first time is considered the main thread.
+ */
+Eina_Bool
+eina_log_shutdown(void)
+{
+   Eina_Inlist *tmp;
+
+   while (_log_domains_count--)
+     {
+	if (_log_domains[_log_domains_count].deleted)
+	   continue;
+	eina_log_domain_free(&_log_domains[_log_domains_count]);
+     }
+
+   free(_log_domains);
+
+   _log_domains = NULL;
+   _log_domains_count = 0;
+   _log_domains_allocated = 0;
+
+   while (_glob_list) 
+     {
+        tmp = _glob_list;
+        _glob_list = _glob_list->next;
+        free(tmp);
+     }
+
+   while (_pending_list)
+     {
+	tmp = _pending_list;
+	_pending_list = _pending_list->next;
+	free(tmp);
+     }
+
+   return EINA_TRUE;
+}
+
+
+#ifdef EFL_HAVE_PTHREAD
+
+/**
+ * @internal
+ * @brief Activate the log mutex.
+ *
+ * This function activate the mutex in the eina log module. It is called by
+ * eina_thread_init().
+ *
+ * @see eina_thread_init()
+ */
+void 
+eina_log_threads_init(void)
+{
+   _main_thread = pthread_self();
+   _threads_enabled = EINA_TRUE;
+   INIT();
+}
+
+/**
+ * @internal
+ * @brief Shut down the log mutex.
+ *
+ * This function shuts down the mutex in the log module. 
+ * It is called by eina_thread_shutdown().
+ *
+ * @see eina_thread_shutdown()
+ */
+void
+eina_log_threads_shutdown(void)
+{
+    CHECK_MAIN();
+    SHUTDOWN();
+    _threads_enabled = EINA_FALSE;
+}
+
+#endif
+
+
+/**
+ * Enable logging module to handle threads.
+ *
+ * There is no disable option on purpose, if it is enabled, there is
+ * no way back until you call the last eina_shutdown().
+ *
+ * There is no function to retrieve if threads are enabled as one is
+ * not supposed to know this from outside.
+ *
+ * After this call is executed at least once, if Eina was compiled
+ * with threads support then logging will lock around debug messages
+ * and threads that are not the main thread will have its identifier
+ * printed.
+ *
+ * The main thread is considered the thread where the first
+ * eina_init() was called.
+ */
+EAPI void
+eina_log_threads_enable(void)
+{
+#ifdef EFL_HAVE_PTHREAD
+   _threads_enabled = 1;
+   eina_log_print_prefix_update();
+#endif
+}
+
+/**
+ * Sets logging method to use.
+ *
+ * By default, eina_log_print_cb_stderr() is used.
+ *
+ * @note MT: safe to call from any thread.
+ *
+ * @note MT: given function @a cb will be called protected by mutex.
+ *       This means you're safe from other calls but you should never
+ *       call eina_log_print(), directly or indirectly.
+ */
+EAPI void
+eina_log_print_cb_set(Eina_Log_Print_Cb cb, void *data)
+{
+   LOG_LOCK();
+   _print_cb = cb;
+   _print_cb_data = data;
+   eina_log_print_prefix_update();
+   LOG_UNLOCK();
+}
+
+/**
+ * @brief Set the default log log level.
+ *
+ * @param level The log level.
+ *
+ * This function sets the log log level @p level. It is used in
+ * eina_log_print().
+ */
+EAPI void
+eina_log_level_set(Eina_Log_Level level)
+{
+   _log_level = level;
+}
+
+static inline int
+eina_log_domain_register_unlocked(const char *name, const char *color)
+{
+   Eina_Log_Domain_Level_Pending *pending = NULL;
+   int i;
+
+   for (i = 0; i < _log_domains_count; i++)
+     {
+	if (_log_domains[i].deleted)
+	  {
+	     // Found a flagged slot, free domain_str and replace slot
+	     eina_log_domain_new(&_log_domains[i], name, color);
+	     goto finish_register;
+	  }
+     }
+
+   if (_log_domains_count >= _log_domains_allocated)
+     {
+	Eina_Log_Domain *tmp;
+	size_t size;
+
+	if (!_log_domains)
+	  // special case for init, eina itself will allocate a dozen of domains
+	  size = 24;
+	else
+	  // grow 8 buckets to minimize reallocs
+	  size = _log_domains_allocated + 8;
+
+	tmp = realloc(_log_domains, sizeof(Eina_Log_Domain) * size);
+
+	if (tmp)
+	  {
+	     // Success!
+	     _log_domains = tmp;
+	     _log_domains_allocated = size;
+	  }
+	else
+	   return -1;
+     }
+
+   // Use an allocated slot
+   eina_log_domain_new(&_log_domains[i], name, color);
+   _log_domains_count++;
+
+finish_register:
+   EINA_INLIST_FOREACH(_glob_list, pending) 
+     {
+        if (!fnmatch(pending->name, name, 0)) 
+          {
+             _log_domains[i].level = pending->level;
+             break;
+          }
+     }
+
+   EINA_INLIST_FOREACH(_pending_list, pending)
+     {
+	if (!strcmp(pending->name, name))
+	  {
+	     _log_domains[i].level = pending->level;
+	     _pending_list = eina_inlist_remove(_pending_list, EINA_INLIST_GET(pending));
+	     free(pending);
+	     break;
+	  }
+     }
+
+   // Check if level is still UNKNOWN, set it to global
+   if (_log_domains[i].level == EINA_LOG_LEVEL_UNKNOWN)
+      _log_domains[i].level = _log_level;
+
+   return i;
+}
+
+/**
+ * @param name Domain name
+ * @param color Color of the domain name
+ *
+ * @return Domain index that will be used as the DOMAIN parameter on log
+ *         macros. A negative return value means an log ocurred.
+ *
+ * @note MT: safe to call from any thread.
+ */
+EAPI int
+eina_log_domain_register(const char *name, const char *color)
+{
+   int r;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(name, -1);
+
+   LOG_LOCK();
+   r = eina_log_domain_register_unlocked(name, color);
+   LOG_UNLOCK();
+   return r;
+}
+
+
+static inline void
+eina_log_domain_unregister_unlocked(int domain)
+{
+   Eina_Log_Domain *d;
+
+   if (domain >= _log_domains_count) return;
+
+   d = &_log_domains[domain];
+   eina_log_domain_free(d);
+   d->deleted = 1;
+}
+
+/**
+ * Forget about a logging domain registered by eina_log_domain_register()
+ *
+ * @param domain domain identifier as reported by eina_log_domain_register(),
+ *        must be >= 0.
+ *
+ * @note MT: safe to call from any thread.
+ */
+EAPI void
+eina_log_domain_unregister(int domain)
+{
+   EINA_SAFETY_ON_FALSE_RETURN(domain >= 0);
+   LOG_LOCK();
+   eina_log_domain_unregister_unlocked(domain);
+   LOG_UNLOCK();
+}
+
+/**
+ * Default logging method, this will output to standard error stream.
+ *
+ * This method will colorize output based on domain provided color and
+ * message logging level. To disable color, set environment variable
+ * EINA_LOG_COLOR_DISABLE=1. Similarly, to disable file and line
+ * information, set EINA_LOG_FILE_DISABLE=1 or
+ * EINA_LOG_FUNCTION_DISABLE=1 to avoid function name in output. It is
+ * not acceptable to have both EINA_LOG_FILE_DISABLE and
+ * EINA_LOG_FUNCTION_DISABLE at the same time, in this case just
+ * EINA_LOG_FUNCTION_DISABLE will be considered and file information
+ * will be printed anyways.
+ *
+ * @note MT: if threads are enabled, this function is called within locks.
+ * @note MT: Threads different from main thread will have thread id
+ *       appended to domain name.
+ */
+EAPI void
+eina_log_print_cb_stderr(const Eina_Log_Domain *d, Eina_Log_Level level,
+		const char *file, const char *fnc, int line, const char *fmt,
+		__UNUSED__ void *data, va_list args)
+{
+   _eina_log_print_prefix(stderr, d, level, file, fnc, line);
+   vfprintf(stderr, fmt, args);
+   putc('\n', stderr);
+}
+
+/**
+ * Alternative logging method, this will output to standard output stream.
+ *
+ * This method will colorize output based on domain provided color and
+ * message logging level. To disable color, set environment variable
+ * EINA_LOG_COLOR_DISABLE=1. Similarly, to disable file and line
+ * information, set EINA_LOG_FILE_DISABLE=1 or
+ * EINA_LOG_FUNCTION_DISABLE=1 to avoid function name in output. It is
+ * not acceptable to have both EINA_LOG_FILE_DISABLE and
+ * EINA_LOG_FUNCTION_DISABLE at the same time, in this case just
+ * EINA_LOG_FUNCTION_DISABLE will be considered and file information
+ * will be printed anyways.
+ *
+ * @note MT: if threads are enabled, this function is called within locks.
+ * @note MT: Threads different from main thread will have thread id
+ *       appended to domain name.
+ */
+EAPI void
+eina_log_print_cb_stdout(const Eina_Log_Domain *d, Eina_Log_Level level,
+		const char *file, const char *fnc, int line, const char *fmt,
+		__UNUSED__ void *data, va_list args)
+{
+   _eina_log_print_prefix(stdout, d, level, file, fnc, line);
+   vprintf(fmt, args);
+   putchar('\n');
+}
+
+/**
+ * Alternative logging method, this will output to given file stream.
+ *
+ * This method will never output color.
+ *
+ * @note MT: if threads are enabled, this function is called within locks.
+ * @note MT: Threads different from main thread will have thread id
+ *       appended to domain name.
+ */
+EAPI void
+eina_log_print_cb_file(const Eina_Log_Domain *d, __UNUSED__ Eina_Log_Level level,
+		const char *file, const char *fnc, int line, const char *fmt,
+		void *data, va_list args)
+{
+   FILE *f = data;
+#ifdef EFL_HAVE_PTHREAD
+   if (_threads_enabled)
+     {
+	pthread_t cur = pthread_self();
+	if (IS_OTHER(cur))
+	  {
+	     fprintf(f, "%s[T:%lu] %s:%d %s() ", d->name, cur, file, line, fnc);
+	     goto end;
+	  }
+     }
+#endif
+   fprintf(f, "%s %s:%d %s() ", d->name, file, line, fnc);
+ end:
+   vfprintf(f, fmt, args);
+   putc('\n', f);
+}
+
+static inline void
+eina_log_print_unlocked(int domain, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, va_list args)
+{
+   Eina_Log_Domain *d;
+
+#ifdef EINA_SAFETY_CHECKS
+   if (EINA_UNLIKELY(domain >= _log_domains_count) ||
+       EINA_UNLIKELY(domain < 0))
+     {
+	if (file && fnc && fmt)
+	  fprintf(stderr, "CRI: %s:%d %s() eina_log_print() unknown domain %d, original message format '%s'\n", file, line, fnc, domain, fmt);
+	else
+	  fprintf(stderr, "CRI: eina_log_print() unknown domain %d, original message format '%s'\n", domain, fmt ? fmt : "");
+	if (_abort_on_critical) abort();
+	return;
+     }
+#endif
+   d = _log_domains + domain;
+#ifdef EINA_SAFETY_CHECKS
+   if (EINA_UNLIKELY(d->deleted))
+     {
+	fprintf(stderr, "ERR: eina_log_print() domain %d is deleted\n", domain);
+	return;
+     }
+#endif
+
+   if (level > d->level) return;
+
+   _print_cb(d, level, file, fnc, line, fmt, _print_cb_data, args);
+
+   if (EINA_UNLIKELY(_abort_on_critical) &&
+       EINA_UNLIKELY(level <= _abort_level_on_critical))
+     abort();
+}
+
+/**
+ * Print out log message using given domain and level.
+ *
+ * @note Usually you'll not use this function directly but the helper
+ *       macros EINA_LOG(), EINA_LOG_DOM_CRIT(), EINA_LOG_CRIT() and
+ *       so on. See eina_log.h
+ *
+ * @param domain logging domain to use or @c EINA_LOG_DOMAIN_GLOBAL if
+ *        you registered none. It is recommended that modules and
+ *        applications have their own logging domain.
+ * @param level message level, those with level greater than user
+ *        specified value (eina_log_level_set() or environment
+ *        variables EINA_LOG_LEVEL, EINA_LOG_LEVELS) will be ignored.
+ * @param file filename that originated the call, must @b not be @c NULL.
+ * @param fnc function that originated the call, must @b not be @c NULL.
+ * @param line originating line in @a file.
+ * @param fmt printf-like format to use. Should not provide trailing
+ *        '\n' as it is automatically included.
+ *
+ * @note MT: this function may be called from different threads if
+ *       eina_log_threads_enable() was called before.
+ */
+EAPI void
+eina_log_print(int domain, Eina_Log_Level level, const char *file,
+		const char *fnc, int line, const char *fmt, ...)
+{
+   va_list args;
+
+#ifdef EINA_SAFETY_CHECKS
+   if (EINA_UNLIKELY(file == NULL))
+     {
+	fputs("ERR: eina_log_print() file == NULL\n", stderr);
+	return;
+     }
+   if (EINA_UNLIKELY(fnc == NULL))
+     {
+	fputs("ERR: eina_log_print() fnc == NULL\n", stderr);
+	return;
+     }
+   if (EINA_UNLIKELY(fmt == NULL))
+     {
+	fputs("ERR: eina_log_print() fmt == NULL\n", stderr);
+	return;
+     }
+#endif
+   va_start(args, fmt);
+   LOG_LOCK();
+   eina_log_print_unlocked(domain, level, file, fnc, line, fmt, args);
+   LOG_UNLOCK();
+   va_end(args);
+}
+
+/**
+ * Print out log message using given domain and level.
+ *
+ * @note Usually you'll not use this function directly but the helper
+ *       macros EINA_LOG(), EINA_LOG_DOM_CRIT(), EINA_LOG_CRIT() and
+ *       so on. See eina_log.h
+ *
+ * @param domain logging domain to use or @c EINA_LOG_DOMAIN_GLOBAL if
+ *        you registered none. It is recommended that modules and
+ *        applications have their own logging domain.
+ * @param level message level, those with level greater than user
+ *        specified value (eina_log_level_set() or environment
+ *        variables EINA_LOG_LEVEL, EINA_LOG_LEVELS) will be ignored.
+ * @param file filename that originated the call, must @b not be @c NULL.
+ * @param fnc function that originated the call, must @b not be @c NULL.
+ * @param line originating line in @a file.
+ * @param fmt printf-like format to use. Should not provide trailing
+ *        '\n' as it is automatically included.
+ *
+ * @note MT: this function may be called from different threads if
+ *       eina_log_threads_enable() was called before.
+ *
+ * @see eina_log_print()
+ */
+EAPI void
+eina_log_vprint(int domain, Eina_Log_Level level, const char *file,
+		const char *fnc, int line, const char *fmt, va_list args)
+{
+#ifdef EINA_SAFETY_CHECKS
+   if (EINA_UNLIKELY(file == NULL))
+     {
+	fputs("ERR: eina_log_print() file == NULL\n", stderr);
+	return;
+     }
+   if (EINA_UNLIKELY(fnc == NULL))
+     {
+	fputs("ERR: eina_log_print() fnc == NULL\n", stderr);
+	return;
+     }
+   if (EINA_UNLIKELY(fmt == NULL))
+     {
+	fputs("ERR: eina_log_print() fmt == NULL\n", stderr);
+	return;
+     }
+#endif
+   LOG_LOCK();
+   eina_log_print_unlocked(domain, level, file, fnc, line, fmt, args);
+   LOG_UNLOCK();
+}
+
diff --git a/src/lib/eina_magic.c b/src/lib/eina_magic.c
index 9ca2a52..ea291bc 100644
--- a/src/lib/eina_magic.c
+++ b/src/lib/eina_magic.c
@@ -28,10 +28,13 @@
 #endif
 
 #include "eina_config.h"
-#include "eina_magic.h"
 #include "eina_private.h"
 #include "eina_error.h"
-#include "eina_inlist.h"
+#include "eina_log.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
+#include "eina_safety_checks.h"
+#include "eina_magic.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -41,21 +44,76 @@
  * @cond LOCAL
  */
 
-#ifdef EINA_MAGIC_DEBUG
-
 typedef struct _Eina_Magic_String Eina_Magic_String;
 struct _Eina_Magic_String
 {
-   EINA_INLIST;
-
-   char *string;
    Eina_Magic magic;
+   Eina_Bool string_allocated;
+   const char *string;
 };
 
-static int _eina_magic_string_count = 0;
-static Eina_Inlist *strings = NULL;
+static int _eina_magic_string_log_dom = -1;
 
+#ifdef ERR
+#undef ERR
 #endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_magic_string_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_magic_string_log_dom, __VA_ARGS__)
+
+static Eina_Magic_String *_eina_magic_strings = NULL;
+static size_t _eina_magic_strings_count = 0;
+static size_t _eina_magic_strings_allocated = 0;
+static Eina_Bool _eina_magic_strings_dirty = 0;
+
+static int
+_eina_magic_strings_sort_cmp(const void *p1, const void *p2)
+{
+   const Eina_Magic_String *a = p1, *b = p2;
+   return a->magic - b->magic;
+}
+
+static int
+_eina_magic_strings_find_cmp(const void *p1, const void *p2)
+{
+   Eina_Magic a = (long)p1;
+   const Eina_Magic_String *b = p2;
+   return a - b->magic;
+}
+
+static Eina_Magic_String *
+_eina_magic_strings_alloc(void)
+{
+   size_t idx;
+
+   if (_eina_magic_strings_count == _eina_magic_strings_allocated)
+     {
+	void *tmp;
+	size_t size;
+
+	if (EINA_UNLIKELY(_eina_magic_strings_allocated == 0))
+	  size = 48;
+	else
+	  size = _eina_magic_strings_allocated + 16;
+
+	tmp = realloc(_eina_magic_strings, sizeof(Eina_Magic_String) * size);
+	if (!tmp)
+	  {
+	     ERR("could not realloc magic_strings from %zu to %zu buckets.",
+		 _eina_magic_strings_allocated, size);
+	     return NULL;
+	  }
+	_eina_magic_strings = tmp;
+	_eina_magic_strings_allocated = size;
+     }
+
+   idx = _eina_magic_strings_count;
+   _eina_magic_strings_count++;
+   return _eina_magic_strings + idx;
+}
 
 /**
  * @endcond
@@ -78,74 +136,63 @@ static Eina_Inlist *strings = NULL;
  */
 
 /**
- * @brief Initialize the magic module.
+ * @internal
+ * @brief Initialize the magic string module.
  *
- * @return 1 or greater.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function just increases a reference counter. If the magic
- * module is disabled at configure time, then it always returns @c 1.
- *
- * Once the magic module is not used anymore, then
- * eina_magic_shutdown() must be called to shut down the magic
- * module.
+ * This function sets up the magic string module of Eina. It is called by
+ * eina_init().
  *
  * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_magic_string_init(void)
 {
-#ifdef EINA_MAGIC_DEBUG
-   ++_eina_magic_string_count;
+   _eina_magic_string_log_dom = eina_log_domain_register
+     ("eina_magic_string", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_magic_string_log_dom < 0)
+     {
+	EINA_LOG_ERR("Could not register log domain: eina_magic_string");
+	return EINA_FALSE;
+     }
 
-   return _eina_magic_string_count;
-#else
-   return 1;
-#endif
+   return EINA_TRUE;
 }
 
 /**
- * @brief Shut down the magic module.
+ * @internal
+ * @brief Shut down the magic string module.
  *
- * @return 0 when the magic module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function shuts down the magic module set up by
- * eina_magic_string_init(). It is called by eina_shutdown() and by
- * all modules shutdown functions. It returns 0 when it is called the
- * same number of times than eina_magic_string_init(). In that case it
- * clears the magic list and return @c 0. If the magic module is
- * disabled at configure time, then it always returns @c 0.
+ * This function shuts down the magic string module set up by
+ * eina_magic string_init(). It is called by eina_shutdown().
  *
  * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_magic_string_shutdown(void)
 {
-#ifdef EINA_MAGIC_DEBUG
-   --_eina_magic_string_count;
+   Eina_Magic_String *ems, *ems_end;
 
-   if (_eina_magic_string_count == 0)
-     {
-	/* Free all strings. */
-	while (strings)
-	  {
-	     Eina_Magic_String *tmp;
+   ems = _eina_magic_strings;
+   ems_end = ems + _eina_magic_strings_count;
 
-	     tmp = (Eina_Magic_String*) strings;
-	     strings = eina_inlist_remove(strings, strings);
+   for (; ems < ems_end; ems++)
+     if (ems->string_allocated)
+       free((char *)ems->string);
 
-	     free(tmp->string);
-	     free(tmp);
-	  }
-     }
+   free(_eina_magic_strings);
+   _eina_magic_strings = NULL;
+   _eina_magic_strings_count = 0;
+   _eina_magic_strings_allocated = 0;
 
-   return _eina_magic_string_count;
-#else
-   return 0;
-#endif
-}
+   eina_log_domain_unregister(_eina_magic_string_log_dom);
+   _eina_magic_string_log_dom = -1;
 
-#ifdef EINA_MAGIC_DEBUG
+   return EINA_TRUE;
+}
 
 /**
  * @brief Return the string associated to the given magic identifier.
@@ -162,10 +209,21 @@ eina_magic_string_get(Eina_Magic magic)
 {
    Eina_Magic_String *ems;
 
-   EINA_INLIST_FOREACH(strings, ems)
-     if (ems->magic == magic)
-       return ems->string;
+   if (!_eina_magic_strings)
+     return NULL;
+
+   if (_eina_magic_strings_dirty)
+     {
+	qsort(_eina_magic_strings, _eina_magic_strings_count,
+	      sizeof(Eina_Magic_String), _eina_magic_strings_sort_cmp);
+	_eina_magic_strings_dirty = 0;
+     }
 
+   ems = bsearch((void *)(long)magic, _eina_magic_strings,
+		 _eina_magic_strings_count, sizeof(Eina_Magic_String),
+		 _eina_magic_strings_find_cmp);
+   if (ems)
+     return ems->string;
    return NULL;
 }
 
@@ -173,42 +231,81 @@ eina_magic_string_get(Eina_Magic magic)
  * @brief Set the string associated to the given magic identifier.
  *
  * @param magic The magic identifier.
- * @param The string associated to the identifier.
+ * @param The string associated to the identifier, must not be @c NULL.
  *
- * This function sets the string @p magic_name to @p magic. If a
- * string is already associated to @p magic, then it is freed and @p
- * magic_name is duplicated. Otherwise, it is added to the list of
- * magic strings.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets the string @p magic_name to @p magic. It is not
+ * checked if number or string are already set, then you might end
+ * with duplicates in that case.
+ *
+ * @see eina_magic_string_static_set()
  */
-EAPI void
+EAPI Eina_Bool
 eina_magic_string_set(Eina_Magic magic, const char *magic_name)
 {
    Eina_Magic_String *ems;
 
-   EINA_INLIST_FOREACH(strings, ems)
-     if (ems->magic == magic)
-       {
-	  free(ems->string);
-	  if (magic_name)
-	    ems->string = strdup(magic_name);
-	  else
-	    ems->string = NULL;
-	  return ;
-       }
-
-   ems = malloc(sizeof (Eina_Magic_String));
+   EINA_SAFETY_ON_NULL_RETURN_VAL(magic_name, EINA_FALSE);
+
+   ems = _eina_magic_strings_alloc();
    if (!ems)
-     return;
+     return EINA_FALSE;
+
    ems->magic = magic;
-   if (magic_name)
-     ems->string = strdup(magic_name);
-   else
-     ems->string = NULL;
+   ems->string_allocated = EINA_TRUE;
+   ems->string = strdup(magic_name);
+   if (!ems->string)
+     {
+	ERR("could not allocate string '%s'", magic_name);
+	_eina_magic_strings_count--;
+	return EINA_FALSE;
+     }
 
-   strings = eina_inlist_prepend(strings, EINA_INLIST_GET(ems));
+   _eina_magic_strings_dirty = 1;
+   return EINA_TRUE;
 }
 
 /**
+ * @brief Set the string associated to the given magic identifier.
+ *
+ * @param magic The magic identifier.
+ * @param The string associated to the identifier, must not be @c NULL,
+ *        it will not be duplcated, just referenced thus it must be live
+ *        during magic number usage.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets the string @p magic_name to @p magic. It is not
+ * checked if number or string are already set, then you might end
+ * with duplicates in that case.
+ *
+ * @see eina_magic_string_set()
+ */
+EAPI Eina_Bool
+eina_magic_string_static_set(Eina_Magic magic, const char *magic_name)
+{
+   Eina_Magic_String *ems;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(magic_name, EINA_FALSE);
+
+   ems = _eina_magic_strings_alloc();
+   if (!ems)
+     return EINA_FALSE;
+
+   ems->magic = magic;
+   ems->string_allocated = EINA_FALSE;
+   ems->string = magic_name;
+
+   _eina_magic_strings_dirty = 1;
+   return EINA_TRUE;
+}
+
+#ifdef eina_magic_fail
+# undef eina_magic_fail
+#endif
+
+/**
  * @brief Display a message or abort is a magic check failed.
  *
  * @param d The checked data pointer.
@@ -235,48 +332,49 @@ EAPI void
 eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m, const char *file, const char *fnc, int line)
 {
    if (!d)
-     eina_error_print(EINA_ERROR_LEVEL_ERR, file, fnc, line,
+     eina_log_print(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_CRITICAL,
+		    file, fnc, line,
+		    "*** Eina Magic Check Failed !!!\n"
+		    "    Input handle pointer is NULL !\n"
+		    "*** NAUGHTY PROGRAMMER!!!\n"
+		    "*** SPANK SPANK SPANK!!!\n"
+		    "*** Now go fix your code. Tut tut tut!\n"
+		    "\n");
+   else
+     if (m == EINA_MAGIC_NONE)
+       eina_log_print(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_CRITICAL,
+		      file, fnc, line,
 		      "*** Eina Magic Check Failed !!!\n"
-		      "    Input handle pointer is NULL !\n"
+		      "    Input handle has already been freed!\n"
 		      "*** NAUGHTY PROGRAMMER!!!\n"
-	              "*** SPANK SPANK SPANK!!!\n"
-	              "*** Now go fix your code. Tut tut tut!\n"
+		      "*** SPANK SPANK SPANK!!!\n"
+		      "*** Now go fix your code. Tut tut tut!\n"
 		      "\n");
-   else
-     if (m == EINA_MAGIC_NONE)
-       eina_error_print(EINA_ERROR_LEVEL_ERR, file, fnc, line,
-			"*** Eina Magic Check Failed !!!\n"
-			"    Input handle has already been freed!\n"
-			"*** NAUGHTY PROGRAMMER!!!\n"
-			"*** SPANK SPANK SPANK!!!\n"
-			"*** Now go fix your code. Tut tut tut!\n"
-			"\n");
      else
        if (m != req_m)
-	 eina_error_print(EINA_ERROR_LEVEL_ERR, file, fnc, line,
-			  "*** Eina Magic Check Failed !!!\n"
-			  "    Input handle is wrong type\n"
-			  "    Expected: %08x - %s\n"
-			  "    Supplied: %08x - %s\n"
-			  "*** NAUGHTY PROGRAMMER!!!\n"
-			  "*** SPANK SPANK SPANK!!!\n"
-			  "*** Now go fix your code. Tut tut tut!\n"
-			  "\n",
-			  req_m, eina_magic_string_get(req_m),
-			  m, eina_magic_string_get(m));
+       eina_log_print(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_CRITICAL,
+		      file, fnc, line,
+		      "*** Eina Magic Check Failed !!!\n"
+		      "    Input handle is wrong type\n"
+		      "    Expected: %08x - %s\n"
+		      "    Supplied: %08x - %s\n"
+		      "*** NAUGHTY PROGRAMMER!!!\n"
+		      "*** SPANK SPANK SPANK!!!\n"
+		      "*** Now go fix your code. Tut tut tut!\n"
+		      "\n",
+		      req_m, eina_magic_string_get(req_m),
+		      m, eina_magic_string_get(m));
        else
-	 eina_error_print(EINA_ERROR_LEVEL_ERR, file, fnc, line,
-			  "*** Eina Magic Check Failed !!!\n"
-			  "    Why did you call me !\n"
-			  "*** NAUGHTY PROGRAMMER!!!\n"
-			  "*** SPANK SPANK SPANK!!!\n"
-			  "*** Now go fix your code. Tut tut tut!\n"
-			  "\n");
-   if (getenv("EINA_ERROR_ABORT")) abort();
+       eina_log_print(EINA_LOG_DOMAIN_GLOBAL, EINA_LOG_LEVEL_CRITICAL,
+		      file, fnc, line,
+		      "*** Eina Magic Check Failed !!!\n"
+		      "    Why did you call me !\n"
+		      "*** NAUGHTY PROGRAMMER!!!\n"
+		      "*** SPANK SPANK SPANK!!!\n"
+		      "*** Now go fix your code. Tut tut tut!\n"
+		      "\n");
 }
 
-#endif
-
 /**
  * @}
  */
diff --git a/src/lib/eina_main.c b/src/lib/eina_main.c
index bb586f9..0c9172c 100644
--- a/src/lib/eina_main.c
+++ b/src/lib/eina_main.c
@@ -22,17 +22,22 @@
 # include "config.h"
 #endif
 
+#include "eina_config.h"
+#include "eina_private.h"
 #include "eina_types.h"
 #include "eina_main.h"
 #include "eina_error.h"
+#include "eina_log.h"
 #include "eina_hash.h"
 #include "eina_stringshare.h"
 #include "eina_list.h"
+#include "eina_matrixsparse.h"
 #include "eina_array.h"
 #include "eina_counter.h"
 #include "eina_benchmark.h"
 #include "eina_magic.h"
 #include "eina_rectangle.h"
+#include "eina_safety_checks.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -43,6 +48,96 @@
  */
 
 static int _eina_main_count = 0;
+static int _eina_main_thread_count = 0;
+static int _eina_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_log_dom, __VA_ARGS__)
+
+#ifdef EFL_HAVE_PTHREAD
+#include <pthread.h>
+static Eina_Bool _threads_activated = EINA_FALSE;
+static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
+#define LOCK() if(_threads_activated) pthread_mutex_lock(&_mutex);
+#define UNLOCK() if(_threads_activated) pthread_mutex_unlock(&_mutex);
+#define UNLOCK_FORCE() pthread_mutex_unlock(&_mutex);
+#else
+#define LOCK() do {} while (0)
+#define UNLOCK() do {} while (0)
+#define UNLOCK_FORCE() do {} while (0)
+#endif
+
+/* place module init/shutdown functions here to avoid other modules
+ * calling them by mistake.
+ */
+#define S(x) extern Eina_Bool eina_##x##_init(void); extern Eina_Bool eina_##x##_shutdown(void)
+S(log);
+S(error);
+S(safety_checks);
+S(magic_string);
+S(iterator);
+S(accessor);
+S(array);
+S(module);
+S(mempool);
+S(list);
+S(stringshare);
+S(matrixsparse);
+S(convert);
+S(counter);
+S(benchmark);
+S(rectangle);
+#undef S
+
+struct eina_desc_setup
+{
+   const char *name;
+   Eina_Bool (*init)(void);
+   Eina_Bool (*shutdown)(void);
+};
+
+static const struct eina_desc_setup _eina_desc_setup[] = {
+#define S(x) {#x, eina_##x##_init, eina_##x##_shutdown}
+  /* log is a special case as it needs printf */
+  S(error),
+  S(safety_checks),
+  S(magic_string),
+  S(iterator),
+  S(accessor),
+  S(array),
+  S(module),
+  S(mempool),
+  S(list),
+  S(stringshare),
+  S(matrixsparse),
+  S(convert),
+  S(counter),
+  S(benchmark),
+  S(rectangle)
+#undef S
+};
+static const size_t _eina_desc_setup_len = sizeof(_eina_desc_setup) / sizeof(_eina_desc_setup[0]);
+
+static void
+_eina_shutdown_from_desc(const struct eina_desc_setup *itr)
+{
+   for (itr--; itr >= _eina_desc_setup; itr--)
+     {
+	if (!itr->shutdown())
+	  ERR("Problems shutting down eina module '%s', ignored.", itr->name);
+     }
+
+   eina_log_domain_unregister(_eina_log_dom);
+   _eina_log_dom = -1;
+   eina_log_shutdown();
+}
 
 /**
  * @endcond
@@ -73,18 +168,7 @@ static int _eina_main_count = 0;
  * This function sets up all the eina modules. It returns 0 on
  * failure (that is, when one of the module fails to initialize),
  * otherwise it returns the number of times it has already been
- * called. The list of initialisation functions that are called are
- * (in that order):
- *
- * @li eina_error_init()
- * @li eina_hash_init()
- * @li eina_stringshare_init()
- * @li eina_list_init()
- * @li eina_array_init()
- * @li eina_counter_init()
- * @li eina_benchmark_init()
- * @li eina_magic_string_init()
- * @li eina_rectangle_init()
+ * called.
  *
  * When Eina is not used anymore, call eina_shutdown() to shut down
  * the Eina library.
@@ -92,74 +176,38 @@ static int _eina_main_count = 0;
 EAPI int
 eina_init(void)
 {
-   if (_eina_main_count) goto finish_init;
+   const struct eina_desc_setup *itr, *itr_end;
 
-   if (!eina_error_init())
-     {
-        fprintf(stderr, "Could not initialize eina error module.\n");
-        return 0;
-     }
-   if (!eina_hash_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina hash module.\n");
-        goto hash_init_error;
-     }
-   if (!eina_stringshare_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina stringshare module.\n");
-        goto stringshare_init_error;
-     }
-   if (!eina_list_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina list module.\n");
-        goto list_init_error;
-     }
-   if (!eina_array_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina array module.\n");
-        goto array_init_error;
-     }
-   if (!eina_counter_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina counter module.\n");
-        goto counter_init_error;
-     }
-   if (!eina_benchmark_init())
+   if (EINA_LIKELY(_eina_main_count > 0))
+     return ++_eina_main_count;
+
+   if (!eina_log_init())
      {
-        EINA_ERROR_PERR("Could not initialize eina benchmark module.\n");
-        goto benchmark_init_error;
+	fprintf(stderr, "Could not initialize eina logging system.\n");
+	return 0;
      }
-   if (!eina_magic_string_init())
+   _eina_log_dom = eina_log_domain_register("eina", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_log_dom < 0)
      {
-        EINA_ERROR_PERR("Could not initialize eina magic string module.\n");
-        goto magic_string_init_error;
+	EINA_LOG_ERR("Could not register log domain: eina");
+	eina_log_shutdown();
+	return 0;
      }
-   if (!eina_rectangle_init())
+
+   itr = _eina_desc_setup;
+   itr_end = itr + _eina_desc_setup_len;
+   for (; itr < itr_end; itr++)
      {
-        EINA_ERROR_PERR("Could not initialize eina rectangle module.\n");
-        goto rectangle_init_error;
+	if (!itr->init())
+	  {
+	     ERR("Could not initialize eina module '%s'.", itr->name);
+	     _eina_shutdown_from_desc(itr);
+	     return 0;
+	  }
      }
 
- finish_init:
-   return ++_eina_main_count;
-
- rectangle_init_error:
-   eina_magic_string_shutdown();
- magic_string_init_error:
-   eina_benchmark_shutdown();
- benchmark_init_error:
-   eina_counter_shutdown();
- counter_init_error:
-   eina_array_shutdown();
- array_init_error:
-   eina_list_shutdown();
- list_init_error:
-   eina_stringshare_shutdown();
- stringshare_init_error:
-   eina_hash_shutdown();
- hash_init_error:
-   eina_error_shutdown();
-   return 0;
+   _eina_main_count = 1;
+   return 1;
 }
 
 /**
@@ -170,18 +218,7 @@ eina_init(void)
  *
  * This function shuts down the Eina library. It returns 0 when it has
  * been called the same number of times than eina_init(). In that case
- * it shut down all the Eina modules. The list of shut down functions
- * that are called are (in that order):
- *
- * @li eina_rectangle_init()
- * @li eina_magic_string_init()
- * @li eina_benchmark_init()
- * @li eina_counter_init()
- * @li eina_array_init()
- * @li eina_list_init()
- * @li eina_stringshare_init()
- * @li eina_hash_init()
- * @li eina_error_init()
+ * it shut down all the Eina modules.
  *
  * Once this function succeeds (that is, @c 0 is returned), you must
  * not call any of the Eina function anymore. You must call
@@ -190,20 +227,91 @@ eina_init(void)
 EAPI int
 eina_shutdown(void)
 {
-   if (_eina_main_count != 1) goto finish_shutdown;
-
-   eina_rectangle_shutdown();
-   eina_magic_string_shutdown();
-   eina_benchmark_shutdown();
-   eina_counter_shutdown();
-   eina_array_shutdown();
-   eina_list_shutdown();
-   eina_stringshare_shutdown();
-   eina_hash_shutdown();
-   eina_error_shutdown();
-
- finish_shutdown:
-   return --_eina_main_count;
+   _eina_main_count--;
+   if (EINA_UNLIKELY(_eina_main_count == 0))
+     _eina_shutdown_from_desc(_eina_desc_setup + _eina_desc_setup_len);
+   return _eina_main_count;
+}
+
+
+/**
+ * @brief Initialize the mutexs of the Eina library.
+ *
+ * @return 1 or greater on success, 0 on error.
+ *
+ * This function sets up all the mutexs in all eina modules. It returns 0 on
+ * failure (that is, when one of the module fails to initialize),
+ * otherwise it returns the number of times it has already been
+ * called.
+ *
+ * When the mutexs are not used anymore, call eina_thread_shutdown() to shut down
+ * the mutexs.
+ */
+EAPI int
+eina_threads_init(void)
+{
+#ifdef EFL_HAVE_PTHREAD
+    int ret;
+    
+    LOCK();
+    ++_eina_main_thread_count;
+    ret = _eina_main_thread_count;
+
+    if(_eina_main_thread_count > 1) 
+    {
+        UNLOCK();
+        return ret;
+    }
+
+    eina_stringshare_threads_init();
+    eina_log_threads_init();
+    _threads_activated = EINA_TRUE;
+
+    return ret;
+#else
+    return 0;
+#endif
+}
+
+/**
+ * @brief Shut down mutexs in the Eina library.
+ *
+ * @return 0 when all mutexs are completely shut down, 1 or
+ * greater otherwise.
+ *
+ * This function shuts down the mutexs in the Eina library. It returns 0 when it has
+ * been called the same number of times than eina_thread_init(). In that case
+ * it shut down all the mutexs.
+ *
+ * Once this function succeeds (that is, @c 0 is returned), you must
+ * not call any of the Eina function in a thread anymore. You must call
+ * eina_thread_init() again to use the Eina functions in a thread again.
+ */
+EAPI int
+eina_threads_shutdown(void)
+{
+#ifdef EFL_HAVE_PTHREAD
+    int ret;
+
+    LOCK();
+    ret = --_eina_main_thread_count;
+    if(_eina_main_thread_count > 0) 
+    {
+        UNLOCK();
+        return ret; 
+    }
+
+    eina_stringshare_threads_shutdown();
+    eina_log_threads_shutdown();
+
+    _threads_activated = EINA_FALSE;
+
+    UNLOCK_FORCE();
+
+    return ret;
+#else
+    return 0;
+#endif
 }
 
 /**
diff --git a/src/lib/eina_matrixsparse.c b/src/lib/eina_matrixsparse.c
new file mode 100644
index 0000000..f9aead4
--- /dev/null
+++ b/src/lib/eina_matrixsparse.c
@@ -0,0 +1,1555 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2009 Gustavo Sverzut Barbieri
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * @page tutorial_matrixsparse_page Matrix Sparse Tutorial
+ *
+ * to be written...
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef HAVE_EVIL
+# include <Evil.h>
+#endif
+
+#include "eina_config.h"
+#include "eina_private.h"
+#include "eina_error.h"
+#include "eina_magic.h"
+#include "eina_mempool.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
+#include "eina_safety_checks.h"
+#include "eina_matrixsparse.h"
+
+
+/*============================================================================*
+ *                                  Local                                     *
+ *============================================================================*/
+/**
+ * @cond LOCAL
+ */
+
+static const char EINA_MAGIC_MATRIXSPARSE_STR[] = "Eina Matrixsparse";
+static const char EINA_MAGIC_MATRIXSPARSE_ROW_STR[] = "Eina Matrixsparse Row";
+static const char EINA_MAGIC_MATRIXSPARSE_CELL_STR[] = "Eina Matrixsparse Cell";
+static const char EINA_MAGIC_MATRIXSPARSE_ITERATOR_STR[] = "Eina Matrixsparse Iterator";
+static const char EINA_MAGIC_MATRIXSPARSE_ROW_ACCESSOR_STR[] = "Eina Matrixsparse Row Accessor";
+static const char EINA_MAGIC_MATRIXSPARSE_ROW_ITERATOR_STR[] = "Eina Matrixsparse Row Iterator";
+static const char EINA_MAGIC_MATRIXSPARSE_CELL_ACCESSOR_STR[] = "Eina Matrixsparse Cell Accessor";
+static const char EINA_MAGIC_MATRIXSPARSE_CELL_ITERATOR_STR[] = "Eina Matrixsparse Cell Iterator";
+
+
+#define EINA_MAGIC_CHECK_MATRIXSPARSE(d, ...)		\
+  do {							\
+     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_MATRIXSPARSE))	\
+       {						\
+	  EINA_MAGIC_FAIL(d, EINA_MAGIC_MATRIXSPARSE);	\
+	  return __VA_ARGS__;				\
+       }						\
+  } while(0);
+
+#define EINA_MAGIC_CHECK_MATRIXSPARSE_ROW(d, ...)		\
+  do {								\
+     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_MATRIXSPARSE_ROW))	\
+       {							\
+	  EINA_MAGIC_FAIL(d, EINA_MAGIC_MATRIXSPARSE_ROW);	\
+	  return __VA_ARGS__;					\
+       }							\
+  } while(0);
+
+#define EINA_MAGIC_CHECK_MATRIXSPARSE_CELL(d, ...)		\
+  do {								\
+     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_MATRIXSPARSE_CELL))	\
+       {							\
+	  EINA_MAGIC_FAIL(d, EINA_MAGIC_MATRIXSPARSE_CELL);	\
+	  return __VA_ARGS__;					\
+       }							\
+  } while(0);
+
+#define EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(d, ...)			\
+  do {									\
+     if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_MATRIXSPARSE_ITERATOR))	\
+       {								\
+	  EINA_MAGIC_FAIL(d, EINA_MAGIC_MATRIXSPARSE_ITERATOR);		\
+	  return __VA_ARGS__;						\
+       }								\
+  } while(0);
+
+struct _Eina_Matrixsparse_Cell
+{
+   Eina_Matrixsparse_Cell *next;
+   Eina_Matrixsparse_Cell *prev;
+
+   void *data;
+   unsigned long col;
+
+   Eina_Matrixsparse_Row *parent;
+
+   EINA_MAGIC
+};
+
+struct _Eina_Matrixsparse_Row
+{
+   Eina_Matrixsparse_Row *next;
+   Eina_Matrixsparse_Row *prev;
+
+   Eina_Matrixsparse_Cell *cols;
+   Eina_Matrixsparse_Cell *last_col;
+   Eina_Matrixsparse_Cell *last_used; /* fast sequential access */
+   unsigned long row;
+
+   Eina_Matrixsparse *parent;
+
+   EINA_MAGIC
+};
+
+struct _Eina_Matrixsparse
+{
+   Eina_Matrixsparse_Row *rows;
+   Eina_Matrixsparse_Row *last_row;
+   Eina_Matrixsparse_Row *last_used; /* fast sequential access */
+
+   struct
+   {
+      unsigned long rows;
+      unsigned long cols;
+   } size;
+
+   struct
+   {
+      void (*func)(void *user_data, void *cell_data);
+      void *user_data;
+   } free;
+
+   EINA_MAGIC
+};
+
+typedef struct _Eina_Matrixsparse_Iterator Eina_Matrixsparse_Iterator;
+typedef struct _Eina_Matrixsparse_Iterator_Complete Eina_Matrixsparse_Iterator_Complete;
+
+struct _Eina_Matrixsparse_Iterator
+{
+   Eina_Iterator iterator;
+
+   const Eina_Matrixsparse *m;
+   struct {
+      const Eina_Matrixsparse_Row *row;
+      const Eina_Matrixsparse_Cell *col;
+   } ref;
+
+   EINA_MAGIC
+};
+
+struct _Eina_Matrixsparse_Iterator_Complete
+{
+   Eina_Iterator iterator;
+
+   const Eina_Matrixsparse *m;
+   struct {
+      const Eina_Matrixsparse_Row *row;
+      const Eina_Matrixsparse_Cell *col;
+   } ref;
+
+   struct {
+      unsigned long row, col;
+   } idx;
+
+   struct {
+      Eina_Matrixsparse_Row row;
+      Eina_Matrixsparse_Cell col;
+   } dummy;
+
+   EINA_MAGIC
+};
+
+/**
+ * @todo Eina_Matrixsparse_Row_Iterator: iterator over rows in matrix
+ * @todo Eina_Matrixsparse_Row_Accessor: accessor over rows in matrix
+ * @todo Eina_Matrixsparse_Cell_Iterator: iterator over cells in row
+ * @todo Eina_Matrixsparse_Cell_Accessor: accessor over cells in row
+ */
+
+static int _eina_matrixsparse_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_matrixsparse_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_matrixsparse_log_dom, __VA_ARGS__)
+
+static Eina_Mempool *_eina_matrixsparse_cell_mp = NULL;
+static Eina_Mempool *_eina_matrixsparse_row_mp = NULL;
+
+static inline void
+_eina_matrixsparse_cell_free(Eina_Matrixsparse_Cell *c, void (*free_func)(void *, void *), void *user_data)
+{
+   if (free_func)
+     free_func(user_data, c->data);
+
+   EINA_MAGIC_SET(c, EINA_MAGIC_NONE);
+   eina_mempool_free(_eina_matrixsparse_cell_mp, c);
+}
+
+static inline void
+_eina_matrixsparse_cell_unlink(Eina_Matrixsparse_Cell *c)
+{
+   Eina_Matrixsparse_Row *r = c->parent;
+
+   if (r->last_used == c)
+     {
+	if (c->next)
+	  r->last_used = c->next;
+	else
+	  r->last_used = c->prev;
+     }
+
+   if (r->last_col == c)
+     r->last_col = c->prev;
+
+   if (r->cols == c)
+     r->cols = c->next;
+
+   if (c->next && c->prev)
+     {
+	c->next->prev = c->prev;
+	c->prev->next = c->next;
+     }
+   else if (c->next)
+     c->next->prev = NULL;
+   else if (c->prev)
+     c->prev->next = NULL;
+}
+
+static inline void
+_eina_matrixsparse_row_cells_free(Eina_Matrixsparse_Row *r, void (*free_func)(void *, void *), void *user_data)
+{
+   Eina_Matrixsparse_Cell *c = r->cols;
+   while (c)
+     {
+	Eina_Matrixsparse_Cell *c_aux = c;
+	c = c->next;
+	_eina_matrixsparse_cell_free(c_aux, free_func, user_data);
+     }
+}
+
+static inline void
+_eina_matrixsparse_row_free(Eina_Matrixsparse_Row *r, void (*free_func)(void *, void *), void *user_data)
+{
+   _eina_matrixsparse_row_cells_free(r, free_func, user_data);
+   EINA_MAGIC_SET(r, EINA_MAGIC_NONE);
+   eina_mempool_free(_eina_matrixsparse_row_mp, r);
+}
+
+static inline void
+_eina_matrixsparse_row_unlink(Eina_Matrixsparse_Row *r)
+{
+   Eina_Matrixsparse *m = r->parent;
+
+   if (m->last_used == r)
+     {
+	if (r->next)
+	  m->last_used = r->next;
+	else
+	  m->last_used = r->prev;
+     }
+
+   if (m->last_row == r)
+     m->last_row = r->prev;
+
+   if (m->rows == r)
+     m->rows = r->next;
+
+   if (r->next && r->prev)
+     {
+	r->next->prev = r->prev;
+	r->prev->next = r->next;
+     }
+   else if (r->next)
+     r->next->prev = NULL;
+   else if (r->prev)
+     r->prev->next = NULL;
+}
+
+static inline void
+_eina_matrixsparse_row_find_parms_get(const Eina_Matrixsparse *m, unsigned long row, Eina_Matrixsparse_Row **p_r, int *p_dir)
+{
+   Eina_Matrixsparse_Row *r;
+   unsigned long dist;
+   int dir;
+
+   dist = row - m->rows->row;
+   r = m->rows;
+   dir = 1;
+   if (dist > m->last_row->row - row)
+     {
+	dist = m->last_row->row - row;
+	r = m->last_row;
+	dir = -1;
+     }
+
+   if (m->last_used)
+     {
+	if (m->last_used->row < row)
+	  {
+	     if (dist > row - m->last_used->row)
+	       {
+/* 		  dist = row = m->last_used->row; */
+		  r = m->last_used;
+		  dir = 1;
+	       }
+	  }
+	else
+	  {
+	     if (dist > m->last_used->row - row)
+	       {
+/* 		  dist = m->last_used->row - row; */
+		  r = m->last_used;
+		  dir = -1;
+	       }
+	  }
+     }
+
+   *p_r = r;
+   *p_dir = dir;
+}
+
+static inline void
+_eina_matrixsparse_row_cell_find_parms_get(const Eina_Matrixsparse_Row *r, unsigned long col, Eina_Matrixsparse_Cell **p_c, int *p_dir)
+{
+   Eina_Matrixsparse_Cell *c;
+   unsigned long dist;
+   int dir;
+
+   dist = col - r->cols->col;
+   c = r->cols;
+   dir = 1;
+   if (dist > r->last_col->col - col)
+     {
+	dist = r->last_col->col - col;
+	c = r->last_col;
+	dir = -1;
+     }
+
+   if (r->last_used)
+     {
+	if (r->last_used->col < col)
+	  {
+	     if (dist > col - r->last_used->col)
+	       {
+/* 		  dist = col = r->last_used->col; */
+		  c = r->last_used;
+		  dir = 1;
+	       }
+	  }
+	else
+	  {
+	     if (dist > r->last_used->col - col)
+	       {
+/* 		  dist = r->last_used->col - col; */
+		  c = r->last_used;
+		  dir = -1;
+	       }
+	  }
+     }
+
+   *p_c = c;
+   *p_dir = dir;
+}
+
+static inline Eina_Matrixsparse_Row *
+_eina_matrixsparse_row_idx_get(const Eina_Matrixsparse *m, unsigned long row)
+{
+   Eina_Matrixsparse_Row *r;
+   int dir;
+
+   if (!m->rows) return NULL;
+
+   if      (m->rows->row == row) return m->rows;
+   else if (m->rows->row > row) return NULL;
+
+   if      (m->last_row->row == row) return m->last_row;
+   else if (m->last_row->row < row) return NULL;
+
+   if ((m->last_used) && (m->last_used->row == row)) return m->last_used;
+
+   _eina_matrixsparse_row_find_parms_get(m, row, &r, &dir);
+   assert(dir != 0);
+   if (dir > 0)
+     {
+	for (; r != NULL; r = r->next)
+	  if (r->row == row)
+	    {
+	       ((Eina_Matrixsparse *)m)->last_used = r;
+	       return r;
+	    }
+	  else if (r->row > row)
+	    return NULL;
+     }
+   else if (dir < 0)
+     {
+	for (; r != NULL; r = r->prev)
+	  if (r->row == row)
+	    {
+	       ((Eina_Matrixsparse *)m)->last_used = r;
+	       return r;
+	    }
+	  else if (r->row < row)
+	    return NULL;
+     }
+
+   return NULL;
+}
+
+static inline Eina_Matrixsparse_Cell *
+_eina_matrixsparse_row_cell_idx_get(const Eina_Matrixsparse_Row *r, unsigned long col)
+{
+   Eina_Matrixsparse_Cell *c;
+   int dir;
+
+   if (!r->cols) return NULL;
+
+   if      (r->cols->col == col) return r->cols;
+   else if (r->cols->col > col) return NULL;
+
+   if      (r->last_col->col == col) return r->last_col;
+   else if (r->last_col->col < col) return NULL;
+
+   if ((r->last_used) && (r->last_used->col == col)) return r->last_used;
+
+
+   _eina_matrixsparse_row_cell_find_parms_get(r, col, &c, &dir);
+   assert(dir != 0);
+   if (dir > 0)
+     {
+	for (; r != NULL; c = c->next)
+	  if (c->col == col)
+	    {
+	       ((Eina_Matrixsparse_Row *)r)->last_used = c;
+	       return c;
+	    }
+	  else if (c->col > col)
+	    return NULL;
+     }
+   else if (dir < 0)
+     {
+	for (; r != NULL; c = c->prev)
+	  if (c->col == col)
+	    {
+	       ((Eina_Matrixsparse_Row *)r)->last_used = c;
+	       return c;
+	    }
+	  else if (c->col < col)
+	    return NULL;
+     }
+
+   return NULL;
+}
+
+static inline Eina_Matrixsparse_Cell *
+_eina_matrixsparse_cell_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col)
+{
+   Eina_Matrixsparse_Row *r = _eina_matrixsparse_row_idx_get(m, row);
+   if (!r) return NULL;
+   return _eina_matrixsparse_row_cell_idx_get(r, col);
+}
+
+static inline void
+_eina_matrixsparse_row_idx_siblings_find(const Eina_Matrixsparse *m, unsigned long row, Eina_Matrixsparse_Row **p_prev, Eina_Matrixsparse_Row **p_next)
+{
+   Eina_Matrixsparse_Row *r;
+   int dir;
+
+   _eina_matrixsparse_row_find_parms_get(m, row, &r, &dir);
+   assert(dir != 0);
+   if (dir > 0)
+     {
+	for (; r != NULL; r = r->next)
+	  if (r->row > row)
+	    break;
+	assert(r != NULL);
+	*p_prev = r->prev;
+	*p_next = r;
+     }
+   else if (dir < 0)
+     {
+	for (; r != NULL; r = r->prev)
+	  if (r->row < row)
+	    break;
+	assert(r != NULL);
+	*p_prev = r;
+	*p_next = r->next;
+     }
+}
+
+static inline void
+_eina_matrixsparse_row_cell_idx_siblings_find(const Eina_Matrixsparse_Row *r, unsigned long col, Eina_Matrixsparse_Cell **p_prev, Eina_Matrixsparse_Cell **p_next)
+{
+   Eina_Matrixsparse_Cell *c;
+   int dir;
+
+   _eina_matrixsparse_row_cell_find_parms_get(r, col, &c, &dir);
+   assert(dir != 0);
+   if (dir > 0)
+     {
+	for (; c != NULL; c = c->next)
+	  if (c->col > col)
+	    break;
+	assert(c != NULL);
+	*p_prev = c->prev;
+	*p_next = c;
+     }
+   else if (dir < 0)
+     {
+	for (; c != NULL; c = c->prev)
+	  if (c->col < col)
+	    break;
+	assert(c != NULL);
+	*p_prev = c;
+	*p_next = c->next;
+     }
+}
+
+static inline Eina_Matrixsparse_Row *
+_eina_matrixsparse_row_idx_add(Eina_Matrixsparse *m, unsigned long row)
+{
+   Eina_Matrixsparse_Row *r = eina_mempool_malloc
+     (_eina_matrixsparse_row_mp, sizeof(Eina_Matrixsparse_Row));
+   if (!r) return NULL;
+
+   if (!m->rows)
+     {
+	r->prev = NULL;
+	r->next = NULL;
+	m->rows = r;
+	m->last_row = r;
+     }
+   else if (row < m->rows->row)
+     {
+	r->prev = NULL;
+	r->next = m->rows;
+	m->rows->prev = r;
+	m->rows = r;
+     }
+   else if (row > m->last_row->row)
+     {
+	r->prev = m->last_row;
+	m->last_row->next = r;
+	r->next = NULL;
+	m->last_row = r;
+     }
+   else
+     {
+	Eina_Matrixsparse_Row *prev = NULL, *next = NULL;
+	_eina_matrixsparse_row_idx_siblings_find(m, row, &prev, &next);
+	assert(prev != NULL);
+	assert(next != NULL);
+	r->prev = prev;
+	r->next = next;
+	prev->next = r;
+	next->prev = r;
+     }
+
+   r->cols = NULL;
+   r->last_col = NULL;
+   r->last_used = NULL;
+   r->row = row;
+   r->parent = m;
+   EINA_MAGIC_SET(r, EINA_MAGIC_MATRIXSPARSE_ROW);
+   m->last_used = r;
+   return r;
+}
+
+static inline Eina_Matrixsparse_Cell *
+_eina_matrixsparse_row_cell_idx_add(Eina_Matrixsparse_Row *r, unsigned long col, const void *data)
+{
+   Eina_Matrixsparse_Cell *c = eina_mempool_malloc
+     (_eina_matrixsparse_cell_mp, sizeof(Eina_Matrixsparse_Cell));
+   if (!c) return NULL;
+
+   if (!r->cols)
+     {
+	c->prev = NULL;
+	c->next = NULL;
+	r->cols = c;
+	r->last_col = c;
+     }
+   else if (col < r->cols->col)
+     {
+	c->prev = NULL;
+	c->next = r->cols;
+	r->cols->prev = c;
+	r->cols = c;
+     }
+   else if (col > r->last_col->col)
+     {
+	c->prev = r->last_col;
+	r->last_col->next = c;
+	c->next = NULL;
+	r->last_col = c;
+     }
+   else
+     {
+	Eina_Matrixsparse_Cell *prev = NULL, *next = NULL;
+	_eina_matrixsparse_row_cell_idx_siblings_find(r, col, &prev, &next);
+	assert(prev != NULL);
+	assert(next != NULL);
+	c->prev = prev;
+	c->next = next;
+	prev->next = c;
+	next->prev = c;
+     }
+
+   c->data = (void *)data;
+   c->col = col;
+   c->parent = r;
+   EINA_MAGIC_SET(c, EINA_MAGIC_MATRIXSPARSE_CELL);
+   r->last_used = c;
+   return c;
+}
+
+static inline Eina_Bool
+_eina_matrixsparse_cell_idx_add(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data)
+{
+   Eina_Matrixsparse_Row *r = _eina_matrixsparse_row_idx_get(m, row);
+   if (!r)
+     r = _eina_matrixsparse_row_idx_add(m, row);
+   if (!r)
+     return 0;
+
+   if (_eina_matrixsparse_row_cell_idx_add(r, col, data))
+     return 1;
+
+   if (r->cols)
+     return 0;
+   _eina_matrixsparse_row_unlink(r);
+   _eina_matrixsparse_row_free(r, m->free.func, m->free.user_data);
+   return 0;
+}
+
+/*============================================================================*
+ *  			         Iterators                                    *
+ *============================================================================*/
+static Eina_Bool
+_eina_matrixsparse_iterator_next(Eina_Matrixsparse_Iterator *it, void **data)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(it, EINA_FALSE);
+
+   /* do not touch it->idx */
+
+   if (!it->ref.col) return 0;
+   *data = (Eina_Matrixsparse_Cell *)it->ref.col;
+
+   it->ref.col = it->ref.col->next;
+   if (!it->ref.col)
+     {
+	it->ref.row = it->ref.row->next;
+	if (it->ref.row)
+	  it->ref.col = it->ref.row->cols;
+     }
+   return 1;
+}
+
+static Eina_Matrixsparse *
+_eina_matrixsparse_iterator_get_container(Eina_Matrixsparse_Iterator *it)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(it, NULL);
+   return (Eina_Matrixsparse *)it->m;
+}
+
+static void
+_eina_matrixsparse_iterator_free(Eina_Matrixsparse_Iterator *it)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(it);
+   EINA_MAGIC_SET(it, EINA_MAGIC_NONE);
+   EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_NONE);
+   free(it);
+}
+
+static Eina_Bool
+_eina_matrixsparse_iterator_complete_next(Eina_Matrixsparse_Iterator_Complete *it, void **data)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(it, EINA_FALSE);
+
+   if (it->idx.row >= it->m->size.rows)
+     return 0;
+
+   if (it->dummy.col.data != NULL)
+     ERR("Last iterator call changed dummy cell!");
+
+   if ((it->ref.col) &&
+       (it->ref.col->col == it->idx.col) &&
+       (it->ref.row->row == it->idx.row))
+     {
+	*data = (Eina_Matrixsparse_Cell *)it->ref.col;
+	it->ref.col = it->ref.col->next;
+	if (!it->ref.col)
+	  {
+	     it->ref.row = it->ref.row->next;
+	     if (it->ref.row)
+	       it->ref.col = it->ref.row->cols;
+	  }
+     }
+   else
+     {
+	it->dummy.col.data = NULL;
+	it->dummy.col.col = it->idx.col;
+	it->dummy.row.row = it->idx.row;
+	*data = &it->dummy.col;
+     }
+
+   it->idx.col++;
+   if (it->idx.col == it->m->size.cols)
+     {
+	it->idx.col = 0;
+	it->idx.row++;
+     }
+   return 1;
+}
+
+static Eina_Matrixsparse *
+_eina_matrixsparse_iterator_complete_get_container(Eina_Matrixsparse_Iterator_Complete *it)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(it, NULL);
+   return (Eina_Matrixsparse *)it->m;
+}
+
+static void
+_eina_matrixsparse_iterator_complete_free(Eina_Matrixsparse_Iterator_Complete *it)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ITERATOR(it);
+
+   if (it->dummy.col.data != NULL)
+     ERR("Last iterator call changed dummy cell!");
+
+   EINA_MAGIC_SET(it, EINA_MAGIC_NONE);
+   EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_NONE);
+   free(it);
+}
+
+
+/**
+ * @endcond
+ */
+
+/*============================================================================*
+ *                                 Global                                     *
+ *============================================================================*/
+
+/*============================================================================*
+ *                                   API                                      *
+ *============================================================================*/
+
+/**
+ * @addtogroup Eina_Matrixsparse_Group Matrix Sparse
+ *
+ * @brief These functions provide matrix sparse management.
+ *
+ * For more information, you can look at the @ref tutorial_matrixsparse_page.
+ *
+ * @{
+ */
+
+/**
+ * @internal
+ * @brief Initialize the matrixsparse module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the matrixsparse module of Eina. It is called by
+ * eina_init().
+ *
+ * This function creates mempool to speed up matrix rows and cells
+ * management, using EINA_MEMPOOL environment variable if it is set to
+ * choose the memory pool type to use.
+ *
+ * @see eina_init()
+ */
+Eina_Bool
+eina_matrixsparse_init(void)
+{
+   const char *choice, *tmp;
+
+   _eina_matrixsparse_log_dom = eina_log_domain_register("eina_matrixsparse", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_matrixsparse_log_dom < 0)
+     {
+	EINA_LOG_ERR("Could not register log domain: eina_matrixsparse");
+	return EINA_FALSE;
+     }
+
+#ifdef EINA_DEFAULT_MEMPOOL
+   choice = "pass_through";
+#else
+   choice = "chained_mempool";
+#endif
+   tmp = getenv("EINA_MEMPOOL");
+   if (tmp && tmp[0])
+     choice = tmp;
+
+   _eina_matrixsparse_cell_mp = eina_mempool_add
+     (choice, "matrixsparse_cell", NULL, sizeof (Eina_Matrixsparse_Cell), 120);
+   if (!_eina_matrixsparse_cell_mp)
+     {
+	ERR("Mempool for matrixsparse_cell cannot be allocated in matrixsparse init.");
+	goto on_init_fail;
+     }
+
+   _eina_matrixsparse_row_mp = eina_mempool_add
+     (choice, "matrixsparse_row", NULL, sizeof (Eina_Matrixsparse_Row), 120);
+   if (!_eina_matrixsparse_row_mp)
+     {
+	ERR("Mempool for matrixsparse_row cannot be allocated in matrixsparse init.");
+	goto on_init_fail;
+     }
+
+#define EMS(n) eina_magic_string_static_set(n, n##_STR)
+   EMS(EINA_MAGIC_MATRIXSPARSE);
+   EMS(EINA_MAGIC_MATRIXSPARSE_ROW);
+   EMS(EINA_MAGIC_MATRIXSPARSE_CELL);
+   EMS(EINA_MAGIC_MATRIXSPARSE_ITERATOR);
+   EMS(EINA_MAGIC_MATRIXSPARSE_ROW_ACCESSOR);
+   EMS(EINA_MAGIC_MATRIXSPARSE_ROW_ITERATOR);
+   EMS(EINA_MAGIC_MATRIXSPARSE_CELL_ACCESSOR);
+   EMS(EINA_MAGIC_MATRIXSPARSE_CELL_ITERATOR);
+#undef EMS
+
+   return EINA_TRUE;
+
+ on_init_fail:
+   eina_log_domain_unregister(_eina_matrixsparse_log_dom);
+   _eina_matrixsparse_log_dom = -1;
+   return EINA_FALSE;
+}
+
+/**
+ * @internal
+ * @brief Shut down the matrixsparse module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the matrixsparse module set up by
+ * eina_matrixsparse_init(). It is called by eina_shutdown().
+ *
+ * @see eina_shutdown()
+ */
+Eina_Bool
+eina_matrixsparse_shutdown(void)
+{
+   eina_mempool_del(_eina_matrixsparse_row_mp);
+   eina_mempool_del(_eina_matrixsparse_cell_mp);
+
+   eina_log_domain_unregister(_eina_matrixsparse_log_dom);
+   _eina_matrixsparse_log_dom = -1;
+   return EINA_TRUE;
+}
+
+/**
+ * @brief Create a new Sparse Matrix.
+ *
+ * @param rows number of rows in matrix. Operations with rows greater than this
+ *        value will fail.
+ * @param cols number of columns in matrix. Operations with columns greater
+ *        than this value will fail.
+ * @param free_func used to delete cell data contents, used by
+ *        eina_matrixsparse_free(), eina_matrixsparse_size_set(),
+ *        eina_matrixsparse_row_idx_clear(),
+ *        eina_matrixsparse_column_idx_clear(),
+ *        eina_matrixsparse_cell_idx_clear() and possible others.
+ * @param user_data given to @a free_func as first parameter.
+ *
+ * @return newly allocated matrix or NULL if allocation failed and eina_error
+ *         is set.
+ */
+EAPI Eina_Matrixsparse *
+eina_matrixsparse_new(unsigned long rows, unsigned long cols, void (*free_func)(void *user_data, void *cell_data), const void *user_data)
+{
+   Eina_Matrixsparse *m;
+
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(rows > 0, NULL);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(cols > 0, NULL);
+
+   m = malloc(sizeof(Eina_Matrixsparse));
+   if (!m)
+     {
+	eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+	return NULL;
+     }
+
+   m->rows = NULL;
+   m->last_row = NULL;
+   m->last_used = NULL;
+
+   m->size.rows = rows;
+   m->size.cols = cols;
+   m->free.func = free_func;
+   m->free.user_data = (void *)user_data;
+
+   EINA_MAGIC_SET(m, EINA_MAGIC_MATRIXSPARSE);
+   eina_error_set(0);
+   return m;
+}
+
+/**
+ * @brief Free resources allocated to Sparse Matrix.
+ *
+ * @param m The Sparse Matrix instance to free, must @b not be @c NULL.
+ */
+EAPI void
+eina_matrixsparse_free(Eina_Matrixsparse *m)
+{
+   void (*free_func)(void *, void *);
+   void *user_data;
+
+   Eina_Matrixsparse_Row *r;
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m);
+
+   free_func = m->free.func;
+   user_data = m->free.user_data;
+
+   r = m->rows;
+   while (r)
+     {
+	Eina_Matrixsparse_Row *r_aux = r;
+	r = r->next;
+	_eina_matrixsparse_row_free(r_aux, free_func, user_data);
+     }
+
+   EINA_MAGIC_SET(m, EINA_MAGIC_NONE);
+   free(m);
+}
+
+/**
+ * @brief Get the current size of Sparse Matrix.
+ *
+ * The given parameters are guaranteed to be set if they're not NULL,
+ * even if this function fails (ie: @a m is not a valid matrix instance).
+ *
+ * @param m the sparse matrix to operate on.
+ * @param rows returns the number of rows, may be NULL. If @a m is invalid,
+ *        returned value is zero, otherwise it's a positive integer.
+ * @param cols returns the number of columns, may be NULL. If @a m is
+ *        invalid, returned value is zero, otherwise it's a positive integer.
+ */
+EAPI void
+eina_matrixsparse_size_get(const Eina_Matrixsparse *m, unsigned long *rows, unsigned long *cols)
+{
+   if (rows) *rows = 0;
+   if (cols) *cols = 0;
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m);
+   if (rows) *rows = m->size.rows;
+   if (cols) *cols = m->size.cols;
+}
+
+/**
+ * @brief Resize the Sparse Matrix.
+ *
+ * This will resize the sparse matrix, possibly freeing cells on rows
+ * and columns that will cease to exist.
+ *
+ * @param m the sparse matrix to operate on.
+ * @param rows the new number of rows, must be greater than zero.
+ * @param cols the new number of columns, must be greater than zero.
+ * @return 1 on success, 0 on failure.
+ *
+ * @warning cells, rows or columns are not reference counted and thus
+ *     after this call any reference might be invalid if instance were
+ *     freed.
+ */
+EAPI Eina_Bool
+eina_matrixsparse_size_set(Eina_Matrixsparse *m, unsigned long rows, unsigned long cols)
+{
+   Eina_Bool update_last_used_row;
+   Eina_Matrixsparse_Row *r;
+   void (*free_func)(void *, void *);
+   void *user_data;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(rows > 0, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(cols > 0, 0);
+
+   if ((rows == m->size.rows) && (cols == m->size.cols)) return 1;
+
+   update_last_used_row = ((m->last_used) && (m->last_used->row >= rows));
+   free_func = m->free.func;
+   user_data = m->free.user_data;
+
+   r = m->last_row;
+   while (r && r->row >= rows)
+     {
+	Eina_Matrixsparse_Row *r_aux = r;
+	r = r->prev;
+	_eina_matrixsparse_row_free(r_aux, free_func, user_data);
+     }
+   if (!r)
+     {
+	m->last_row = NULL;
+	m->rows = NULL;
+     }
+   else if (r != m->last_row)
+     {
+	r->next = NULL;
+	m->last_row = r;
+     }
+
+   if (update_last_used_row)
+     m->last_used = m->last_row;
+
+   r = m->rows;
+   while (r)
+     {
+	Eina_Matrixsparse_Cell *c = r->last_col;
+	Eina_Bool update_last_used_col;
+	update_last_used_col = ((r->last_used) && (r->last_used->col >= cols));
+	while (c && c->col >= cols)
+	  {
+	     Eina_Matrixsparse_Cell *c_aux = c;
+	     c = c->prev;
+	     _eina_matrixsparse_cell_free(c_aux, free_func, user_data);
+	  }
+	if (!c)
+	  {
+	     Eina_Matrixsparse_Row *r_aux = r;
+	     r->cols = NULL;
+	     r->last_col = NULL;
+	     if (r->next)
+	       r->next->prev = r->prev;
+	     else
+	       m->last_row = r->prev;
+	     if (r->prev)
+	       r->prev->next = r->next;
+	     else
+	       m->rows = r->next;
+	     r = r->next;
+	     _eina_matrixsparse_row_free(r_aux, free_func, user_data);
+	  }
+	else
+	  {
+	     if (c != r->last_col)
+	       {
+		  c->next = NULL;
+		  r->last_col = c;
+	       }
+	     if (update_last_used_col)
+	       r->last_used = r->last_col;
+
+	     r = r->next;
+	  }
+     }
+
+   update_last_used_row = 0;
+   if (m->last_used)
+     {
+	if (m->last_row)
+	  update_last_used_row = m->last_used->row > m->last_row->row;
+	else
+	  update_last_used_row = 1;
+     }
+
+   if (update_last_used_row)
+     m->last_used = m->last_row;
+
+   m->size.rows = rows;
+   m->size.cols = cols;
+   return 1;
+}
+
+/**
+ * Get the cell reference inside Sparse Matrix.
+ *
+ * @param m the sparse matrix to operate on.
+ * @param row the new number of row to clear.
+ * @param col the new number of column to clear.
+ * @param cell pointer to return cell reference, if any exists.
+ *
+ * @return 1 on success, 0 on failure. It is considered success if did not
+ *     exist but index is inside matrix size, in this case @c *cell == NULL
+ *
+ * @see eina_matrixsparse_cell_data_get()
+ * @see eina_matrixsparse_data_idx_get()
+ */
+EAPI Eina_Bool
+eina_matrixsparse_cell_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col, Eina_Matrixsparse_Cell **cell)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(cell, 0);
+   *cell = NULL;
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(row < m->size.rows, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(col < m->size.cols, 0);
+   *cell = _eina_matrixsparse_cell_idx_get(m, row, col);
+   return 1;
+}
+
+/**
+ * Get data associated with given cell reference.
+ *
+ * @param cell given cell reference, must @b not be @c NULL.
+ *
+ * @return data associated with given cell.
+ *
+ * @see eina_matrixsparse_cell_idx_get()
+ * @see eina_matrixsparse_data_idx_get()
+ */
+EAPI void *
+eina_matrixsparse_cell_data_get(const Eina_Matrixsparse_Cell *cell)
+{
+   EINA_MAGIC_CHECK_MATRIXSPARSE_CELL(cell, NULL);
+   return cell->data;
+}
+
+/**
+ * Get data associated with given cell given its indexes.
+ *
+ * @param m the sparse matrix to operate on.
+ * @param row the new number of row to clear.
+ * @param col the new number of column to clear.
+ *
+ * @return data associated with given cell or NULL if nothing is associated.
+ *
+ * @see eina_matrixsparse_cell_idx_get()
+ * @see eina_matrixsparse_cell_data_get()
+ */
+EAPI void *
+eina_matrixsparse_data_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col)
+{
+   Eina_Matrixsparse_Cell *c;
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, NULL);
+   c = _eina_matrixsparse_cell_idx_get(m, row, col);
+   if (c) return c->data;
+   else   return NULL;
+}
+
+/**
+ * Get position (indexes) of the given cell.
+ *
+ * @param cell the cell reference, must @b not be @c NULL.
+ * @param row where to store cell row number, may be @c NULL.
+ * @param col where to store cell column number, may be @c NULL.
+ *
+ * @return 1 on success, 0 otherwise (@c cell is @c NULL).
+ */
+EAPI Eina_Bool
+eina_matrixsparse_cell_position_get(const Eina_Matrixsparse_Cell *cell, unsigned long *row, unsigned long *col)
+{
+   if (row) *row = 0;
+   if (col) *col = 0;
+   EINA_MAGIC_CHECK_MATRIXSPARSE_CELL(cell, 0);
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ROW(cell->parent, 0);
+   if (row) *row = cell->parent->row;
+   if (col) *col = cell->col;
+   return 1;
+}
+
+/**
+ * Change cell reference value without freeing the possibly existing old value.
+ *
+ * @param cell the cell reference, must @b not be @c NULL.
+ * @param data new data to set.
+ * @param p_old returns the old value intact (not freed).
+ *
+ * @return 1 on success, 0 otherwise (@a cell is @c NULL).
+ *
+ * @see eina_matrixsparse_cell_data_set()
+ * @see eina_matrixsparse_data_idx_replace()
+ */
+EAPI Eina_Bool
+eina_matrixsparse_cell_data_replace(Eina_Matrixsparse_Cell *cell, const void *data, void **p_old)
+{
+   if (p_old) *p_old = NULL;
+   EINA_MAGIC_CHECK_MATRIXSPARSE_CELL(cell, 0);
+
+   if (p_old) *p_old = cell->data;
+   cell->data = (void *)data;
+   return 1;
+}
+
+/**
+ * Change cell value freeing the possibly existing old value.
+ *
+ * In contrast to eina_matrixsparse_cell_data_replace(), this function will
+ * call @c free_func() on existing value.
+ *
+ * @param cell the cell reference, must @b not be @c NULL.
+ * @param data new data to set.
+ *
+ * @return 1 on success, 0 otherwise (@a cell is @c NULL).
+ *
+ * @see eina_matrixsparse_cell_data_replace()
+ * @see eina_matrixsparse_data_idx_set()
+ */
+EAPI Eina_Bool
+eina_matrixsparse_cell_data_set(Eina_Matrixsparse_Cell *cell, const void *data)
+{
+   Eina_Matrixsparse *m;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE_CELL(cell, 0);
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ROW(cell->parent, 0);
+   EINA_MAGIC_CHECK_MATRIXSPARSE(cell->parent->parent, 0);
+
+   m = cell->parent->parent;
+
+   if (m->free.func)
+     m->free.func(m->free.user_data, cell->data);
+
+   cell->data = (void *)data;
+   return 1;
+}
+
+/**
+ * Change cell value without freeing the possibly existing old value, using
+ * indexes.
+ *
+ * @param cell the cell reference, must @b not be @c NULL.
+ * @param row the row number to set the value.
+ * @param col the column number to set the value.
+ * @param data new data to set.
+ * @param p_old returns the old value intact (not freed).
+ *
+ * @return 1 on success, 0 otherwise (@a m is @c NULL, indexes are not valid).
+ *
+ * @see eina_matrixsparse_cell_data_replace()
+ * @see eina_matrixsparse_data_idx_set()
+ */
+EAPI Eina_Bool
+eina_matrixsparse_data_idx_replace(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data, void **p_old)
+{
+   Eina_Matrixsparse_Cell *cell;
+
+   if (p_old) *p_old = NULL;
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(row < m->size.rows, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(col < m->size.cols, 0);
+
+   cell = _eina_matrixsparse_cell_idx_get(m, row, col);
+   if (cell)
+     {
+	if (p_old) *p_old = cell->data;
+	cell->data = (void *)data;
+	return 1;
+     }
+
+   return _eina_matrixsparse_cell_idx_add(m, row, col, data);
+}
+
+/**
+ * Change cell value freeing the possibly existing old value, using
+ * indexes.
+ *
+ * In contrast to eina_matrixsparse_data_idx_replace(), this function will
+ * call @c free_func() on existing value.
+ *
+ * @param cell the cell reference, must @b not be @c NULL.
+ * @param row the row number to set the value.
+ * @param col the column number to set the value.
+ * @param data new data to set.
+ *
+ * @return 1 on success, 0 otherwise (@a m is @c NULL, indexes are not valid).
+ *
+ * @see eina_matrixsparse_cell_data_replace()
+ */
+EAPI Eina_Bool
+eina_matrixsparse_data_idx_set(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data)
+{
+   Eina_Matrixsparse_Cell *cell;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(row < m->size.rows, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(col < m->size.cols, 0);
+
+   cell = _eina_matrixsparse_cell_idx_get(m, row, col);
+   if (cell)
+     {
+	if (m->free.func)
+	  m->free.func(m->free.user_data, cell->data);
+	cell->data = (void *)data;
+	return 1;
+     }
+
+   return _eina_matrixsparse_cell_idx_add(m, row, col, data);
+}
+
+/**
+ * Clear (erase all cells) of row given its index.
+ *
+ * Existing cells will be cleared with @c free_func() given to
+ * eina_matrixsparse_new().
+ *
+ * @param m the sparse matrix to operate on.
+ * @param row the new number of row to clear.
+ *
+ * @return 1 on success, 0 on failure. It is considered success if row
+ *     had no cells filled. Failure is asking for clear row outside
+ *     matrix size.
+ *
+ * @warning cells, rows or columns are not reference counted and thus
+ *     after this call any reference might be invalid if instance were
+ *     freed.
+ */
+EAPI Eina_Bool
+eina_matrixsparse_row_idx_clear(Eina_Matrixsparse *m, unsigned long row)
+{
+   Eina_Matrixsparse_Row *r;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(row < m->size.rows, 0);
+
+   r = _eina_matrixsparse_row_idx_get(m, row);
+   if (!r) return 1;
+
+   _eina_matrixsparse_row_unlink(r);
+   _eina_matrixsparse_row_free(r, m->free.func, m->free.user_data);
+
+   return 1;
+}
+
+/**
+ * Clear (erase all cells) of column given its index.
+ *
+ * Existing cells will be cleared with @c free_func() given to
+ * eina_matrixsparse_new().
+ *
+ * @param m the sparse matrix to operate on.
+ * @param col the new number of column to clear.
+ *
+ * @return 1 on success, 0 on failure. It is considered success if column
+ *     had no cells filled. Failure is asking for clear column outside
+ *     matrix size.
+ *
+ * @warning cells, rows or columns are not reference counted and thus
+ *     after this call any reference might be invalid if instance were
+ *     freed.
+ */
+EAPI Eina_Bool
+eina_matrixsparse_column_idx_clear(Eina_Matrixsparse *m, unsigned long col)
+{
+   Eina_Matrixsparse_Row *r;
+   void (*free_func)(void *, void *);
+   void *user_data;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(col < m->size.cols, 0);
+
+   free_func = m->free.func;
+   user_data = m->free.user_data;
+
+   for (r = m->rows; r != NULL;)
+     {
+	Eina_Matrixsparse_Row *r_aux = r;
+	Eina_Matrixsparse_Cell *c;
+
+	c = _eina_matrixsparse_row_cell_idx_get(r, col);
+	r = r->next;
+
+	if (!c)
+	  continue;
+
+	if ((r_aux->cols != c) || (r_aux->last_col != c))
+	  {
+	     _eina_matrixsparse_cell_unlink(c);
+	     _eina_matrixsparse_cell_free(c, free_func, user_data);
+	  }
+	else
+	  {
+	     _eina_matrixsparse_row_unlink(r_aux);
+	     _eina_matrixsparse_row_free(r_aux, free_func, user_data);
+	  }
+     }
+
+   return 1;
+}
+
+/**
+ * Clear (erase) cell given its indexes.
+ *
+ * Existing cell will be cleared with @c free_func() given to
+ * eina_matrixsparse_new().
+ *
+ * @param m the sparse matrix to operate on.
+ * @param row the new number of row to clear.
+ * @param col the new number of column to clear.
+ *
+ * @return 1 on success, 0 on failure. It is considered success if did not
+ *     exist but index is inside matrix size.
+ *
+ * @warning cells, rows or columns are not reference counted and thus
+ *     after this call any reference might be invalid if instance were
+ *     freed. Note that this call might delete container column and
+ *     row if this cell was the last remainder.
+ */
+EAPI Eina_Bool
+eina_matrixsparse_cell_idx_clear(Eina_Matrixsparse *m, unsigned long row, unsigned long col)
+{
+   Eina_Matrixsparse_Cell *c;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE(m, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(row < m->size.rows, 0);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(col < m->size.cols, 0);
+
+   c = _eina_matrixsparse_cell_idx_get(m, row, col);
+   if (!c) return 1;
+
+   _eina_matrixsparse_cell_unlink(c);
+   _eina_matrixsparse_cell_free(c, m->free.func, m->free.user_data);
+
+   return 1;
+}
+
+/**
+ * Clear (erase) cell given its reference.
+ *
+ * @param cell the cell reference, must @b not be @c NULL.
+ *
+ * @return 1 on success, 0 on failure.
+ *
+ * @warning cells, rows or columns are not reference counted and thus
+ *     after this call any reference might be invalid if instance were
+ *     freed. Note that this call might delete container column and
+ *     row if this cell was the last remainder.
+ */
+EAPI Eina_Bool
+eina_matrixsparse_cell_clear(Eina_Matrixsparse_Cell *cell)
+{
+   Eina_Matrixsparse *m;
+
+   EINA_MAGIC_CHECK_MATRIXSPARSE_CELL(cell, 0);
+   EINA_MAGIC_CHECK_MATRIXSPARSE_ROW(cell->parent, 0);
+   EINA_MAGIC_CHECK_MATRIXSPARSE(cell->parent->parent, 0);
+
+   m = cell->parent->parent;
+
+   _eina_matrixsparse_cell_unlink(cell);
+   _eina_matrixsparse_cell_free(cell, m->free.func, m->free.user_data);
+   return 1;
+}
+
+/**
+ * Creates a new iterator over existing matrix cells.
+ *
+ * This is a cheap walk, it will just report existing cells and holes
+ * in the sparse matrix will be ignored. That means the reported
+ * indexes will not be sequential.
+ *
+ * The iterator data will be the cell reference, one may query current
+ * position with eina_matrixsparse_cell_position_get() and cell value
+ * with eina_matrixsparse_cell_data_get().
+ *
+ * @param m The Sparse Matrix reference, must @b not be @c NULL.
+ * @return A new iterator.
+ *
+ * @warning if the matrix structure changes then the iterator becomes
+ *    invalid! That is, if you add or remove cells this iterator
+ *    behavior is undefined and your program may crash!
+ */
+EAPI Eina_Iterator *
+eina_matrixsparse_iterator_new(const Eina_Matrixsparse *m)
+{
+   Eina_Matrixsparse_Iterator *it;
+
+   it = calloc(1, sizeof(*it));
+   if (!it)
+     {
+	eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+	return NULL;
+     }
+
+   EINA_MAGIC_SET(it, EINA_MAGIC_MATRIXSPARSE_ITERATOR);
+   EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
+
+   it->m = m;
+   it->ref.row = m->rows;
+   it->ref.col = m->rows ? m->rows->cols : NULL;
+
+   it->iterator.next = FUNC_ITERATOR_NEXT(_eina_matrixsparse_iterator_next);
+   it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_eina_matrixsparse_iterator_get_container);
+   it->iterator.free = FUNC_ITERATOR_FREE(_eina_matrixsparse_iterator_free);
+   return &it->iterator;
+}
+
+/**
+ * Creates a new iterator over all matrix cells.
+ *
+ * Unlike eina_matrixsparse_iterator_new() this one will report all
+ * matrix cells, even those that are still empty (holes). These will
+ * be reported as dummy cells that contains no data.
+ *
+ * Be aware that iterating a big matrix (1000x1000) will call your
+ * function that number of times (1000000 times in that case) even if
+ * your matrix have no elements at all!
+ *
+ * The iterator data will be the cell reference, one may query current
+ * position with eina_matrixsparse_cell_position_get() and cell value
+ * with eina_matrixsparse_cell_data_get(). If cell is empty then the
+ * reference will be a dummy/placeholder, thus setting value with
+ * eina_matrixsparse_cell_data_set() will leave pointer unreferenced.
+ *
+ * @param m The Sparse Matrix reference, must @b not be @c NULL.
+ * @return A new iterator.
+ *
+ * @warning if the matrix structure changes then the iterator becomes
+ *    invalid! That is, if you add or remove cells this iterator
+ *    behavior is undefined and your program may crash!
+ */
+EAPI Eina_Iterator *
+eina_matrixsparse_iterator_complete_new(const Eina_Matrixsparse *m)
+{
+   Eina_Matrixsparse_Iterator_Complete *it;
+
+   it = calloc(1, sizeof(*it));
+   if (!it)
+     {
+	eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+	return NULL;
+     }
+
+   EINA_MAGIC_SET(it, EINA_MAGIC_MATRIXSPARSE_ITERATOR);
+   EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
+
+   it->m = m;
+   it->idx.row = 0;
+   it->idx.col = 0;
+   it->ref.row = m->rows;
+   it->ref.col = m->rows ? m->rows->cols : NULL;
+
+   it->dummy.row.next = it->dummy.row.prev = NULL;
+   it->dummy.row.cols = it->dummy.row.last_col = it->dummy.row.last_used = NULL;
+   it->dummy.row.parent = (Eina_Matrixsparse *)m;
+   EINA_MAGIC_SET(&it->dummy.row, EINA_MAGIC_MATRIXSPARSE_ROW);
+
+   it->dummy.col.next = it->dummy.col.prev = NULL;
+   it->dummy.col.data = NULL;
+   it->dummy.col.parent = &it->dummy.row;
+   EINA_MAGIC_SET(&it->dummy.col, EINA_MAGIC_MATRIXSPARSE_CELL);
+
+   it->iterator.next = FUNC_ITERATOR_NEXT(_eina_matrixsparse_iterator_complete_next);
+   it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_eina_matrixsparse_iterator_complete_get_container);
+   it->iterator.free = FUNC_ITERATOR_FREE(_eina_matrixsparse_iterator_complete_free);
+   return &it->iterator;
+}
diff --git a/src/lib/eina_mempool.c b/src/lib/eina_mempool.c
index bfd55dd..310af05 100644
--- a/src/lib/eina_mempool.c
+++ b/src/lib/eina_mempool.c
@@ -17,7 +17,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-# include <config.h>
+# include "config.h"
 #endif
 
 #include <assert.h>
@@ -25,11 +25,16 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "eina_mempool.h"
+#include "eina_config.h"
+#include "eina_private.h"
 #include "eina_hash.h"
 #include "eina_module.h"
-#include "eina_private.h"
+#include "eina_log.h"
+#include "eina_main.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_mempool.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -41,7 +46,18 @@
 
 static Eina_Hash *_backends;
 static Eina_Array *_modules;
-static int _init_count = 0;
+static int _eina_mempool_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_mempool_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_mempool_log_dom, __VA_ARGS__)
+
 
 static Eina_Mempool *
 _new_from_buffer(const char *name, const char *context, const char *options, va_list args)
@@ -105,14 +121,20 @@ void fixed_bitmap_shutdown(void);
  *                                 Global                                     *
  *============================================================================*/
 
-EAPI Eina_Bool eina_mempool_register(Eina_Mempool_Backend *be)
+EAPI Eina_Bool
+eina_mempool_register(Eina_Mempool_Backend *be)
 {
-	return eina_hash_add(_backends, be->name, be);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(be, 0);
+   DBG("be=%p, name=%p", be, be->name);
+   return eina_hash_add(_backends, be->name, be);
 }
 
-EAPI void eina_mempool_unregister(Eina_Mempool_Backend *be)
+EAPI void
+eina_mempool_unregister(Eina_Mempool_Backend *be)
 {
-	eina_hash_del(_backends, be->name, be);
+   EINA_SAFETY_ON_NULL_RETURN(be);
+   DBG("be=%p, name=%p", be, be->name);
+   eina_hash_del(_backends, be->name, be);
 }
 
 /*============================================================================*
@@ -129,105 +151,102 @@ EAPI void eina_mempool_unregister(Eina_Mempool_Backend *be)
 
 EAPI Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE = 0;
 
-EAPI int
+static const char EINA_ERROR_NOT_MEMPOOL_MODULE_STR[] = "Not a memory pool module.";
+
+Eina_Bool
 eina_mempool_init(void)
 {
-	if (!_init_count)
-	{
-		char *path;
-
-		if (!eina_hash_init())
-		  {
-		     fprintf(stderr, "Could not initialize eina hash module.\n");
-		     return 0;
-		  }
-		if (!eina_module_init())
-		  {
-		     fprintf(stderr, "Could not initialize eina module module.\n");
-		     goto module_init_error;
-		  }
-
-		EINA_ERROR_NOT_MEMPOOL_MODULE = eina_error_msg_register("Not a memory pool module.");
-		_backends = eina_hash_string_superfast_new(NULL);
-
-		/* dynamic backends */
-		_modules = eina_module_list_get(NULL, PACKAGE_LIB_DIR "/eina/mp/", 0, NULL, NULL);
-
-		path = eina_module_environment_path_get("HOME", "/.eina/mp/");
-		_modules = eina_module_list_get(_modules, path, 0, NULL, NULL);
-		if (path) free(path);
-
-		path = eina_module_environment_path_get("EINA_MODULES_MEMPOOL_DIR", "/eina/mp/");
-		_modules = eina_module_list_get(_modules, path, 0, NULL, NULL);
-		if (path) free(path);
-
-		path = eina_module_symbol_path_get(eina_mempool_init, "/eina/mp/");
-		_modules = eina_module_list_get(_modules, path, 0, NULL, NULL);
-		if (path) free(path);
-
-		if (!_modules)
-		{
-			EINA_ERROR_PERR("ERROR: no mempool modules able to be loaded.\n");
-			eina_hash_free(_backends);
-			goto mempool_init_error;
-		}
-		eina_module_list_load(_modules);
-		/* builtin backends */
+   char *path;
+
+   _eina_mempool_log_dom = eina_log_domain_register("eina_mempool", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_mempool_log_dom < 0)
+     {
+	EINA_LOG_ERR("Could not register log domain: eina_mempool");
+	return 0;
+     }
+
+   EINA_ERROR_NOT_MEMPOOL_MODULE = eina_error_msg_static_register(EINA_ERROR_NOT_MEMPOOL_MODULE_STR);
+   _backends = eina_hash_string_superfast_new(NULL);
+
+   /* dynamic backends */
+   _modules = eina_module_list_get(NULL, PACKAGE_LIB_DIR "/eina/mp/", 0, NULL, NULL);
+
+   path = eina_module_environment_path_get("HOME", "/.eina/mp/");
+   _modules = eina_module_list_get(_modules, path, 0, NULL, NULL);
+   if (path) free(path);
+
+   path = eina_module_environment_path_get("EINA_MODULES_MEMPOOL_DIR", "/eina/mp/");
+   _modules = eina_module_list_get(_modules, path, 0, NULL, NULL);
+   if (path) free(path);
+
+   path = eina_module_symbol_path_get(eina_init, "/eina/mp/");
+   _modules = eina_module_list_get(_modules, path, 0, NULL, NULL);
+   if (path) free(path);
+
+   if (!_modules)
+     {
+	ERR("no mempool modules able to be loaded.");
+	eina_hash_free(_backends);
+	goto mempool_init_error;
+     }
+   eina_module_list_load(_modules);
+   /* builtin backends */
 #ifdef EINA_STATIC_BUILD_CHAINED_POOL
-		chained_init();
+   chained_init();
 #endif
 #ifdef EINA_STATIC_BUILD_PASS_THROUGH
-		pass_through_init();
+   pass_through_init();
 #endif
 #ifdef EINA_STATIC_BUILD_EMEMOA_UNKNOWN
-		ememoa_unknown_init();
+   ememoa_unknown_init();
 #endif
 #ifdef EINA_STATIC_BUILD_EMEMOA_FIXED
-		ememoa_fixed_init();
+   ememoa_fixed_init();
+#endif
+#ifdef EINA_STATIC_BUILD_FIXED_BITMAP
+   fixed_bitmap_init();
 #endif
-	}
-	return ++_init_count;
 
-	mempool_init_error:
-	   eina_module_shutdown();
-	module_init_error:
-	   eina_hash_shutdown();
+   return EINA_TRUE;
 
-	return 0;
+ mempool_init_error:
+   eina_log_domain_unregister(_eina_mempool_log_dom);
+   _eina_mempool_log_dom = -1;
 
+   return EINA_FALSE;
 }
 
-EAPI int
+Eina_Bool
 eina_mempool_shutdown(void)
 {
-	_init_count--;
-	if (_init_count != 0) return _init_count;
-
-	/* builtin backends */
+   /* builtin backends */
 #ifdef EINA_STATIC_BUILD_CHAINED_POOL
-	chained_shutdown();
+   chained_shutdown();
 #endif
 #ifdef EINA_STATIC_BUILD_PASS_THROUGH
-	pass_through_shutdown();
+   pass_through_shutdown();
 #endif
 #ifdef EINA_STATIC_BUILD_EMEMOA_UNKNOWN
-	ememoa_unknown_shutdown();
+   ememoa_unknown_shutdown();
 #endif
 #ifdef EINA_STATIC_BUILD_EMEMOA_FIXED
-	ememoa_fixed_shutdown();
+   ememoa_fixed_shutdown();
+#endif
+#ifdef EINA_STATIC_BUILD_FIXED_BITMAP
+   fixed_bitmap_shutdown();
 #endif
-	/* dynamic backends */
-	eina_module_list_flush(_modules);
-	if (_modules)
-	   eina_array_free(_modules);
+   /* dynamic backends */
+   eina_module_list_flush(_modules);
+   if (_modules)
+     eina_array_free(_modules);
 
-	eina_module_shutdown();
+   if (_backends)
+     eina_hash_free(_backends);
 
-	if (_backends)
-	   eina_hash_free(_backends);
+   eina_log_domain_unregister(_eina_mempool_log_dom);
+   _eina_mempool_log_dom = -1;
 
-	eina_hash_shutdown();
-	return 0;
+   return EINA_TRUE;
 }
 
 EAPI Eina_Mempool *
@@ -237,11 +256,16 @@ eina_mempool_add(const char *name, const char *context, const char *options, ...
 	va_list args;
 
 	EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
+	DBG("name=%s, context=%s, options=%s",
+	    name, context ? context : "", options ? options : "");
 
 	va_start(args, options);
 	mp = _new_from_buffer(name, context, options, args);
 	va_end(args);
 
+	DBG("name=%s, context=%s, options=%s, mp=%p",
+	    name, context ? context : "", options ? options : "", mp);
+
 	return mp;
 }
 
@@ -249,6 +273,7 @@ EAPI void eina_mempool_del(Eina_Mempool *mp)
 {
         EINA_SAFETY_ON_NULL_RETURN(mp);
 	EINA_SAFETY_ON_NULL_RETURN(mp->backend.shutdown);
+	DBG("mp=%p", mp);
 	mp->backend.shutdown(mp->backend_data);
 	free(mp);
 }
@@ -257,6 +282,7 @@ EAPI void eina_mempool_gc(Eina_Mempool *mp)
 {
         EINA_SAFETY_ON_NULL_RETURN(mp);
         EINA_SAFETY_ON_NULL_RETURN(mp->backend.garbage_collect);
+	DBG("mp=%p", mp);
 	mp->backend.garbage_collect(mp->backend_data);
 }
 
@@ -264,6 +290,7 @@ EAPI void eina_mempool_statistics(Eina_Mempool *mp)
 {
         EINA_SAFETY_ON_NULL_RETURN(mp);
         EINA_SAFETY_ON_NULL_RETURN(mp->backend.statistics);
+	DBG("mp=%p", mp);
 	mp->backend.statistics(mp->backend_data);
 }
 
diff --git a/src/lib/eina_module.c b/src/lib/eina_module.c
index aa6cdbc..dce5f1d 100644
--- a/src/lib/eina_module.c
+++ b/src/lib/eina_module.c
@@ -21,14 +21,9 @@
 #endif
 
 #ifdef HAVE_DLADDR
-#define _GNU_SOURCE
+# define _GNU_SOURCE
 #endif
 
-#include <stdio.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <string.h>
-
 #ifdef HAVE_ALLOCA_H
 # include <alloca.h>
 #elif defined __GNUC__
@@ -46,17 +41,26 @@ extern "C"
 void *alloca (size_t);
 #endif
 
+#include <stdio.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <string.h>
+
 #include <dlfcn.h>
 
 #ifdef HAVE_EVIL
 # include <Evil.h>
 #endif
 
+#include "eina_config.h"
+#include "eina_private.h"
 #include "eina_error.h"
-#include "eina_module.h"
 #include "eina_file.h"
-#include "eina_private.h"
+#include "eina_log.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_module.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -66,6 +70,22 @@ void *alloca (size_t);
  * @cond LOCAL
  */
 
+static int EINA_MODULE_LOG_DOM = -1;
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(EINA_MODULE_LOG_DOM, __VA_ARGS__)
+
+#ifdef WRN
+#undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(EINA_MODULE_LOG_DOM, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(EINA_MODULE_LOG_DOM, __VA_ARGS__)
+
 #if defined(_WIN32) || defined(__CYGWIN__)
 # define MODULE_EXTENSION ".dll"
 #else
@@ -75,75 +95,71 @@ void *alloca (size_t);
 #define EINA_MODULE_SYMBOL_INIT "__eina_module_init"
 #define EINA_MODULE_SYMBOL_SHUTDOWN "__eina_module_shutdown"
 
-EAPI Eina_Error EINA_ERROR_WRONG_MODULE = 0;
-EAPI Eina_Error EINA_ERROR_MODULE_INIT_FAILED = 0;
-
 struct _Eina_Module
 {
-	char *file;
-	void *handle;
-	int ref;
+   void *handle;
+   int ref;
+   const char file[];
 };
 
 typedef struct _Dir_List_Get_Cb_Data
 {
-	Eina_Module_Cb cb;
-	void *data;
-	Eina_Array *array;
+   Eina_Module_Cb cb;
+   void *data;
+   Eina_Array *array;
 } Dir_List_Get_Cb_Data;
 
 typedef struct _Dir_List_Cb_Data
 {
-	Eina_Module_Cb cb;
-	void *data;
+   Eina_Module_Cb cb;
+   void *data;
 } Dir_List_Cb_Data;
 
 static Eina_Bool _dir_list_get_cb(Eina_Module *m, void *data)
 {
-	Dir_List_Get_Cb_Data *cb_data = data;
-	Eina_Bool ret = EINA_TRUE;
-
-	if (cb_data->cb)
-	{
-		ret = cb_data->cb(m, cb_data->data);
-	}
-	if (ret)
-	{
-		eina_array_push(cb_data->array, m);
-	}
-	return ret;
+   Dir_List_Get_Cb_Data *cb_data = data;
+   Eina_Bool ret = EINA_TRUE;
+
+   if (cb_data->cb)
+     {
+	ret = cb_data->cb(m, cb_data->data);
+     }
+   if (ret)
+     {
+	eina_array_push(cb_data->array, m);
+     }
+   return ret;
 }
 
 static void _dir_list_cb(const char *name, const char *path, void *data)
 {
-	Dir_List_Cb_Data *cb_data = data;
+   Dir_List_Cb_Data *cb_data = data;
+   size_t length;
+
+   length = strlen(name);
+   if (length < sizeof(MODULE_EXTENSION)) /* x.so */
+     return;
+   if (!strcmp(name + length - sizeof(MODULE_EXTENSION) + 1,
+	       MODULE_EXTENSION))
+     {
+	char *file;
+	Eina_Module *m;
 	size_t length;
 
-	length = strlen(name);
-	if (length < strlen(MODULE_EXTENSION) + 1) /* x.so */
-		return;
-	if (!strcmp(name + length - strlen(MODULE_EXTENSION),
-			MODULE_EXTENSION))
-	{
-		char *file;
-		Eina_Module *m;
-		size_t length;
-
-		length = strlen(path) + strlen(name) + 2;
-
-		file = alloca(sizeof (char) * length);
-		if (!file) return ;
-
-		snprintf(file, length, "%s/%s", path, name);
-		m = eina_module_new(file);
-		if (!m)
-			return;
-		/* call the user provided cb on this module */
-		if (!cb_data->cb(m, cb_data->data))
-		  eina_module_free(m);
-	}
+	length = strlen(path) + strlen(name) + 2;
+
+	file = alloca(sizeof (char) * length);
+	if (!file) return ;
+
+	snprintf(file, length, "%s/%s", path, name);
+	m = eina_module_new(file);
+	if (!m)
+	  return;
+	/* call the user provided cb on this module */
+	if (!cb_data->cb(m, cb_data->data))
+	  eina_module_free(m);
+     }
 }
-static int _eina_module_count = 0;
 
 /**
  * @endcond
@@ -167,75 +183,74 @@ static int _eina_module_count = 0;
  */
 
 /**
- * @brief Initialize the eina module internal structure.
+ * @cond LOCAL
+ */
+
+static const char EINA_ERROR_WRONG_MODULE_STR[] = "Wrong file format or no file module found";
+static const char EINA_ERROR_MODULE_INIT_FAILED_STR[] = "Module initialisation function failed";
+
+EAPI Eina_Error EINA_ERROR_WRONG_MODULE = 0;
+EAPI Eina_Error EINA_ERROR_MODULE_INIT_FAILED = 0;
+
+/**
+ * @endcond
+ */
+
+/**
+ * @internal
+ * @brief Initialize the module loader module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * @return 1 or greater on success, 0 on error.
+ * This function sets up the module loader module of Eina. It is
+ * called by eina_init().
  *
  * This function sets up the module module of Eina. It also registers
  * the errors #EINA_ERROR_WRONG_MODULE and
- * #EINA_ERROR_MODULE_INIT_FAILED. It is also called by
- * eina_init(). It returns 0 on failure, otherwise it returns the
- * number of times it has already been called. See eina_error_init()
- * for the documentation of the initialisation of the dependency
- * modules.
+ * #EINA_ERROR_MODULE_INIT_FAILED.
  *
- * Once the module module is not used anymore, then
- * eina_module_shutdown() must be called to shut down the module
- * module.
- *
- * @see eina_error_init()
  * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_module_init(void)
 {
-	_eina_module_count++;
-
-	if (_eina_module_count != 1)
-		goto end_init;
-
-	if (!eina_error_init())
-	{
-		fprintf(stderr, "Could not initialize eina error module.\n");
-		return 0;
-	}
+   EINA_MODULE_LOG_DOM = eina_log_domain_register
+     ("eina_module", EINA_LOG_COLOR_DEFAULT);
+   if (EINA_MODULE_LOG_DOM < 0)
+     {
+	EINA_LOG_ERR("Could not register log domain: eina_module");
+	return EINA_FALSE;
+     }
 
-	EINA_ERROR_WRONG_MODULE = eina_error_msg_register("Wrong file format or no file module found");
-	EINA_ERROR_MODULE_INIT_FAILED = eina_error_msg_register("Module initialisation function failed");
+#define EEMR(n) n = eina_error_msg_static_register(n##_STR)
+   EEMR(EINA_ERROR_WRONG_MODULE);
+   EEMR(EINA_ERROR_MODULE_INIT_FAILED);
+#undef EEMR
 
-end_init:
-	return _eina_module_count;
+   return EINA_TRUE;
 }
 
 /**
- * @brief Shut down the eina module internal structures
+ * @internal
+ * @brief Shut down the module loader module.
  *
- * @return 0 when the module module is completely shut down, 1 or
- * greater otherwise.
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * This function shuts down the module module set up by
- * eina_module_init(). It is called by eina_shutdown(). It
- * returns 0 when it is called the same number of times than
- * eina_module_init().
+ * This function shuts down the module loader module set up by
+ * eina_module_init(). It is called by eina_shutdown().
  *
- * @see eina_error_shutdown()
  * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_module_shutdown(void)
 {
-	_eina_module_count--;
-	if (_eina_module_count != 0)
-		goto end_shutdown;
-
-	eina_error_shutdown();
+   /* TODO should we store every module when "new" is called and
+    * delete the list of modules here
+    */
 
-	/* TODO should we store every module when "new" is called and
-	 * delete the list of modules here
-	 */
-
-end_shutdown:
-	return _eina_module_count;
+   eina_log_domain_unregister(EINA_MODULE_LOG_DOM);
+   EINA_MODULE_LOG_DOM = -1;
+   return EINA_TRUE;
 }
 
 /**
@@ -255,18 +270,26 @@ end_shutdown:
  */
 EAPI Eina_Module *eina_module_new(const char *file)
 {
-	Eina_Module *m;
-
-	EINA_SAFETY_ON_NULL_RETURN_VAL(file, NULL);
-	/* TODO check that the file exists. Update doc too */
-
-	m = malloc(sizeof(Eina_Module));
-	/* TODO add the magic */
-	m->file = strdup(file);
-	m->ref = 0;
-	m->handle = NULL;
-
-	return m;
+   Eina_Module *m;
+   size_t len;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(file, NULL);
+   /* TODO check that the file exists. Update doc too */
+
+   len = strlen(file);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(len > 0, NULL);
+
+   m = malloc(sizeof(Eina_Module) + len + 1);
+   if (!m) {
+      ERR("could not malloc(%lu)", (unsigned long)(sizeof(Eina_Module) + len + 1));
+      return NULL;
+   }
+   memcpy((char *)m->file, file, len + 1);
+   m->ref = 0;
+   m->handle = NULL;
+   DBG("m=%p, file=%s", m, file);
+
+   return m;
 }
 
 /**
@@ -282,16 +305,17 @@ EAPI Eina_Module *eina_module_new(const char *file)
  */
 EAPI Eina_Bool eina_module_free(Eina_Module *m)
 {
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
-
-	if (m->handle)
-	{
-		if (eina_module_unload(m) == EINA_FALSE)
-			return EINA_FALSE;
-	}
-	free(m->file);
-	free(m);
-	return EINA_TRUE;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
+
+   DBG("m=%p, handle=%p, file=%s, refs=%d", m, m->handle, m->file, m->ref);
+
+   if (m->handle)
+     {
+	if (eina_module_unload(m) == EINA_FALSE)
+	  return EINA_FALSE;
+     }
+   free(m);
+   return EINA_TRUE;
 }
 
 /**
@@ -316,38 +340,43 @@ EAPI Eina_Bool eina_module_free(Eina_Module *m)
  */
 EAPI Eina_Bool eina_module_load(Eina_Module *m)
 {
-	void *dl_handle;
-	Eina_Module_Init *initcall;
+   void *dl_handle;
+   Eina_Module_Init *initcall;
 
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
 
-	if (m->handle) goto loaded;
-
-	dl_handle = dlopen(m->file, RTLD_NOW);
-	if (!dl_handle)
-	  {
-	     EINA_ERROR_PDBG("could not dlopen(\"%s\", RTLD_NOW): %s\n",
-			     m->file, dlerror());
-	     eina_error_set(EINA_ERROR_WRONG_MODULE);
-	     return EINA_FALSE;
-	  }
+   DBG("m=%p, handle=%p, file=%s, refs=%d", m, m->handle, m->file, m->ref);
 
-	initcall = dlsym(dl_handle, EINA_MODULE_SYMBOL_INIT);
-	if ((!initcall) || (!(*initcall)))
-		goto ok;
-	if ((*initcall)() == EINA_TRUE)
-		goto ok;
+   if (m->handle) goto loaded;
 
-	eina_error_set(EINA_ERROR_MODULE_INIT_FAILED);
-	dlclose(dl_handle);
+   dl_handle = dlopen(m->file, RTLD_NOW);
+   if (!dl_handle)
+     {
+	WRN("could not dlopen(\"%s\", RTLD_NOW): %s", m->file, dlerror());
+	eina_error_set(EINA_ERROR_WRONG_MODULE);
 	return EINA_FALSE;
-ok:
-	m->handle = dl_handle;
-loaded:
-	m->ref++;
-
-	eina_error_set(0);
-	return EINA_TRUE;
+     }
+
+   initcall = dlsym(dl_handle, EINA_MODULE_SYMBOL_INIT);
+   if ((!initcall) || (!(*initcall)))
+     goto ok;
+   if ((*initcall)() == EINA_TRUE)
+     goto ok;
+
+   WRN("could not find eina's entry symbol %s inside module %s",
+       EINA_MODULE_SYMBOL_INIT, m->file);
+   eina_error_set(EINA_ERROR_MODULE_INIT_FAILED);
+   dlclose(dl_handle);
+   return EINA_FALSE;
+ ok:
+   DBG("successfully loaded %s", m->file);
+   m->handle = dl_handle;
+ loaded:
+   m->ref++;
+   DBG("ref %d", m->ref);
+
+   eina_error_set(0);
+   return EINA_TRUE;
 }
 
 /**
@@ -366,26 +395,29 @@ loaded:
  */
 EAPI Eina_Bool eina_module_unload(Eina_Module *m)
 {
-	Eina_Module_Shutdown *shut;
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
-
-	m->ref--;
-	if (!m->ref)
-	{
-		shut = dlsym(m->handle, EINA_MODULE_SYMBOL_SHUTDOWN);
-		if ((shut) && (*shut))
-			(*shut)();
-		dlclose(m->handle);
-		m->handle = NULL;
-		return EINA_TRUE;
-	}
-	return EINA_FALSE;
+   Eina_Module_Shutdown *shut;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
+
+   DBG("m=%p, handle=%p, file=%s, refs=%d", m, m->handle, m->file, m->ref);
+
+   m->ref--;
+   if (!m->ref)
+     {
+	shut = dlsym(m->handle, EINA_MODULE_SYMBOL_SHUTDOWN);
+	if ((shut) && (*shut))
+	  (*shut)();
+	dlclose(m->handle);
+	m->handle = NULL;
+	DBG("unloaded module %s", m->file);
+	return EINA_TRUE;
+     }
+   return EINA_FALSE;
 }
 
 /**
  * @brief Retrive the data associated to a symbol.
  *
- * @param The module.
+ * @param m The module.
  * @param symbol The symbol.
  * @return The data associated to the symbol, or @c NULL on failure.
  *
@@ -394,11 +426,11 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m)
  * is @c NULL, or if it has not been correctly loaded before, the
  * function returns immediatly @c NULL.
  */
-EAPI void * eina_module_symbol_get(Eina_Module *m, const char *symbol)
+EAPI void * eina_module_symbol_get(const Eina_Module *m, const char *symbol)
 {
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m, NULL);
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m->handle, NULL);
-	return dlsym(m->handle, symbol);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m->handle, NULL);
+   return dlsym(m->handle, symbol);
 }
 
 /**
@@ -411,83 +443,84 @@ EAPI void * eina_module_symbol_get(Eina_Module *m, const char *symbol)
  * @c NULL, the function returns immediatly @c NULL. The returned
  * value must no be freed.
  */
-EAPI const char * eina_module_file_get(Eina_Module *m)
+EAPI const char * eina_module_file_get(const Eina_Module *m)
 {
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m, NULL);
-	return m->file;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m, NULL);
+   return m->file;
 }
 
 EAPI char *eina_module_symbol_path_get(const void *symbol, const char *sub_dir)
 {
-        EINA_SAFETY_ON_NULL_RETURN_VAL(symbol, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(symbol, NULL);
 
 #ifdef HAVE_DLADDR
-	Dl_info eina_dl;
-
-	if (dladdr(symbol, &eina_dl))
-	{
-		if (strrchr(eina_dl.dli_fname, '/'))
-		{
-			char *path;
-			int l0;
-			int l1;
-			int l2 = 0;
-
-			l0 = strlen(eina_dl.dli_fname);
-			l1 = strlen(strrchr(eina_dl.dli_fname, '/'));
-			if (sub_dir && (*sub_dir != '\0'))
-				l2 = strlen(sub_dir);
-			path = malloc(l0 - l1 + l2 + 1);
-			if (path)
-			{
-				memcpy(path, eina_dl.dli_fname, l0 - l1);
-				if (sub_dir && (*sub_dir != '\0'))
-					memcpy(path + l0 - l1, sub_dir, l2);
-				path[l0 - l1 + l2] = '\0';
-				return path;
-			}
-		}
-	}
+   Dl_info eina_dl;
+
+   if (dladdr(symbol, &eina_dl))
+     {
+	if (strrchr(eina_dl.dli_fname, '/'))
+	  {
+	     char *path;
+	     int l0;
+	     int l1;
+	     int l2 = 0;
+
+	     l0 = strlen(eina_dl.dli_fname);
+	     l1 = strlen(strrchr(eina_dl.dli_fname, '/'));
+	     if (sub_dir && (*sub_dir != '\0'))
+	       l2 = strlen(sub_dir);
+	     path = malloc(l0 - l1 + l2 + 1);
+	     if (path)
+	       {
+		  memcpy(path, eina_dl.dli_fname, l0 - l1);
+		  if (sub_dir && (*sub_dir != '\0'))
+		    memcpy(path + l0 - l1, sub_dir, l2);
+		  path[l0 - l1 + l2] = '\0';
+		  return path;
+	       }
+	  }
+     }
 #endif /* ! HAVE_DLADDR */
 
-	return NULL;
+   return NULL;
 }
 
 EAPI char *eina_module_environment_path_get(const char *env, const char *sub_dir)
 {
-	const char *env_dir;
-
-	EINA_SAFETY_ON_NULL_RETURN_VAL(env, NULL);
-
-	env_dir = getenv(env);
-	if (env_dir)
-	{
-		char  *path;
-		size_t l1;
-		size_t l2 = 0;
-
-		l1 = strlen(env_dir);
-		if (sub_dir && (*sub_dir != '\0'))
-			l2 = strlen(sub_dir);
-
-		path = (char *)malloc(l1 + l2 + 1);
-		if (path)
-		{
-			memcpy(path, env_dir, l1);
-			if (sub_dir && (*sub_dir != '\0'))
-				memcpy(path + l1, sub_dir, l2);
-			path[l1 + l2] = '\0';
-
-			return path;
-		}
-	}
-
-	return NULL;
+   const char *env_dir;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(env, NULL);
+
+   env_dir = getenv(env);
+   if (env_dir)
+     {
+	char  *path;
+	size_t l1;
+	size_t l2 = 0;
+
+	l1 = strlen(env_dir);
+	if (sub_dir && (*sub_dir != '\0'))
+	  l2 = strlen(sub_dir);
+
+	path = (char *)malloc(l1 + l2 + 1);
+	if (path)
+	  {
+	     memcpy(path, env_dir, l1);
+	     if (sub_dir && (*sub_dir != '\0'))
+	       memcpy(path + l1, sub_dir, l2);
+	     path[l1 + l2] = '\0';
+
+	     return path;
+	  }
+     }
+
+   return NULL;
 }
 
 /**
  * Get a list of modules found on the directory path
  *
+ * @param array The array that stores the list of the modules.
  * @param path The directory's path to search for modules
  * @param recursive Iterate recursively on the path
  * @param cb Callback function to call, if the return value of the callback is zero
@@ -496,49 +529,84 @@ EAPI char *eina_module_environment_path_get(const char *env, const char *sub_dir
  */
 EAPI Eina_Array * eina_module_list_get(Eina_Array *array, const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data)
 {
-	Dir_List_Get_Cb_Data list_get_cb_data;
-	Dir_List_Cb_Data list_cb_data;
+   Dir_List_Get_Cb_Data list_get_cb_data;
+   Dir_List_Cb_Data list_cb_data;
 
-	if (!path) return array;
+   if (!path) return array;
 
-	list_get_cb_data.array = array ? array : eina_array_new(4);
-	list_get_cb_data.cb = cb;
-	list_get_cb_data.data = data;
+   list_get_cb_data.array = array ? array : eina_array_new(4);
+   list_get_cb_data.cb = cb;
+   list_get_cb_data.data = data;
 
-	list_cb_data.cb = &_dir_list_get_cb;
-	list_cb_data.data = &list_get_cb_data;
+   list_cb_data.cb = &_dir_list_get_cb;
+   list_cb_data.data = &list_get_cb_data;
 
-	eina_file_dir_list(path, recursive, &_dir_list_cb, &list_cb_data);
+   eina_file_dir_list(path, recursive, &_dir_list_cb, &list_cb_data);
 
-	return list_get_cb_data.array;
+   return list_get_cb_data.array;
+}
+
+/**
+ * @brief Find an module in array.
+ *
+ * @param array The array to find the module.
+ * @param module The name of module to be searched;
+ *
+ * This function finds an @p module in an @p array;
+ * If the element is found return the module else NULL.
+ */
+EAPI Eina_Module *
+eina_module_find(const Eina_Array *array, const char *module)
+{
+   unsigned int i;
+   Eina_Array_Iterator iterator;
+   Eina_Module *m;
+
+   EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
+   {
+      const char *file_m;
+      ssize_t len;
+
+      file_m = basename(eina_module_file_get(m));
+      len = strlen(file_m);
+      len -= sizeof(MODULE_EXTENSION) - 1;
+      if (len <= 0) continue;
+      if (!strncmp(module, file_m, len)) return m;
+   }
+
+   return NULL;
 }
 
 /**
  * Load every module on the list of modules
- * @param list The list of modules
+ * @param array The array of modules to load
  */
 EAPI void eina_module_list_load(Eina_Array *array)
 {
-	Eina_Array_Iterator iterator;
-	Eina_Module *m;
-	unsigned int i;
-
-	EINA_SAFETY_ON_NULL_RETURN(array);
-
-	EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
-		eina_module_load(m);
+   Eina_Array_Iterator iterator;
+   Eina_Module *m;
+   unsigned int i;
+
+   EINA_SAFETY_ON_NULL_RETURN(array);
+   DBG("array %p, count %u", array, array->count);
+   EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
+     eina_module_load(m);
 }
 
+/**
+ * Unload every module on the list of modules
+ * @param array The array of modules to unload
+ */
 EAPI void eina_module_list_unload(Eina_Array *array)
 {
-	Eina_Array_Iterator iterator;
-	Eina_Module *m;
-	unsigned int i;
-
-	EINA_SAFETY_ON_NULL_RETURN(array);
-
-	EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
-		eina_module_unload(m);
+   Eina_Array_Iterator iterator;
+   Eina_Module *m;
+   unsigned int i;
+
+   EINA_SAFETY_ON_NULL_RETURN(array);
+   DBG("array %p, count %u", array, array->count);
+   EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
+     eina_module_unload(m);
 }
 
 /**
@@ -547,16 +615,16 @@ EAPI void eina_module_list_unload(Eina_Array *array)
  */
 EAPI void eina_module_list_flush(Eina_Array *array)
 {
-	Eina_Array_Iterator iterator;
-	Eina_Module *m;
-	unsigned int i;
-
-	EINA_SAFETY_ON_NULL_RETURN(array);
+   Eina_Array_Iterator iterator;
+   Eina_Module *m;
+   unsigned int i;
 
-	EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
-		eina_module_free(m);
+   EINA_SAFETY_ON_NULL_RETURN(array);
+   DBG("array %p, count %u", array, array->count);
+   EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
+     eina_module_free(m);
 
-	eina_array_flush(array);
+   eina_array_flush(array);
 }
 
 /**
diff --git a/src/lib/eina_rbtree.c b/src/lib/eina_rbtree.c
index 8354670..7ed4d19 100644
--- a/src/lib/eina_rbtree.c
+++ b/src/lib/eina_rbtree.c
@@ -24,10 +24,13 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "eina_rbtree.h"
-#include "eina_array.h"
+#include "eina_config.h"
 #include "eina_private.h"
+#include "eina_array.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_rbtree.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -156,7 +159,7 @@ _eina_rbtree_iterator_next(Eina_Iterator_Rbtree *it, void **data)
    return _eina_rbtree_iterator_next(it, data);
 
  onfix:
-   if (data) *data = tree;
+   *data = tree;
    return EINA_TRUE;
 }
 
@@ -254,6 +257,11 @@ eina_rbtree_inline_insert(Eina_Rbtree *root, Eina_Rbtree *node, Eina_Rbtree_Cmp_
    Eina_Rbtree head;
    Eina_Rbtree *g, *t;  /* Grandparent & parent */
    Eina_Rbtree *p, *q;  /* Iterator & parent */
+   /* WARNING:
+      Compiler is not able to understand the underlying algorithm and don't know that
+      first top node is always black, so it will never use last before running the loop
+      one time.
+    */
    Eina_Rbtree_Direction dir, last;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(node, root);
@@ -270,7 +278,7 @@ eina_rbtree_inline_insert(Eina_Rbtree *root, Eina_Rbtree *node, Eina_Rbtree_Cmp_
      }
 
    memset(&head, 0, sizeof (Eina_Rbtree));
-   dir = EINA_RBTREE_LEFT;
+   last = dir = EINA_RBTREE_LEFT;
 
    /* Set up helpers */
    t = &head;
diff --git a/src/lib/eina_rectangle.c b/src/lib/eina_rectangle.c
index 43babe8..e2d8466 100644
--- a/src/lib/eina_rectangle.c
+++ b/src/lib/eina_rectangle.c
@@ -24,13 +24,16 @@
 #include <stdlib.h>
 
 #include "eina_config.h"
-#include "eina_rectangle.h"
+#include "eina_private.h"
 #include "eina_magic.h"
 #include "eina_inlist.h"
-#include "eina_private.h"
-#include "eina_safety_checks.h"
 #include "eina_mempool.h"
 #include "eina_list.h"
+#include "eina_trash.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
+#include "eina_safety_checks.h"
+#include "eina_rectangle.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -43,6 +46,8 @@
 #define EINA_RECTANGLE_POOL_MAGIC 0x1578FCB0
 #define EINA_RECTANGLE_ALLOC_MAGIC 0x1578FCB1
 
+#define BUCKET_THRESHOLD 110
+
 typedef struct _Eina_Rectangle_Alloc Eina_Rectangle_Alloc;
 
 struct _Eina_Rectangle_Pool
@@ -51,6 +56,9 @@ struct _Eina_Rectangle_Pool
    Eina_List *empty;
    void *data;
 
+   Eina_Trash *bucket;
+   unsigned int bucket_count;
+
    unsigned int references;
    int w;
    int h;
@@ -78,10 +86,23 @@ struct _Eina_Rectangle_Alloc
        EINA_MAGIC_FAIL((d), EINA_RECTANGLE_ALLOC_MAGIC);       \
   } while (0);
 
-static int _eina_rectangle_init_count = 0;
 static Eina_Mempool *_eina_rectangle_alloc_mp = NULL;
 static Eina_Mempool *_eina_rectangle_mp = NULL;
 
+static Eina_Trash *_eina_rectangles = NULL;
+static unsigned int _eina_rectangles_count = 0;
+static int _eina_rectangle_log_dom = -1;
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_rectangle_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_rectangle_log_dom, __VA_ARGS__)
+
 static int
 _eina_rectangle_cmp(const Eina_Rectangle *r1, const Eina_Rectangle *r2)
 {
@@ -222,82 +243,69 @@ _eina_rectangle_empty_space_find(Eina_List *empty, int w, int h, int *x, int *y)
  *                                   API                                      *
  *============================================================================*/
 
-EAPI int
+Eina_Bool
 eina_rectangle_init(void)
 {
-   const char *choice;
-
-   _eina_rectangle_init_count++;
-
-   if (_eina_rectangle_init_count > 1) return _eina_rectangle_init_count;
+   const char *choice, *tmp;
 
-   if (!eina_error_init())
+   _eina_rectangle_log_dom = eina_log_domain_register("eina_rectangle", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_rectangle_log_dom < 0)
      {
-        EINA_ERROR_PERR("Could not initialize eina error module.\n");
-        return 0;
-     }
-   if (!eina_mempool_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina mempool module.\n");
-        goto mempool_init_error;
-     }
-
-   if (!eina_list_init())
-     {
-	EINA_ERROR_PERR("Could not initialize eina list module.\n");
-	goto list_init_error;
+	EINA_LOG_ERR("Could not register log domain: eina_rectangle");
+	return EINA_FALSE;
      }
 
 #ifdef EINA_DEFAULT_MEMPOOL
    choice = "pass_through";
 #else
-   if (!(choice = getenv("EINA_MEMPOOL")))
-     choice = "chained_mempool";
+   choice = "chained_mempool";
 #endif
+   tmp = getenv("EINA_MEMPOOL");
+   if (tmp && tmp[0])
+     choice = tmp;
 
-   _eina_rectangle_alloc_mp = eina_mempool_add(choice, "rectangle-alloc", NULL,
-                                         sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle), 1024);
+   _eina_rectangle_alloc_mp = eina_mempool_add
+     (choice, "rectangle-alloc", NULL,
+      sizeof(Eina_Rectangle_Alloc) + sizeof(Eina_Rectangle), 1024);
    if (!_eina_rectangle_alloc_mp)
      {
-        EINA_ERROR_PERR("ERROR: Mempool for rectangle cannot be allocated in list init.\n");
+        ERR("Mempool for rectangle cannot be allocated in rectangle init.");
         goto init_error;
      }
 
-   _eina_rectangle_mp = eina_mempool_add(choice, "rectangle", NULL, sizeof (Eina_Rectangle), 256);
+   _eina_rectangle_mp = eina_mempool_add
+     (choice, "rectangle", NULL, sizeof(Eina_Rectangle), 256);
    if (!_eina_rectangle_mp)
      {
-        EINA_ERROR_PERR("ERROR: Mempool for rectangle cannot be allocated in list init.\n");
+        ERR("Mempool for rectangle cannot be allocated in rectangle init.");
         goto init_error;
      }
 
-   return _eina_rectangle_init_count;
+   return EINA_TRUE;
 
  init_error:
-   eina_list_shutdown();
- list_init_error:
-   eina_mempool_shutdown();
- mempool_init_error:
-   eina_error_shutdown();
+   eina_log_domain_unregister(_eina_rectangle_log_dom);
+   _eina_rectangle_log_dom = -1;
 
-   return 0;
+   return EINA_FALSE;
 }
 
-EAPI int
+Eina_Bool
 eina_rectangle_shutdown(void)
 {
-   --_eina_rectangle_init_count;
-
-   if (_eina_rectangle_init_count) return _eina_rectangle_init_count;
+   Eina_Rectangle *del;
 
-   eina_list_shutdown();
+   while ((del = eina_trash_pop(&_eina_rectangles)))
+     eina_mempool_free(_eina_rectangle_mp, del);
+   _eina_rectangles_count = 0;
 
    eina_mempool_del(_eina_rectangle_alloc_mp);
    eina_mempool_del(_eina_rectangle_mp);
 
-   eina_mempool_shutdown();
-   eina_error_shutdown();
+   eina_log_domain_unregister(_eina_rectangle_log_dom);
+   _eina_rectangle_log_dom = -1;
 
-   return 0;
+   return EINA_TRUE;
 }
 
 EAPI Eina_Rectangle *
@@ -305,7 +313,15 @@ eina_rectangle_new(int x, int y, int w, int h)
 {
    Eina_Rectangle *rect;
 
-   rect = eina_mempool_malloc(_eina_rectangle_mp, sizeof (Eina_Rectangle));
+   if (_eina_rectangles)
+     {
+	rect = eina_trash_pop(&_eina_rectangles);
+	_eina_rectangles_count--;
+     }
+   else
+     {
+	rect = eina_mempool_malloc(_eina_rectangle_mp, sizeof (Eina_Rectangle));
+     }
    if (!rect) return NULL;
 
    EINA_RECTANGLE_SET(rect, x, y, w, h);
@@ -317,7 +333,16 @@ EAPI void
 eina_rectangle_free(Eina_Rectangle *rect)
 {
    EINA_SAFETY_ON_NULL_RETURN(rect);
-   eina_mempool_free(_eina_rectangle_mp, rect);
+
+   if (_eina_rectangles_count > BUCKET_THRESHOLD)
+     {
+	eina_mempool_free(_eina_rectangle_mp, rect);
+     }
+   else
+     {
+	eina_trash_push(&_eina_rectangles, rect);
+	_eina_rectangles_count++;
+     }
 }
 
 EAPI Eina_Rectangle_Pool *
@@ -331,10 +356,14 @@ eina_rectangle_pool_new(int w, int h)
    new->head = NULL;
    new->empty = eina_list_append(NULL, eina_rectangle_new(0, 0, w, h));
    new->references = 0;
+   new->sorted = EINA_FALSE;
    new->w = w;
    new->h = h;
+   new->bucket = NULL;
+   new->bucket_count = 0;
 
    EINA_MAGIC_SET(new, EINA_RECTANGLE_POOL_MAGIC);
+   DBG("pool=%p, size=(%d, %d)", new, w, h);
 
    return new;
 }
@@ -345,6 +374,8 @@ eina_rectangle_pool_free(Eina_Rectangle_Pool *pool)
    Eina_Rectangle_Alloc *del;
 
    EINA_SAFETY_ON_NULL_RETURN(pool);
+   DBG("pool=%p, size=(%d, %d), references=%u",
+       pool, pool->w, pool->h, pool->references);
    while (pool->head)
      {
 	del = (Eina_Rectangle_Alloc*) pool->head;
@@ -355,6 +386,12 @@ eina_rectangle_pool_free(Eina_Rectangle_Pool *pool)
 	eina_mempool_free(_eina_rectangle_alloc_mp, del);
      }
 
+   while (pool->bucket)
+     {
+	del = eina_trash_pop(&pool->bucket);
+	eina_mempool_free(_eina_rectangle_alloc_mp, del);
+     }
+
    MAGIC_FREE(pool);
 }
 
@@ -375,6 +412,9 @@ eina_rectangle_pool_request(Eina_Rectangle_Pool *pool, int w, int h)
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(pool, NULL);
 
+   DBG("pool=%p, size=(%d, %d), references=%u",
+       pool, pool->w, pool->h, pool->references);
+
    if (w <= 0 || h <= 0) return NULL;
    if (w > pool->w || h > pool->h) return NULL;
 
@@ -389,8 +429,16 @@ eina_rectangle_pool_request(Eina_Rectangle_Pool *pool, int w, int h)
    if (x == -1) return NULL;
    pool->sorted = EINA_FALSE;
 
-   new = eina_mempool_malloc(_eina_rectangle_alloc_mp,
-			     sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle));
+   if (pool->bucket_count > 0)
+     {
+	new = eina_trash_pop(&pool->bucket);
+	pool->bucket_count--;
+     }
+   else
+     {
+	new = eina_mempool_malloc(_eina_rectangle_alloc_mp,
+				  sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle));
+     }
    if (!new) return NULL;
 
    rect = (Eina_Rectangle*) (new + 1);
@@ -402,6 +450,8 @@ eina_rectangle_pool_request(Eina_Rectangle_Pool *pool, int w, int h)
    new->pool = pool;
 
    EINA_MAGIC_SET(new, EINA_RECTANGLE_ALLOC_MAGIC);
+   DBG("rect=%p pool=%p, size=(%d, %d), references=%u",
+       rect, pool, pool->w, pool->h, pool->references);
 
    return rect;
 }
@@ -417,6 +467,9 @@ eina_rectangle_pool_release(Eina_Rectangle *rect)
    EINA_MAGIC_CHECK_RECTANGLE_ALLOC(era);
    EINA_MAGIC_CHECK_RECTANGLE_POOL(era->pool);
 
+   DBG("rect=%p pool=%p, size=(%d, %d), references=%u",
+       rect, era->pool, era->pool->w, era->pool->h, era->pool->references);
+
    era->pool->references--;
    era->pool->head = eina_inlist_remove(era->pool->head, EINA_INLIST_GET(era));
 
@@ -427,8 +480,20 @@ eina_rectangle_pool_release(Eina_Rectangle *rect)
 	era->pool->sorted = EINA_FALSE;
      }
 
-   EINA_MAGIC_SET(era, EINA_MAGIC_NONE);
-   eina_mempool_free(_eina_rectangle_alloc_mp, era);
+   if (era->pool->bucket_count < BUCKET_THRESHOLD)
+     {
+	Eina_Rectangle_Pool *pool;
+
+	pool = era->pool;
+
+	pool->bucket_count++;
+	eina_trash_push(&pool->bucket, era);
+     }
+   else
+     {
+	EINA_MAGIC_SET(era, EINA_MAGIC_NONE);
+	eina_mempool_free(_eina_rectangle_alloc_mp, era);
+     }
 }
 
 EAPI Eina_Rectangle_Pool *
@@ -450,6 +515,9 @@ eina_rectangle_pool_data_set(Eina_Rectangle_Pool *pool, const void *data)
    EINA_MAGIC_CHECK_RECTANGLE_POOL(pool);
    EINA_SAFETY_ON_NULL_RETURN(pool);
 
+   DBG("data=%p pool=%p, size=(%d, %d), references=%u",
+       data, pool, pool->w, pool->h, pool->references);
+
    pool->data = (void*) data;
 }
 
diff --git a/src/lib/eina_safety_checks.c b/src/lib/eina_safety_checks.c
new file mode 100644
index 0000000..8e15b52
--- /dev/null
+++ b/src/lib/eina_safety_checks.c
@@ -0,0 +1,100 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2008 Gustavo Sverzut Barbieri
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @addtogroup Eina_Safety_Checks_Group Safety Checks
+ *
+ * Safety checks are a set of macros to check for parameters or values
+ * that should never happen, it is similar in concept to assert(), but
+ * will log and return instead of abort() your program.
+ *
+ * Since these cases should never happen, one may wantto keep safety
+ * checks enabled during tests but disable then during deploy, not
+ * doing any checks at all. This is a common requirement for embedded
+ * systems. Whenever to check or not should be set during compile time
+ * by using @c --disable-safety-checks or @c --enable-safety-checks
+ * options to @c configure script.
+ *
+ * Whenever these macros capture an error, EINA_LOG_ERR() will be
+ * called and @c eina_error set to @c EINA_ERROR_SAFETY_FAILED and can
+ * be checked with eina_error_get() after call.
+ *
+ * @see EINA_SAFETY_ON_NULL_RETURN(), EINA_SAFETY_ON_NULL_RETURN_VAL()
+ *      and other macros.
+ *
+ * @{
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "eina_error.h"
+#include "eina_private.h"
+#include "eina_safety_checks.h"
+
+/**
+ * @cond LOCAL
+ */
+
+EAPI Eina_Error EINA_ERROR_SAFETY_FAILED = 0;
+
+static const char EINA_ERROR_SAFETY_FAILED_STR[] = "Safety check failed.";
+
+/**
+ * @endcond
+ */
+
+/**
+ * @internal
+ * @brief Initialize the safety checks module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function sets up the safety checks module of Eina. It is
+ * called by eina_init().
+ *
+ * @see eina_init()
+ */
+Eina_Bool
+eina_safety_checks_init(void)
+{
+   EINA_ERROR_SAFETY_FAILED = eina_error_msg_static_register(EINA_ERROR_SAFETY_FAILED_STR);
+   return EINA_TRUE;
+}
+
+/**
+ * @internal
+ * @brief Shut down the safety checks module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
+ *
+ * This function shuts down the error module set up by
+ * eina_safety_checks_init(). It is called by eina_shutdown().
+ *
+ * @see eina_shutdown()
+ */
+Eina_Bool
+eina_safety_checks_shutdown(void)
+{
+   return EINA_TRUE;
+}
+
+/**
+ * @}
+ */
diff --git a/src/lib/eina_stringshare.c b/src/lib/eina_stringshare.c
index 5e3c62a..159ffbe 100644
--- a/src/lib/eina_stringshare.c
+++ b/src/lib/eina_stringshare.c
@@ -74,13 +74,15 @@
 # include <Evil.h>
 #endif
 
-#include "eina_stringshare.h"
+#include "eina_config.h"
+#include "eina_private.h"
 #include "eina_hash.h"
 #include "eina_rbtree.h"
 #include "eina_error.h"
-#include "eina_private.h"
-#include "eina_magic.h"
+
+/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
 #include "eina_safety_checks.h"
+#include "eina_stringshare.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -93,19 +95,28 @@
 #define EINA_STRINGSHARE_BUCKETS 256
 #define EINA_STRINGSHARE_MASK 0xFF
 
-#define EINA_MAGIC_CHECK_STRINGSHARE_HEAD(d, ...)		\
+static const char EINA_MAGIC_STRINGSHARE_STR[] = "Eina Stringshare";
+static const char EINA_MAGIC_STRINGSHARE_HEAD_STR[] = "Eina Stringshare Head";
+static const char EINA_MAGIC_STRINGSHARE_NODE_STR[] = "Eina Stringshare Node";
+
+
+#define EINA_MAGIC_CHECK_STRINGSHARE_HEAD(d, unlock, ...)	\
   do {								\
     if (!EINA_MAGIC_CHECK((d), EINA_MAGIC_STRINGSHARE_HEAD))	\
     {								\
         EINA_MAGIC_FAIL((d), EINA_MAGIC_STRINGSHARE_HEAD);	\
+        unlock;							\
         return __VA_ARGS__;					\
     }								\
   } while (0);
 
-#define EINA_MAGIC_CHECK_STRINGSHARE_NODE(d)			\
+#define EINA_MAGIC_CHECK_STRINGSHARE_NODE(d, unlock)		\
   do {								\
     if (!EINA_MAGIC_CHECK((d), EINA_MAGIC_STRINGSHARE_NODE))	\
+    {								\
+      unlock;							\
       EINA_MAGIC_FAIL((d), EINA_MAGIC_STRINGSHARE_NODE);	\
+    }								\
   } while (0);
 
 typedef struct _Eina_Stringshare             Eina_Stringshare;
@@ -146,8 +157,45 @@ struct _Eina_Stringshare_Head
 };
 
 static Eina_Stringshare *share = NULL;
-static int _eina_stringshare_init_count = 0;
-static const char _eina_stringshare_single[512] = {
+static int _eina_stringshare_log_dom = -1;
+
+#ifdef CRITICAL
+#undef CRITICAL
+#endif
+#define CRITICAL(...) EINA_LOG_DOM_CRIT(_eina_stringshare_log_dom, __VA_ARGS__)
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_stringshare_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_stringshare_log_dom, __VA_ARGS__)
+
+
+
+#ifdef EFL_HAVE_PTHREAD
+#include <pthread.h>
+static Eina_Bool _stringshare_threads_activated = EINA_FALSE;
+//string < 4
+static pthread_mutex_t _mutex_small = PTHREAD_MUTEX_INITIALIZER;
+//string >= 4
+static pthread_mutex_t _mutex_big = PTHREAD_MUTEX_INITIALIZER;
+#define STRINGSHARE_LOCK_SMALL() if(_stringshare_threads_activated) pthread_mutex_lock(&_mutex_small);
+#define STRINGSHARE_UNLOCK_SMALL() if(_stringshare_threads_activated) pthread_mutex_unlock(&_mutex_small);
+#define STRINGSHARE_LOCK_BIG() if(_stringshare_threads_activated) pthread_mutex_lock(&_mutex_big);
+#define STRINGSHARE_UNLOCK_BIG() if(_stringshare_threads_activated) pthread_mutex_unlock(&_mutex_big);
+#else
+#define STRINGSHARE_LOCK_SMALL() do {} while (0)
+#define STRINGSHARE_UNLOCK_SMALL() do {} while (0)
+#define STRINGSHARE_LOCK_BIG() do {} while (0)
+#define STRINGSHARE_UNLOCK_BIG() do {} while (0)
+#endif
+
+
+static const unsigned char _eina_stringshare_single[512] = {
   0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,
   16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,
   31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,
@@ -253,6 +301,9 @@ _eina_stringshare_population_stats(void)
 static void
 _eina_stringshare_population_add(int slen)
 {
+   STRINGSHARE_LOCK_SMALL();
+   STRINGSHARE_LOCK_BIG();
+
    population.count++;
    if (population.count > population.max)
      population.max = population.count;
@@ -263,14 +314,23 @@ _eina_stringshare_population_add(int slen)
 	if (population_group[slen].count > population_group[slen].max)
 	  population_group[slen].max = population_group[slen].count;
      }
+
+   STRINGSHARE_UNLOCK_BIG();
+   STRINGSHARE_UNLOCK_SMALL();
 }
 
 static void
 _eina_stringshare_population_del(int slen)
 {
+   STRINGSHARE_LOCK_SMALL();
+   STRINGSHARE_LOCK_BIG();
+
    population.count--;
    if (slen < 4)
      population_group[slen].count--;
+
+   STRINGSHARE_UNLOCK_BIG();
+   STRINGSHARE_UNLOCK_SMALL();
 }
 
 static void
@@ -308,7 +368,7 @@ static void _eina_stringshare_population_head_del(__UNUSED__ Eina_Stringshare_He
 static int
 _eina_stringshare_cmp(const Eina_Stringshare_Head *ed, const int *hash, __UNUSED__ int length, __UNUSED__ void *data)
 {
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, 0);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, , 0);
 
    return ed->hash - *hash;
 }
@@ -316,8 +376,8 @@ _eina_stringshare_cmp(const Eina_Stringshare_Head *ed, const int *hash, __UNUSED
 static Eina_Rbtree_Direction
 _eina_stringshare_node(const Eina_Stringshare_Head *left, const Eina_Stringshare_Head *right, __UNUSED__ void *data)
 {
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(left, 0);
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(right, 0);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(left, , 0);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(right, , 0);
 
    if (left->hash - right->hash < 0)
      return EINA_RBTREE_LEFT;
@@ -327,7 +387,7 @@ _eina_stringshare_node(const Eina_Stringshare_Head *left, const Eina_Stringshare
 static void
 _eina_stringshare_head_free(Eina_Stringshare_Head *ed, __UNUSED__ void *data)
 {
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, );
 
    while (ed->head)
      {
@@ -350,7 +410,15 @@ static Eina_Stringshare_Small _eina_small_share;
 static inline int
 _eina_stringshare_small_cmp(const Eina_Stringshare_Small_Bucket *bucket, int i, const char *pstr, unsigned char plength)
 {
-   const unsigned char cur_plength = bucket->lengths[i];
+   /* pstr and plength are from second char and on, since the first is
+    * always the same.
+    *
+    * First string being always the same, size being between 2 and 3
+    * characters (there is a check for special case length==1 and then
+    * small stringshare is applied to strings < 4), we just need to
+    * compare 2 characters of both strings.
+    */
+   const unsigned char cur_plength = bucket->lengths[i] - 1;
    const char *cur_pstr;
 
    if (cur_plength > plength)
@@ -380,7 +448,7 @@ static const char *
 _eina_stringshare_small_bucket_find(const Eina_Stringshare_Small_Bucket *bucket, const char *str, unsigned char length, int *index)
 {
    const char *pstr = str + 1; /* skip first letter, it's always the same */
-   unsigned char plength = length;
+   unsigned char plength = length - 1;
    int i, low, high;
 
    if (bucket->count == 0)
@@ -592,8 +660,7 @@ _eina_stringshare_small_del(const char *str, unsigned char length)
    return;
 
  error:
-   EINA_ERROR_PWARN("EEEK trying to del non-shared stringshare \"%s\"\n", str);
-   if (getenv("EINA_ERROR_ABORT")) abort();
+   CRITICAL("EEEK trying to del non-shared stringshare \"%s\"", str);
 }
 
 static void
@@ -801,94 +868,121 @@ _eina_stringshare_node_alloc(int slen)
  */
 
 /**
- * @brief Initialize the eina stringshare internal structure.
+ * @internal
+ * @brief Initialize the stringshare module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * @return 1 or greater on success, 0 on error.
+ * This function sets up the stringshare module of Eina. It is called by
+ * eina_init().
  *
- * This function allocates the memory needed by the stringshare
- * internal structure and sets up the error module of Eina. It is also
- * called by eina_init(). It returns 0 on failure, otherwise it
- * returns the number of times it has already been called.
+ * @see eina_init()
  */
-EAPI int
+Eina_Bool
 eina_stringshare_init(void)
 {
-   /*
-    * No strings have been loaded at this point, so create the hash
-    * table for storing string info for later.
-    */
-   if (!_eina_stringshare_init_count)
+   _eina_stringshare_log_dom = eina_log_domain_register("eina_stringshare", EINA_LOG_COLOR_DEFAULT);
+   if (_eina_stringshare_log_dom < 0)
      {
-        share = calloc(1, sizeof(Eina_Stringshare));
-        if (!share)
-          return 0;
-
-        if (!eina_error_init())
-          {
-             fprintf(stderr, "Could not initialize eina error module.\n");
-             return 0;
-          }
-
-        if (!eina_magic_string_init())
-          {
-             EINA_ERROR_PERR("ERROR: Could not initialize eina magic string module.\n");
-             eina_error_shutdown();
-             return 0;
-          }
-
-        eina_magic_string_set(EINA_MAGIC_STRINGSHARE,
-                              "Eina Stringshare");
-        eina_magic_string_set(EINA_MAGIC_STRINGSHARE_HEAD,
-                              "Eina Stringshare Head");
-        eina_magic_string_set(EINA_MAGIC_STRINGSHARE_NODE,
-                              "Eina Stringshare Node");
-        EINA_MAGIC_SET(share, EINA_MAGIC_STRINGSHARE);
-
-        _eina_stringshare_small_init();
-        _eina_stringshare_population_init();
+	EINA_LOG_ERR("Could not register log domain: eina_stringshare");
+	return EINA_FALSE;
      }
 
-   return ++_eina_stringshare_init_count;
+   share = calloc(1, sizeof(Eina_Stringshare));
+   if (!share)
+     {
+	eina_log_domain_unregister(_eina_stringshare_log_dom);
+	_eina_stringshare_log_dom = -1;
+	return EINA_FALSE;
+     }
+
+#define EMS(n) eina_magic_string_static_set(n, n##_STR)
+   EMS(EINA_MAGIC_STRINGSHARE);
+   EMS(EINA_MAGIC_STRINGSHARE_HEAD);
+   EMS(EINA_MAGIC_STRINGSHARE_NODE);
+#undef EMS
+   EINA_MAGIC_SET(share, EINA_MAGIC_STRINGSHARE);
+
+   _eina_stringshare_small_init();
+   _eina_stringshare_population_init();
+   return EINA_TRUE;
 }
 
 /**
- * @brief Shut down the eina stringshare internal structures
+ * @internal
+ * @brief Shut down the stringshare module.
+ *
+ * @return #EINA_TRUE on success, #EINA_FALSE on failure.
  *
- * @return 0 when the stringshare module is completely shut down, 1 or
- * greater otherwise.
+ * This function shuts down the stringshare module set up by
+ * eina_stringshare_init(). It is called by eina_shutdown().
  *
- * This function frees the memory allocated by eina_stringshare_init()
- * and shuts down the error module. It is also called by
- * eina_shutdown(). It returns 0 when it is called the same number of
- * times than eina_stringshare_init().
+ * @see eina_shutdown()
  */
-EAPI int
+Eina_Bool
 eina_stringshare_shutdown(void)
 {
    unsigned int i;
 
+   STRINGSHARE_LOCK_SMALL();
+   STRINGSHARE_LOCK_BIG();
+
    _eina_stringshare_population_stats();
 
-   --_eina_stringshare_init_count;
-   if (!_eina_stringshare_init_count)
+   /* remove any string still in the table */
+   for (i = 0; i < EINA_STRINGSHARE_BUCKETS; i++)
      {
-	/* remove any string still in the table */
-	for (i = 0; i < EINA_STRINGSHARE_BUCKETS; i++)
-	  {
-	     eina_rbtree_delete(EINA_RBTREE_GET(share->buckets[i]), EINA_RBTREE_FREE_CB(_eina_stringshare_head_free), NULL);
-	     share->buckets[i] = NULL;
-	  }
-	MAGIC_FREE(share);
-
-	_eina_stringshare_population_shutdown();
-	_eina_stringshare_small_shutdown();
-	eina_magic_string_shutdown();
-	eina_error_shutdown();
+	eina_rbtree_delete(EINA_RBTREE_GET(share->buckets[i]), EINA_RBTREE_FREE_CB(_eina_stringshare_head_free), NULL);
+	share->buckets[i] = NULL;
      }
+   MAGIC_FREE(share);
+
+   _eina_stringshare_population_shutdown();
+   _eina_stringshare_small_shutdown();
+   eina_log_domain_unregister(_eina_stringshare_log_dom);
+   _eina_stringshare_log_dom = -1;
+
+   STRINGSHARE_UNLOCK_BIG();
+   STRINGSHARE_UNLOCK_SMALL();
 
-   return _eina_stringshare_init_count;
+
+   return EINA_TRUE;
 }
 
+#ifdef EFL_HAVE_PTHREAD
+
+/**
+ * @internal
+ * @brief Activate the stringshare mutexs.
+ *
+ * This function activate the mutexs in the eina stringshare module. It is called by
+ * eina_thread_init().
+ *
+ * @see eina_thread_init()
+ */
+void
+eina_stringshare_threads_init(void)
+{
+   _stringshare_threads_activated = EINA_TRUE;
+}
+
+/**
+ * @internal
+ * @brief Shut down the stringshare mutexs.
+ *
+ * This function shuts down the mutexs in the stringshare module.
+ * It is called by eina_thread_shutdown().
+ *
+ * @see eina_thread_shutdown()
+ */
+void
+eina_stringshare_threads_shutdown(void)
+{
+   _stringshare_threads_activated = EINA_FALSE;
+}
+
+#endif
+
 /**
  * @brief Retrieve an instance of a string for use in a program.
  *
@@ -919,6 +1013,7 @@ eina_stringshare_add_length(const char *str, unsigned int slen)
    Eina_Stringshare_Node *el;
    int hash_num, hash;
 
+   DBG("str=%p (%.*s), slen=%u", str, slen, str ? str : "", slen);
    if (!str) return NULL;
 
    _eina_stringshare_population_add(slen);
@@ -926,38 +1021,55 @@ eina_stringshare_add_length(const char *str, unsigned int slen)
    if (slen == 0)
      return "";
    else if (slen == 1)
-     return _eina_stringshare_single + ((*str) << 1);
+     return (const char *)_eina_stringshare_single + ((*str) << 1);
    else if (slen < 4)
-     return _eina_stringshare_small_add(str, slen);
+     {
+	STRINGSHARE_LOCK_SMALL();
+	const char *s = _eina_stringshare_small_add(str, slen);
+	STRINGSHARE_UNLOCK_SMALL();
+	return s;
+     }
 
    hash = eina_hash_superfast(str, slen);
    hash_num = hash & 0xFF;
    hash = (hash >> 8) & EINA_STRINGSHARE_MASK;
 
+   STRINGSHARE_LOCK_BIG();
    p_bucket = share->buckets + hash_num;
+
    ed = _eina_stringshare_find_hash(*p_bucket, hash);
    if (!ed)
-     return _eina_stringshare_add_head(p_bucket, hash, str, slen);
+     {
+	const char *s =  _eina_stringshare_add_head(p_bucket, hash, str, slen);
+	STRINGSHARE_UNLOCK_BIG();
+	return s;
+     }
 
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, NULL);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, STRINGSHARE_UNLOCK_BIG(), NULL);
 
    el = _eina_stringshare_head_find(ed, str, slen);
    if (el)
      {
-	EINA_MAGIC_CHECK_STRINGSHARE_NODE(el);
+	EINA_MAGIC_CHECK_STRINGSHARE_NODE(el, STRINGSHARE_UNLOCK_BIG());
 	el->references++;
+	STRINGSHARE_UNLOCK_BIG();
 	return el->str;
      }
 
    el = _eina_stringshare_node_alloc(slen);
    if (!el)
-     return NULL;
+     {
+	STRINGSHARE_UNLOCK_BIG();
+	return NULL;
+     }
 
    _eina_stringshare_node_init(el, str, slen);
    el->next = ed->head;
    ed->head = el;
    _eina_stringshare_population_head_add(ed);
 
+   STRINGSHARE_UNLOCK_BIG();
+
    return el->str;
 }
 
@@ -1006,7 +1118,7 @@ _eina_stringshare_node_from_str(const char *str)
    const size_t offset = (char *)&(t.str) - (char *)&t;
 
    node = (Eina_Stringshare_Node *)(str - offset);
-   EINA_MAGIC_CHECK_STRINGSHARE_NODE(node);
+   EINA_MAGIC_CHECK_STRINGSHARE_NODE(node, );
    return node;
 }
 
@@ -1026,6 +1138,7 @@ eina_stringshare_ref(const char *str)
    Eina_Stringshare_Node *node;
    int slen;
 
+   DBG("str=%p (%s)", str, str ? str : "");
    if (!str) return NULL;
 
    /* special cases */
@@ -1038,16 +1151,26 @@ eina_stringshare_ref(const char *str)
    if (slen < 2)
      {
 	_eina_stringshare_population_add(slen);
+
 	return str;
      }
    else if (slen < 4)
      {
 	_eina_stringshare_population_add(slen);
-	return _eina_stringshare_small_add(str, slen);
+
+	STRINGSHARE_LOCK_SMALL();
+	const char *s =  _eina_stringshare_small_add(str, slen);
+	STRINGSHARE_UNLOCK_SMALL();
+
+	return s;
      }
 
+   STRINGSHARE_LOCK_BIG();
    node = _eina_stringshare_node_from_str(str);
    node->references++;
+   DBG("str=%p (%s) refs=%u", str, str, node->references);
+
+   STRINGSHARE_UNLOCK_BIG();
 
    _eina_stringshare_population_add(node->length);
 
@@ -1076,6 +1199,7 @@ eina_stringshare_del(const char *str)
    Eina_Stringshare_Node *node;
    int hash_num, slen, hash;
 
+   DBG("str=%p (%s)", str, str ? str : "");
    if (!str) return;
 
    /* special cases */
@@ -1091,17 +1215,24 @@ eina_stringshare_del(const char *str)
      return;
    else if (slen < 4)
      {
+	STRINGSHARE_LOCK_SMALL();
 	_eina_stringshare_small_del(str, slen);
+	STRINGSHARE_UNLOCK_SMALL();
 	return;
      }
 
+   STRINGSHARE_LOCK_BIG();
+
    node = _eina_stringshare_node_from_str(str);
    if (node->references > 1)
      {
 	node->references--;
+	DBG("str=%p (%s) refs=%u", str, str, node->references);
+	STRINGSHARE_UNLOCK_BIG();
 	return;
      }
 
+   DBG("str=%p (%s) refs=0, delete.", str, str);
    node->references = 0;
    slen = node->length;
 
@@ -1114,7 +1245,7 @@ eina_stringshare_del(const char *str)
    if (!ed)
      goto on_error;
 
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, STRINGSHARE_UNLOCK_BIG());
 
    if (!_eina_stringshare_head_remove_node(ed, node))
      goto on_error;
@@ -1127,12 +1258,14 @@ eina_stringshare_del(const char *str)
    else
      _eina_stringshare_population_head_del(ed);
 
+   STRINGSHARE_UNLOCK_BIG();
+
    return;
 
  on_error:
+   STRINGSHARE_UNLOCK_BIG();
    /* possible segfault happened before here, but... */
-   EINA_ERROR_PWARN("EEEK trying to del non-shared stringshare \"%s\"\n", str);
-   if (getenv("EINA_ERROR_ABORT")) abort();
+   CRITICAL("EEEK trying to del non-shared stringshare \"%s\"", str);
 }
 
 /**
@@ -1219,7 +1352,10 @@ static Eina_Bool
 eina_iterator_array_check(const Eina_Rbtree *rbtree __UNUSED__, Eina_Stringshare_Head *head, struct dumpinfo *fdata)
 {
    Eina_Stringshare_Node *node;
-   
+
+   STRINGSHARE_LOCK_SMALL();
+   STRINGSHARE_LOCK_BIG();
+
    fdata->used += sizeof(Eina_Stringshare_Head);
    for (node = head->head; node; node = node->next)
      {
@@ -1231,6 +1367,10 @@ eina_iterator_array_check(const Eina_Rbtree *rbtree __UNUSED__, Eina_Stringshare
 	fdata->dups += node->references - 1;
 	fdata->unique++;
      }
+
+   STRINGSHARE_UNLOCK_BIG();
+   STRINGSHARE_UNLOCK_SMALL();
+
    return EINA_TRUE;
 }
 
@@ -1254,7 +1394,12 @@ eina_stringshare_dump(void)
    di.unique = 0;
    printf("DDD:   len   ref string\n");
    printf("DDD:-------------------\n");
+
+   STRINGSHARE_LOCK_SMALL();
    _eina_stringshare_small_dump(&di);
+   STRINGSHARE_UNLOCK_SMALL();
+
+   STRINGSHARE_LOCK_BIG();
    for (i = 0; i < EINA_STRINGSHARE_BUCKETS; i++)
      {
 	if (!share->buckets[i]) continue;
@@ -1282,8 +1427,11 @@ eina_stringshare_dump(void)
    for (i = 0; i < sizeof (population_group) / sizeof (population_group[0]); ++i)
      fprintf(stderr, "DDD: %i strings of length %i, max strings: %i\n", population_group[i].count, i, population_group[i].max);
 #endif
+
+   STRINGSHARE_UNLOCK_BIG();
 }
 
 /**
  * @}
  */
+
diff --git a/src/lib/eina_tiler.c b/src/lib/eina_tiler.c
index 78328ff..9ceb489 100644
--- a/src/lib/eina_tiler.c
+++ b/src/lib/eina_tiler.c
@@ -29,8 +29,10 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "eina_tiler.h"
+#include "eina_config.h"
 #include "eina_private.h"
+#include "eina_tiler.h"
+#include "eina_error.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -463,6 +465,7 @@ static inline int _split_fuzzy(list_t *dirty, const rect_t a, rect_t *b)
 	return action;
 }
 
+#if 0
 static void rect_list_node_pool_set_max(int max)
 {
 	int diff;
@@ -481,6 +484,7 @@ static void rect_list_node_pool_set_max(int max)
 
 	list_node_pool.max = max;
 }
+#endif
 
 static void rect_list_node_pool_flush(void)
 {
@@ -510,6 +514,7 @@ static inline void rect_list_node_pool_put(list_node_t *node)
 		free(node);
 }
 
+#if 0
 static void rect_print(const rect_t r)
 {
 	printf("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height);
@@ -542,7 +547,7 @@ static void rect_list_print(const list_t rects)
 	}
 	printf("]\n");
 }
-
+#endif
 
 static inline list_node_t *
 rect_list_unlink_next(list_t *rects, list_node_t *parent_node)
@@ -642,6 +647,7 @@ static void rect_list_del_split_strict(list_t *rects, const rect_t del_r)
 	rect_list_concat(rects, &modified);
 }
 
+#if 0
 static void rect_list_add_split_strict(list_t *rects, list_node_t *node)
 {
 	list_t dirty = list_zeroed;
@@ -710,6 +716,7 @@ static void rect_list_add_split_strict(list_t *rects, list_node_t *node)
 		cur_node = cur_node->next;
 	}
 }
+#endif
 
 static list_node_t *
 rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error)
@@ -983,7 +990,7 @@ static inline void _splitter_del(Eina_Tiler *t)
 	rect_list_node_pool_flush();
 }
 
-static inline void _splitter_tile_size_set(Eina_Tiler *t, int w, int h)
+static inline void _splitter_tile_size_set(Eina_Tiler *t, int w __UNUSED__, int h __UNUSED__)
 {
 	/* TODO are w and h used for something? */
 	t->splitter.rects = list_zeroed;
@@ -1134,7 +1141,7 @@ EAPI void eina_tiler_tile_size_set(Eina_Tiler *t, int w, int h)
  * To be documented
  * FIXME: To be fixed
  */
-EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, Eina_Rectangle *r)
+EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, const Eina_Rectangle *r)
 {
 	Eina_Rectangle tmp;
 
@@ -1152,7 +1159,7 @@ EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, Eina_Rectangle *r)
  * To be documented
  * FIXME: To be fixed
  */
-EAPI void eina_tiler_rect_del(Eina_Tiler *t, Eina_Rectangle *r)
+EAPI void eina_tiler_rect_del(Eina_Tiler *t, const Eina_Rectangle *r)
 {
 	Eina_Rectangle tmp;
 
@@ -1209,3 +1216,67 @@ EAPI Eina_Iterator * eina_tiler_iterator_new(const Eina_Tiler *t)
 
 	return &it->iterator;
 }
+
+struct _Eina_Tile_Grid_Slicer_Iterator
+{
+   Eina_Iterator iterator;
+   Eina_Tile_Grid_Slicer priv;
+};
+
+typedef struct _Eina_Tile_Grid_Slicer_Iterator Eina_Tile_Grid_Slicer_Iterator;
+
+static void
+eina_tile_grid_slicer_iterator_free(Eina_Tile_Grid_Slicer_Iterator *it)
+{
+   EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_NONE);
+   free(it);
+}
+
+static Eina_Bool
+eina_tile_grid_slicer_iterator_next(Eina_Tile_Grid_Slicer_Iterator *it, void **data)
+{
+   return eina_tile_grid_slicer_next
+     (&it->priv, (const Eina_Tile_Grid_Info **)data);
+}
+
+/**
+ * @brief Creates a new Eina_Iterator that slices over a list of tiles.
+ *
+ * @param   x X axis coordinate.
+ * @param   y Y axis coordinate.
+ * @param   w width.
+ * @param   h height.
+ * @param   tile_w tile width.
+ * @param   tile_h tile height.
+ * @return  A pointer to the Eina_Iterator.
+ *          @c NULL on failure.
+ *
+ * The tile grid is defined by @a tile_w and @a tile_h while the region is
+ * defined by @a x, @a y, @a w, @a h. The output is given as
+ * @c Eina_Tile_Grid_Info where tile index is given in @c col col and
+ * @c row row with tile-relative
+ *    coordinates in @c x, @c y, @c w, @c h. If tile was fully filled by
+ *    region, then @c full flag
+ *     is set.
+ */
+EAPI Eina_Iterator *
+eina_tile_grid_slicer_iterator_new(int x, int y, int w, int h, int tile_w, int tile_h)
+{
+   Eina_Tile_Grid_Slicer_Iterator *it;
+
+   it = calloc(1, sizeof(*it));
+   if (!it)
+     {
+	eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+	return NULL;
+     }
+
+   EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
+
+   it->iterator.next = FUNC_ITERATOR_NEXT(eina_tile_grid_slicer_iterator_next);
+   it->iterator.free = FUNC_ITERATOR_FREE(eina_tile_grid_slicer_iterator_free);
+
+   eina_tile_grid_slicer_setup(&it->priv, x, y, w, h, tile_w, tile_h);
+
+   return &it->iterator;
+}
diff --git a/src/lib/eina_value.c b/src/lib/eina_value.c
index dc48025..901bc6b 100644
--- a/src/lib/eina_value.c
+++ b/src/lib/eina_value.c
@@ -28,7 +28,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 # include "config.h"
 #endif
 
-#include "eina_types.h"
+#include "eina_config.h"
 #include "eina_private.h"
 
 /*============================================================================*
diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in
index 0cdc061..072f223 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,
@@ -92,6 +92,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -176,6 +177,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -196,15 +198,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -219,8 +224,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; \
@@ -326,7 +331,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/mp/Makefile.in b/src/modules/mp/Makefile.in
index 686408a..fc59b1a 100644
--- a/src/modules/mp/Makefile.in
+++ b/src/modules/mp/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,
@@ -92,6 +92,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -176,6 +177,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -196,15 +198,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -219,8 +224,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; \
@@ -326,7 +331,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/mp/chained_pool/Makefile.am b/src/modules/mp/chained_pool/Makefile.am
index c6ad9b4..f14f7e3 100644
--- a/src/modules/mp/chained_pool/Makefile.am
+++ b/src/modules/mp/chained_pool/Makefile.am
@@ -5,8 +5,7 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
- at EINA_CFLAGS@ \
- at EFL_PTHREAD_CFLAGS@
+ at EFL_EINA_BUILD@
 
 if EINA_BUILD_CHAINED_POOL
 if !EINA_STATIC_BUILD_CHAINED_POOL
@@ -17,8 +16,9 @@ controller_LTLIBRARIES = eina_chained_mempool.la
 eina_chained_mempool_la_SOURCES = \
 eina_chained_mempool.c
 
-eina_chained_mempool_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@ @EFL_PTHREAD_LIBS@
-eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+eina_chained_mempool_la_CFLAGS = @EINA_CFLAGS@ @EFL_PTHREAD_CFLAGS@
+eina_chained_mempool_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
+eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version @EFL_PTHREAD_LIBS@
 eina_chained_mempool_la_LIBTOOLFLAGS = --tag=disable-static
 
 endif
diff --git a/src/modules/mp/chained_pool/Makefile.in b/src/modules/mp/chained_pool/Makefile.in
index 21523d0..88b6093 100644
--- a/src/modules/mp/chained_pool/Makefile.in
+++ b/src/modules/mp/chained_pool/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,
@@ -65,8 +65,8 @@ eina_chained_mempool_la_OBJECTS =  \
 	$(am_eina_chained_mempool_la_OBJECTS)
 eina_chained_mempool_la_LINK = $(LIBTOOL) --tag=CC \
 	$(eina_chained_mempool_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(eina_chained_mempool_la_LDFLAGS) $(LDFLAGS) -o $@
+	--mode=link $(CCLD) $(eina_chained_mempool_la_CFLAGS) \
+	$(CFLAGS) $(eina_chained_mempool_la_LDFLAGS) $(LDFLAGS) -o $@
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at am_eina_chained_mempool_la_rpath = -rpath \
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE@	$(controllerdir)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
@@ -115,6 +115,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -199,6 +200,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -219,15 +221,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -237,16 +242,16 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
- at EINA_CFLAGS@ \
- at EFL_PTHREAD_CFLAGS@
+ at EFL_EINA_BUILD@
 
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at controllerdir = $(libdir)/eina/mp
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at controller_LTLIBRARIES = eina_chained_mempool.la
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_SOURCES = \
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool.c
 
- at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@ @EFL_PTHREAD_LIBS@
- at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_CFLAGS = @EINA_CFLAGS@ @EFL_PTHREAD_CFLAGS@
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version @EFL_PTHREAD_LIBS@
 @EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LIBTOOLFLAGS = --tag=disable-static
 all: all-am
 
@@ -256,8 +261,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; \
@@ -341,11 +346,11 @@ distclean-compile:
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 eina_chained_mempool_la-eina_chained_mempool.lo: eina_chained_mempool.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(eina_chained_mempool_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eina_chained_mempool_la-eina_chained_mempool.lo -MD -MP -MF $(DEPDIR)/eina_chained_mempool_la-eina_chained_mempool.Tpo -c -o eina_chained_mempool_la-eina_chained_mempool.lo `test -f 'eina_chained_mempool.c' || echo '$(srcdir)/'`eina_chained_mempool.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(eina_chained_mempool_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(eina_chained_mempool_la_CFLAGS) $(CFLAGS) -MT eina_chained_mempool_la-eina_chained_mempool.lo -MD -MP -MF $(DEPDIR)/eina_chained_mempool_la-eina_chained_mempool.Tpo -c -o eina_chained_mempool_la-eina_chained_mempool.lo `test -f 'eina_chained_mempool.c' || echo '$(srcdir)/'`eina_chained_mempool.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/eina_chained_mempool_la-eina_chained_mempool.Tpo $(DEPDIR)/eina_chained_mempool_la-eina_chained_mempool.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_chained_mempool.c' object='eina_chained_mempool_la-eina_chained_mempool.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(eina_chained_mempool_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eina_chained_mempool_la-eina_chained_mempool.lo `test -f 'eina_chained_mempool.c' || echo '$(srcdir)/'`eina_chained_mempool.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(eina_chained_mempool_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(eina_chained_mempool_la_CFLAGS) $(CFLAGS) -c -o eina_chained_mempool_la-eina_chained_mempool.lo `test -f 'eina_chained_mempool.c' || echo '$(srcdir)/'`eina_chained_mempool.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -358,7 +363,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/mp/chained_pool/eina_chained_mempool.c b/src/modules/mp/chained_pool/eina_chained_mempool.c
index 7d82195..f43b937 100644
--- a/src/modules/mp/chained_pool/eina_chained_mempool.c
+++ b/src/modules/mp/chained_pool/eina_chained_mempool.c
@@ -191,7 +191,7 @@ static void*
 eina_chained_mempool_init(const char *context, __UNUSED__ const char *option, va_list args)
 {
    Chained_Mempool *mp;
-   int length;
+   size_t length;
 
    length = context ? strlen(context) + 1 : 0;
 
@@ -241,23 +241,25 @@ eina_chained_mempool_shutdown(void *data)
    free(mp);
 }
 
-static Eina_Mempool_Backend mp_backend = {
-  .name ="chained_mempool",
-  .init = &eina_chained_mempool_init,
-  .shutdown = &eina_chained_mempool_shutdown,
-  .realloc = &eina_chained_mempool_realloc,
-  .alloc = &eina_chained_mempool_malloc,
-  .free = &eina_chained_mempool_free
+static Eina_Mempool_Backend _eina_chained_mp_backend = {
+   "chained_mempool",
+   &eina_chained_mempool_init,
+   &eina_chained_mempool_free,
+   &eina_chained_mempool_malloc,
+   &eina_chained_mempool_realloc,
+   NULL,
+   NULL,
+   &eina_chained_mempool_shutdown
 };
 
 Eina_Bool chained_init(void)
 {
-	return eina_mempool_register(&mp_backend);
+	return eina_mempool_register(&_eina_chained_mp_backend);
 }
 
 void chained_shutdown(void)
 {
-	eina_mempool_unregister(&mp_backend);
+	eina_mempool_unregister(&_eina_chained_mp_backend);
 }
 
 #ifndef EINA_STATIC_BUILD_CHAINED_POOL
diff --git a/src/modules/mp/ememoa_fixed/Makefile.am b/src/modules/mp/ememoa_fixed/Makefile.am
index 9d264fd..ff5b57f 100644
--- a/src/modules/mp/ememoa_fixed/Makefile.am
+++ b/src/modules/mp/ememoa_fixed/Makefile.am
@@ -6,7 +6,8 @@ AM_CPPFLAGS = \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
- at EMEMOA_CFLAGS@
+ at EMEMOA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 if EINA_BUILD_EMEMOA_FIXED
 if !EINA_STATIC_BUILD_EMEMOA_FIXED
diff --git a/src/modules/mp/ememoa_fixed/Makefile.in b/src/modules/mp/ememoa_fixed/Makefile.in
index c7703f5..cef2a70 100644
--- a/src/modules/mp/ememoa_fixed/Makefile.in
+++ b/src/modules/mp/ememoa_fixed/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,
@@ -114,6 +114,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -198,6 +199,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -218,15 +220,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -237,7 +242,8 @@ AM_CPPFLAGS = \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
- at EMEMOA_CFLAGS@
+ at EMEMOA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 @EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at controllerdir = $(libdir)/eina/mp
 @EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at controller_LTLIBRARIES = eina_ememoa_fixed.la
@@ -255,8 +261,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; \
@@ -357,7 +363,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/mp/ememoa_fixed/eina_ememoa_fixed.c b/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c
index 68eed34..9b787f0 100644
--- a/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c
+++ b/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c
@@ -133,7 +133,7 @@ eina_ememoa_fixed_shutdown(void *data)
    free(efm);
 }
 
-static Eina_Mempool_Backend mp_backend = {
+static Eina_Mempool_Backend _eina_ememoa_mp_backend = {
   .name = "ememoa_fixed",
   .init = &eina_ememoa_fixed_init,
   .shutdown = &eina_ememoa_fixed_shutdown,
@@ -146,12 +146,12 @@ static Eina_Mempool_Backend mp_backend = {
 
 Eina_Bool ememoa_fixed_init(void)
 {
-	return eina_mempool_register(&mp_backend);
+	return eina_mempool_register(&_eina_ememoa_mp_backend);
 }
 
 void ememoa_fixed_shutdown(void)
 {
-	eina_mempool_unregister(&mp_backend);
+	eina_mempool_unregister(&_eina_ememoa_mp_backend);
 }
 
 
diff --git a/src/modules/mp/ememoa_unknown/Makefile.am b/src/modules/mp/ememoa_unknown/Makefile.am
index d593d90..879d8ce 100644
--- a/src/modules/mp/ememoa_unknown/Makefile.am
+++ b/src/modules/mp/ememoa_unknown/Makefile.am
@@ -6,7 +6,8 @@ AM_CPPFLAGS = \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
- at EMEMOA_CFLAGS@
+ at EMEMOA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 if EINA_BUILD_EMEMOA_UNKNOWN
 if !EINA_STATIC_BUILD_EMEMOA_UNKNOWN
diff --git a/src/modules/mp/ememoa_unknown/Makefile.in b/src/modules/mp/ememoa_unknown/Makefile.in
index 017cd39..a2268da 100644
--- a/src/modules/mp/ememoa_unknown/Makefile.in
+++ b/src/modules/mp/ememoa_unknown/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,
@@ -114,6 +114,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -198,6 +199,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -218,15 +220,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -237,7 +242,8 @@ AM_CPPFLAGS = \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
- at EMEMOA_CFLAGS@
+ at EMEMOA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 @EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at controllerdir = $(libdir)/eina/mp
 @EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at controller_LTLIBRARIES = eina_ememoa_unknown.la
@@ -255,8 +261,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; \
@@ -357,7 +363,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/mp/ememoa_unknown/eina_ememoa_unknown.c b/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
index 7774846..fb4295e 100644
--- a/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
+++ b/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
@@ -138,7 +138,7 @@ eina_ememoa_unknown_size_shutdown(void *data)
    free(efm);
 }
 
-static Eina_Mempool_Backend mp_backend = {
+static Eina_Mempool_Backend _eina_ememoa_unknown_mp_backend = {
   .name = "ememoa_unknown",
   .init = &eina_ememoa_unknown_size_init,
   .shutdown = &eina_ememoa_unknown_size_shutdown,
@@ -151,12 +151,12 @@ static Eina_Mempool_Backend mp_backend = {
 
 Eina_Bool ememoa_unknown_init(void)
 {
-	return eina_mempool_register(&mp_backend);
+	return eina_mempool_register(&_eina_ememoa_unknown_mp_backend);
 }
 
 void ememoa_unknown_shutdown(void)
 {
-	eina_mempool_unregister(&mp_backend);
+	eina_mempool_unregister(&_eina_ememoa_unknown_mp_backend);
 }
 
 #ifndef EINA_STATIC_BUILD_EMEMOA_UNKNOWN
diff --git a/src/modules/mp/fixed_bitmap/Makefile.am b/src/modules/mp/fixed_bitmap/Makefile.am
index 87b9397..eaad65f 100644
--- a/src/modules/mp/fixed_bitmap/Makefile.am
+++ b/src/modules/mp/fixed_bitmap/Makefile.am
@@ -5,7 +5,8 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
- at EINA_CFLAGS@
+ at EINA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 if EINA_BUILD_FIXED_BITMAP
 if !EINA_STATIC_BUILD_FIXED_BITMAP
diff --git a/src/modules/mp/fixed_bitmap/Makefile.in b/src/modules/mp/fixed_bitmap/Makefile.in
index a428fd3..a47dd9b 100644
--- a/src/modules/mp/fixed_bitmap/Makefile.in
+++ b/src/modules/mp/fixed_bitmap/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,
@@ -114,6 +114,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -198,6 +199,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -218,15 +220,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -236,7 +241,8 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
- at EINA_CFLAGS@
+ at EINA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 @EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at controllerdir = $(libdir)/eina/mp
 @EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at controller_LTLIBRARIES = eina_fixed_bitmap.la
@@ -254,8 +260,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; \
@@ -356,7 +362,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/mp/fixed_bitmap/eina_fixed_bitmap.c b/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
index bfafc84..f91840a 100644
--- a/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
+++ b/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
@@ -23,7 +23,9 @@
 # include "config.h"
 #endif
 
-#include <stdint.h>
+#ifndef _MSC_VER
+# include <stdint.h>
+#endif
 #include <string.h>
 #include <assert.h>
 
@@ -65,7 +67,7 @@ _eina_rbtree_inlist_delta(void)
    void *a = &tmp.__rbtree;
    void *b = &tmp.__in_list;
 
-   return a - b;
+   return (char *)a - (char *)b;
 }
 
 static Eina_Rbtree_Direction
@@ -85,7 +87,7 @@ _eina_fixed_cmp_key(const Eina_Rbtree *node, const void *key, __UNUSED__ int len
    int limit;
 
    limit = sizeof (Eina_Fixed_Bitmap_Pool) + mp->item_size * 32;
-   delta = a - b;
+   delta = (char *)a - (char *)b;
 
    if (delta > 0)
      return 1;
@@ -157,7 +159,7 @@ eina_fixed_bitmap_free(void *data, void *ptr)
    if (pool->bitmask != 0xFFFFFFFF) push_front = EINA_TRUE;
 
    a = pool;
-   delta = (ptr - a - sizeof (Eina_Fixed_Bitmap_Pool)) / mp->item_size;
+   delta = ((char *)ptr - (char *)a - sizeof (Eina_Fixed_Bitmap_Pool)) / mp->item_size;
 
    assert(delta >= 0 && delta < 32);
 
@@ -203,23 +205,25 @@ eina_fixed_bitmap_shutdown(void *data)
    free(mp);
 }
 
-static Eina_Mempool_Backend mp_backend = {
-  .name ="fixed_bitmap",
-  .init = &eina_fixed_bitmap_init,
-  .shutdown = &eina_fixed_bitmap_shutdown,
-  .realloc = &eina_fixed_bitmap_realloc,
-  .alloc = &eina_fixed_bitmap_malloc,
-  .free = &eina_fixed_bitmap_free
+static Eina_Mempool_Backend _eina_fixed_bitmap_mp_backend = {
+   "fixed_bitmap",
+   &eina_fixed_bitmap_init,
+   &eina_fixed_bitmap_free,
+   &eina_fixed_bitmap_malloc,
+   &eina_fixed_bitmap_realloc,
+   NULL,
+   NULL,
+   &eina_fixed_bitmap_shutdown
 };
 
 Eina_Bool fixed_bitmap_init(void)
 {
-   return eina_mempool_register(&mp_backend);
+   return eina_mempool_register(&_eina_fixed_bitmap_mp_backend);
 }
 
 void fixed_bitmap_shutdown(void)
 {
-   eina_mempool_unregister(&mp_backend);
+   eina_mempool_unregister(&_eina_fixed_bitmap_mp_backend);
 }
 
 #ifndef EINA_STATIC_BUILD_FIXED_BITMAP
diff --git a/src/modules/mp/pass_through/Makefile.am b/src/modules/mp/pass_through/Makefile.am
index b630492..4ce8f37 100644
--- a/src/modules/mp/pass_through/Makefile.am
+++ b/src/modules/mp/pass_through/Makefile.am
@@ -5,7 +5,8 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
- at EINA_CFLAGS@
+ at EINA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 if EINA_BUILD_PASS_THROUGH
 if !EINA_STATIC_BUILD_PASS_THROUGH
diff --git a/src/modules/mp/pass_through/Makefile.in b/src/modules/mp/pass_through/Makefile.in
index dbc5cba..1a6170c 100644
--- a/src/modules/mp/pass_through/Makefile.in
+++ b/src/modules/mp/pass_through/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,
@@ -114,6 +114,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -198,6 +199,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -218,15 +220,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -236,7 +241,8 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
 @EINA_CPPFLAGS@ \
- at EINA_CFLAGS@
+ at EINA_CFLAGS@ \
+ at EFL_EINA_BUILD@
 
 @EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at controllerdir = $(libdir)/eina/mp
 @EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at controller_LTLIBRARIES = eina_pass_through.la
@@ -254,8 +260,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; \
@@ -356,7 +362,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/mp/pass_through/eina_pass_through.c b/src/modules/mp/pass_through/eina_pass_through.c
index fe41a2b..ef8fcb3 100644
--- a/src/modules/mp/pass_through/eina_pass_through.c
+++ b/src/modules/mp/pass_through/eina_pass_through.c
@@ -60,25 +60,25 @@ eina_pass_through_shutdown(__UNUSED__ void *data)
 }
 
 
-static Eina_Mempool_Backend mp_backend = {
-  .name = "pass_through",
-  .init = &eina_pass_through_init,
-  .shutdown = &eina_pass_through_shutdown,
-  .realloc = &eina_pass_through_realloc,
-  .alloc = &eina_pass_through_malloc,
-  .free = &eina_pass_through_free,
-  .garbage_collect = NULL,
-  .statistics = NULL
+static Eina_Mempool_Backend _eina_pass_through_mp_backend = {
+   "pass_through",
+   &eina_pass_through_init,
+   &eina_pass_through_free,
+   &eina_pass_through_malloc,
+   &eina_pass_through_realloc,
+   NULL,
+   NULL,
+   &eina_pass_through_shutdown
 };
 
 Eina_Bool pass_through_init(void)
 {
-	return eina_mempool_register(&mp_backend);
+	return eina_mempool_register(&_eina_pass_through_mp_backend);
 }
 
 void pass_through_shutdown(void)
 {
-	eina_mempool_unregister(&mp_backend);
+	eina_mempool_unregister(&_eina_pass_through_mp_backend);
 }
 
 #ifndef EINA_STATIC_BUILD_PASS_THROUGH
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index 9a23c7c..cb5d3d8 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -48,7 +48,8 @@ eina_suite_SOURCES = 	\
 eina_suite.c 		\
 eina_test_stringshare.c \
 eina_test_array.c 	\
-eina_test_error.c 	\
+eina_test_error.c	\
+eina_test_log.c 	\
 eina_test_magic.c 	\
 eina_test_inlist.c 	\
 eina_test_main.c 	\
@@ -64,7 +65,9 @@ eina_test_file.c	\
 eina_test_benchmark.c	\
 eina_test_mempool.c	\
 eina_test_rectangle.c	\
-eina_test_list.c
+eina_test_list.c	\
+eina_test_matrixsparse.c \
+eina_test_tiler.c
 
 eina_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libeina.la
 
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
index cf1bbd5..122c443 100644
--- a/src/tests/Makefile.in
+++ b/src/tests/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,
@@ -98,16 +98,19 @@ eina_bench_OBJECTS = $(am_eina_bench_OBJECTS)
 @EFL_ENABLE_BENCHMARK_TRUE at eina_bench_DEPENDENCIES =  \
 @EFL_ENABLE_BENCHMARK_TRUE@	$(top_builddir)/src/lib/libeina.la
 am__eina_suite_SOURCES_DIST = eina_suite.c eina_test_stringshare.c \
-	eina_test_array.c eina_test_error.c eina_test_magic.c \
-	eina_test_inlist.c eina_test_main.c eina_test_counter.c \
-	eina_test_lalloc.c eina_test_hash.c eina_test_iterator.c \
-	eina_test_accessor.c eina_test_module.c eina_test_convert.c \
-	eina_test_rbtree.c eina_test_file.c eina_test_benchmark.c \
-	eina_test_mempool.c eina_test_rectangle.c eina_test_list.c
+	eina_test_array.c eina_test_error.c eina_test_log.c \
+	eina_test_magic.c eina_test_inlist.c eina_test_main.c \
+	eina_test_counter.c eina_test_lalloc.c eina_test_hash.c \
+	eina_test_iterator.c eina_test_accessor.c eina_test_module.c \
+	eina_test_convert.c eina_test_rbtree.c eina_test_file.c \
+	eina_test_benchmark.c eina_test_mempool.c \
+	eina_test_rectangle.c eina_test_list.c \
+	eina_test_matrixsparse.c eina_test_tiler.c
 @EFL_ENABLE_TESTS_TRUE at am_eina_suite_OBJECTS = eina_suite.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_stringshare.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_array.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_error.$(OBJEXT) \
+ at EFL_ENABLE_TESTS_TRUE@	eina_test_log.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_magic.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_inlist.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_main.$(OBJEXT) \
@@ -123,7 +126,9 @@ am__eina_suite_SOURCES_DIST = eina_suite.c eina_test_stringshare.c \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_benchmark.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_mempool.$(OBJEXT) \
 @EFL_ENABLE_TESTS_TRUE@	eina_test_rectangle.$(OBJEXT) \
- at EFL_ENABLE_TESTS_TRUE@	eina_test_list.$(OBJEXT)
+ at EFL_ENABLE_TESTS_TRUE@	eina_test_list.$(OBJEXT) \
+ at EFL_ENABLE_TESTS_TRUE@	eina_test_matrixsparse.$(OBJEXT) \
+ at EFL_ENABLE_TESTS_TRUE@	eina_test_tiler.$(OBJEXT)
 eina_suite_OBJECTS = $(am_eina_suite_OBJECTS)
 @EFL_ENABLE_TESTS_TRUE at eina_suite_DEPENDENCIES =  \
 @EFL_ENABLE_TESTS_TRUE@	$(top_builddir)/src/lib/libeina.la
@@ -175,6 +180,7 @@ ECORE_CFLAGS = @ECORE_CFLAGS@
 ECORE_LIBS = @ECORE_LIBS@
 EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
 EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
+EFL_EINA_BUILD = @EFL_EINA_BUILD@
 EFL_PTHREAD_CFLAGS = @EFL_PTHREAD_CFLAGS@
 EFL_PTHREAD_LIBS = @EFL_PTHREAD_LIBS@
 EFL_SIMD_FLAGS = @EFL_SIMD_FLAGS@
@@ -259,6 +265,7 @@ dvidir = @dvidir@
 efl_doxygen = @efl_doxygen@
 efl_have_doxygen = @efl_have_doxygen@
 exec_prefix = @exec_prefix@
+fnmatch_libs = @fnmatch_libs@
 have_lcov = @have_lcov@
 host = @host@
 host_alias = @host_alias@
@@ -279,15 +286,18 @@ 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@
 release_info = @release_info@
+requirement_eina = @requirement_eina@
 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@
@@ -305,7 +315,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/include \
 @EFL_ENABLE_TESTS_TRUE at eina_suite.c 		\
 @EFL_ENABLE_TESTS_TRUE at eina_test_stringshare.c \
 @EFL_ENABLE_TESTS_TRUE at eina_test_array.c 	\
- at EFL_ENABLE_TESTS_TRUE@eina_test_error.c 	\
+ at EFL_ENABLE_TESTS_TRUE@eina_test_error.c	\
+ at EFL_ENABLE_TESTS_TRUE@eina_test_log.c 	\
 @EFL_ENABLE_TESTS_TRUE at eina_test_magic.c 	\
 @EFL_ENABLE_TESTS_TRUE at eina_test_inlist.c 	\
 @EFL_ENABLE_TESTS_TRUE at eina_test_main.c 	\
@@ -321,7 +332,9 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/include \
 @EFL_ENABLE_TESTS_TRUE at eina_test_benchmark.c	\
 @EFL_ENABLE_TESTS_TRUE at eina_test_mempool.c	\
 @EFL_ENABLE_TESTS_TRUE at eina_test_rectangle.c	\
- at EFL_ENABLE_TESTS_TRUE@eina_test_list.c
+ at EFL_ENABLE_TESTS_TRUE@eina_test_list.c	\
+ at EFL_ENABLE_TESTS_TRUE@eina_test_matrixsparse.c \
+ at EFL_ENABLE_TESTS_TRUE@eina_test_tiler.c
 
 @EFL_ENABLE_TESTS_TRUE at eina_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libeina.la
 @EFL_ENABLE_TESTS_TRUE at module_dummydir = $(libdir)/eina/test
@@ -353,8 +366,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; \
@@ -477,13 +490,16 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_iterator.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_lalloc.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_list.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_log.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_magic.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_matrixsparse.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_mempool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_module.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_rbtree.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_rectangle.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_stringshare.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_test_tiler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/module_dummy_la-eina_test_module_dummy.Plo at am__quote@
 
 .c.o:
@@ -525,7 +541,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/tests/eina_bench.c b/src/tests/eina_bench.c
index 1f5abfc..684376f 100644
--- a/src/tests/eina_bench.c
+++ b/src/tests/eina_bench.c
@@ -25,7 +25,7 @@
 #include <limits.h>
 
 #include "eina_bench.h"
-#include "eina_mempool.h"
+#include "Eina.h"
 
 typedef struct _Eina_Benchmark_Case Eina_Benchmark_Case;
 struct _Eina_Benchmark_Case
@@ -51,7 +51,7 @@ static const Eina_Benchmark_Case etc[] = {
 static Eina_Array *_modules;
 static void _mempool_init(void)
 {
-    eina_mempool_init();
+    eina_init();
     /* force modules to be loaded in case they are not installed */
     _modules = eina_module_list_get(NULL, PACKAGE_BUILD_DIR"/src/modules", 1, NULL, NULL);
     eina_module_list_load(_modules);
@@ -61,7 +61,7 @@ static void _mempool_shutdown(void)
 {
    eina_module_list_flush(_modules);
    /* TODO delete the list */
-   eina_mempool_shutdown();
+   eina_shutdown();
 }
 
 int
@@ -75,7 +75,7 @@ main(int argc, char **argv)
 
    _mempool_init();
 
-   eina_benchmark_init();
+   eina_init();
 
    for (i = 0; etc[i].bench_case != NULL; ++i)
      {
@@ -102,7 +102,7 @@ main(int argc, char **argv)
 
    eina_bench_e17();
 
-   eina_benchmark_shutdown();
+   eina_shutdown();
 
    _mempool_shutdown();
    return 0;
diff --git a/src/tests/eina_bench_array.c b/src/tests/eina_bench_array.c
index e521c7a..b2ebabf 100644
--- a/src/tests/eina_bench_array.c
+++ b/src/tests/eina_bench_array.c
@@ -72,7 +72,7 @@ eina_bench_array_4evas_render_inline(int request)
 
    srand(time(NULL));
 
-   eina_array_init();
+   eina_init();
 
    array = eina_array_new(64);
 
@@ -106,7 +106,7 @@ eina_bench_array_4evas_render_inline(int request)
 
    eina_array_free(array);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 
 static Eina_Bool
@@ -136,7 +136,7 @@ eina_bench_array_4evas_render_iterator(int request)
 
    srand(time(NULL));
 
-   eina_array_init();
+   eina_init();
 
    array = eina_array_new(64);
 
@@ -173,7 +173,7 @@ eina_bench_array_4evas_render_iterator(int request)
 
    eina_array_free(array);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 
 static void
@@ -185,7 +185,7 @@ eina_bench_list_4evas_render(int request)
    int i;
    int j;
 
-   eina_list_init();
+   eina_init();
 
    for (i = 0; i < 1000; ++i)
      {
@@ -242,7 +242,7 @@ eina_bench_list_4evas_render(int request)
 	list = eina_list_remove_list(list, list);
      }
 
-   eina_list_shutdown();
+   eina_shutdown();
 }
 
 static void
@@ -255,7 +255,7 @@ eina_bench_list_4evas_render_iterator(int request)
    int i;
    int j;
 
-   eina_list_init();
+   eina_init();
 
    for (i = 0; i < 1000; ++i)
      {
@@ -309,7 +309,7 @@ eina_bench_list_4evas_render_iterator(int request)
 	list = eina_list_remove_list(list, list);
      }
 
-   eina_list_shutdown();
+   eina_shutdown();
 }
 
 static void
diff --git a/src/tests/eina_bench_hash.c b/src/tests/eina_bench_hash.c
index 6352e18..268bf9a 100644
--- a/src/tests/eina_bench_hash.c
+++ b/src/tests/eina_bench_hash.c
@@ -162,7 +162,7 @@ eina_bench_lookup_djb2(int request)
 
 	tmp_val = malloc(sizeof (int));
 
-	if (!tmp_key || !tmp_val) continue ;
+	if (!tmp_val) continue ;
 
 	eina_convert_itoa(i, tmp_key);
 	*tmp_val = i;
diff --git a/src/tests/eina_bench_mempool.c b/src/tests/eina_bench_mempool.c
index d89e2cb..eb036a9 100644
--- a/src/tests/eina_bench_mempool.c
+++ b/src/tests/eina_bench_mempool.c
@@ -25,8 +25,7 @@
 #endif
 
 #include "eina_bench.h"
-#include "eina_array.h"
-#include "eina_mempool.h"
+#include "Eina.h"
 
 static void
 _eina_mempool_bench(Eina_Mempool *mp, int request)
@@ -35,7 +34,7 @@ _eina_mempool_bench(Eina_Mempool *mp, int request)
    int i;
    int j;
 
-   eina_array_init();
+   eina_init();
    array = eina_array_new(32);
 
    for (i = 0; i < 100; ++i)
@@ -52,7 +51,7 @@ _eina_mempool_bench(Eina_Mempool *mp, int request)
      }
 
    eina_array_free(array);
-   eina_array_shutdown();
+   eina_shutdown();
 }
 
 static void
@@ -115,7 +114,7 @@ eina_mempool_glib(int request)
    int i;
    int j;
 
-   eina_array_init();
+   eina_init();
    array = eina_array_new(32);
 
    for (i = 0; i < 100; ++i)
@@ -132,7 +131,7 @@ eina_mempool_glib(int request)
      }
 
    eina_array_free(array);
-   eina_array_shutdown();
+   eina_shutdown();
 
 }
 #endif
diff --git a/src/tests/eina_bench_rectangle_pool.c b/src/tests/eina_bench_rectangle_pool.c
index 6d61517..1214c75 100644
--- a/src/tests/eina_bench_rectangle_pool.c
+++ b/src/tests/eina_bench_rectangle_pool.c
@@ -21,8 +21,7 @@
 #endif
 
 #include "eina_bench.h"
-#include "eina_rectangle.h"
-#include "eina_list.h"
+#include "Eina.h"
 
 static void
 eina_bench_eina_rectangle_pool(int request)
@@ -32,8 +31,8 @@ eina_bench_eina_rectangle_pool(int request)
    Eina_List *list = NULL;
    int i;
 
-   eina_list_init();
-   eina_rectangle_init();
+   eina_init();
+   eina_init();
 
    pool = eina_rectangle_pool_new(2048, 2048);
    if (!pool) return ;
@@ -63,8 +62,7 @@ eina_bench_eina_rectangle_pool(int request)
    eina_rectangle_pool_free(pool);
    eina_list_free(list);
 
-   eina_rectangle_shutdown();
-   eina_list_shutdown();
+   eina_shutdown();
 }
 
 void eina_bench_rectangle_pool(Eina_Benchmark *bench)
diff --git a/src/tests/eina_bench_sort.c b/src/tests/eina_bench_sort.c
index 6d4a113..bc6bc18 100644
--- a/src/tests/eina_bench_sort.c
+++ b/src/tests/eina_bench_sort.c
@@ -37,8 +37,7 @@
 #endif
 
 #include "eina_bench.h"
-#include "eina_list.h"
-#include "eina_convert.h"
+#include "Eina.h"
 
 static int
 _eina_cmp_str(const char *a, const char *b)
@@ -52,7 +51,7 @@ eina_bench_sort_eina(int request)
    Eina_List *list = NULL;
    int i;
 
-   eina_list_init();
+   eina_init();
 
    srand(time(NULL));
 
@@ -73,7 +72,7 @@ eina_bench_sort_eina(int request)
 	list = eina_list_remove_list(list, list);
      }
 
-   eina_list_shutdown();
+   eina_shutdown();
 }
 
 #ifdef EINA_BENCH_HAVE_EVAS
diff --git a/src/tests/eina_bench_stringshare.c b/src/tests/eina_bench_stringshare.c
index afdd501..092d807 100644
--- a/src/tests/eina_bench_stringshare.c
+++ b/src/tests/eina_bench_stringshare.c
@@ -47,7 +47,7 @@ eina_bench_stringshare_job(int request)
    unsigned int j;
    int i;
 
-   eina_stringshare_init();
+   eina_init();
 
    for (i = 0; i < request; ++i)
      {
@@ -68,7 +68,7 @@ eina_bench_stringshare_job(int request)
 	  tmp = eina_stringshare_add(build);
        }
 
-   eina_stringshare_shutdown();
+   eina_shutdown();
 }
 
 #ifdef EINA_BENCH_HAVE_GLIB
diff --git a/src/tests/eina_bench_stringshare_e17.c b/src/tests/eina_bench_stringshare_e17.c
index 06bfec0..d7146f4 100644
--- a/src/tests/eina_bench_stringshare_e17.c
+++ b/src/tests/eina_bench_stringshare_e17.c
@@ -36,8 +36,7 @@
 # include <Ecore_Data.h>
 #endif
 
-#include "eina_stringshare.h"
-#include "eina_counter.h"
+#include "Eina.h"
 
 #if EINA_ENABLE_BENCH_E17
 
@@ -55,10 +54,10 @@ struct _Eina_Stringshare_Test
 static const char *strings[30000];
 static Eina_Stringshare_Test eina_str = {
   "eina",
-  eina_stringshare_init,
+  eina_init,
   eina_stringshare_add,
   eina_stringshare_del,
-  eina_stringshare_shutdown
+  eina_shutdown
 };
 
 #ifdef EINA_BENCH_HAVE_EVAS
@@ -122,11 +121,11 @@ eina_bench_e17(void)
 #if EINA_ENABLE_BENCH_E17
    int i;
 
-   eina_counter_init();
+   eina_init();
 
    for (i = 0; str[i]; ++i)
      eina_bench_e17_stringshare(str[i]);
 
-   eina_counter_shutdown();
+   eina_shutdown();
 #endif
 }
diff --git a/src/tests/eina_suite.c b/src/tests/eina_suite.c
index 782c7fb..e753dae 100644
--- a/src/tests/eina_suite.c
+++ b/src/tests/eina_suite.c
@@ -21,7 +21,9 @@
 #endif
 
 #include "eina_suite.h"
-#include "eina_mempool.h"
+#include "Eina.h"
+#include <stdio.h>
+#include <string.h>
 
 typedef struct _Eina_Test_Case Eina_Test_Case;
 struct _Eina_Test_Case
@@ -33,6 +35,7 @@ struct _Eina_Test_Case
 static const Eina_Test_Case etc[] = {
   { "Array", eina_test_array },
   { "String Share", eina_test_stringshare },
+  { "Log", eina_test_log },
   { "Error", eina_test_error },
   { "Magic", eina_test_magic },
   { "Inlist", eina_test_inlist },
@@ -50,11 +53,34 @@ static const Eina_Test_Case etc[] = {
   { "Benchmark", eina_test_benchmark },
   { "Mempool", eina_test_mempool },
   { "Rectangle", eina_test_rectangle },
+  { "Matrix Sparse", eina_test_matrixsparse },
+  { "Eina Tiler", eina_test_tiler },
   { NULL, NULL }
 };
 
+static void
+_list_tests(void)
+{
+   const Eina_Test_Case *itr = etc;
+   fputs("Available Test Cases:\n", stderr);
+   for (; itr->test_case != NULL; itr++)
+     fprintf(stderr, "\t%s\n", itr->test_case);
+}
+
+static Eina_Bool
+_use_test(int argc, const char **argv, const char *test_case)
+{
+   if (argc < 1)
+     return 1;
+
+   for (; argc > 0; argc--, argv++)
+     if (strcmp(test_case, *argv) == 0)
+       return 1;
+   return 0;
+}
+
 Suite *
-eina_build_suite(void)
+eina_build_suite(int argc, const char **argv)
 {
    TCase *tc;
    Suite *s;
@@ -64,6 +90,7 @@ eina_build_suite(void)
 
    for (i = 0; etc[i].test_case != NULL; ++i)
      {
+	if (!_use_test(argc, argv, etc[i].test_case)) continue;
 	tc = tcase_create(etc[i].test_case);
 
 	etc[i].build(tc);
@@ -80,7 +107,7 @@ eina_build_suite(void)
 static Eina_Array *_modules;
 static void _mempool_init(void)
 {
-    eina_mempool_init();
+    eina_init();
     /* force modules to be loaded in case they are not installed */
     _modules = eina_module_list_get(NULL, PACKAGE_BUILD_DIR"/src/modules", 1, NULL, NULL);
     eina_module_list_load(_modules);
@@ -90,18 +117,33 @@ static void _mempool_shutdown(void)
 {
    eina_module_list_flush(_modules);
    /* TODO delete the list */
-   eina_mempool_shutdown();
+   eina_shutdown();
 }
 
 int
-main(void)
+main(int argc, char **argv)
 {
    Suite *s;
    SRunner *sr;
-   int failed_count;
-
-
-   s = eina_build_suite();
+   int i, failed_count;
+
+   for (i = 1; i < argc; i++)
+     if ((strcmp(argv[i], "-h") == 0) ||
+	 (strcmp(argv[i], "--help") == 0))
+       {
+	  fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n",
+		  argv[0]);
+	  _list_tests();
+	  return 0;
+       }
+     else if ((strcmp(argv[i], "-l") == 0) ||
+	      (strcmp(argv[i], "--list") == 0))
+       {
+	  _list_tests();
+	  return 0;
+       }
+
+   s = eina_build_suite(argc - 1, (const char **)argv + 1);
    sr = srunner_create(s);
 
    _mempool_init();
diff --git a/src/tests/eina_suite.h b/src/tests/eina_suite.h
index 719f4d9..a2ad389 100644
--- a/src/tests/eina_suite.h
+++ b/src/tests/eina_suite.h
@@ -23,6 +23,7 @@
 
 void eina_test_stringshare(TCase *tc);
 void eina_test_array(TCase *tc);
+void eina_test_log(TCase *tc);
 void eina_test_error(TCase *tc);
 void eina_test_magic(TCase *tc);
 void eina_test_inlist(TCase *tc);
@@ -40,5 +41,7 @@ void eina_test_file(TCase *tc);
 void eina_test_benchmark(TCase *tc);
 void eina_test_mempool(TCase *tc);
 void eina_test_rectangle(TCase *tc);
+void eina_test_matrixsparse(TCase *tc);
+void eina_test_tiler(TCase *tc);
 
 #endif /* EINA_SUITE_H_ */
diff --git a/src/tests/eina_test_accessor.c b/src/tests/eina_test_accessor.c
index 7df23c6..88b74ad 100644
--- a/src/tests/eina_test_accessor.c
+++ b/src/tests/eina_test_accessor.c
@@ -23,10 +23,7 @@
 #include <stdio.h>
 
 #include "eina_suite.h"
-#include "eina_array.h"
-#include "eina_inlist.h"
-#include "eina_list.h"
-#include "eina_private.h"
+#include "Eina.h"
 
 static Eina_Bool
 eina_accessor_check(__UNUSED__ const Eina_Array *array,
@@ -45,7 +42,7 @@ START_TEST(eina_accessor_array_simple)
    int *tmp;
    int i;
 
-   eina_array_init();
+   eina_init();
 
    ea = eina_array_new(11);
    fail_if(!ea);
@@ -76,7 +73,7 @@ START_TEST(eina_accessor_array_simple)
 
    eina_array_free(ea);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -187,7 +184,7 @@ START_TEST(eina_accessor_list_simple)
    int *j;
    int i = 0;
 
-   eina_list_init();
+   eina_init();
 
    list = eina_list_append(list, &data[0]);
    fail_if(list == NULL);
diff --git a/src/tests/eina_test_array.c b/src/tests/eina_test_array.c
index c8cd8bd..b3ad459 100644
--- a/src/tests/eina_test_array.c
+++ b/src/tests/eina_test_array.c
@@ -23,8 +23,7 @@
 #include <stdio.h>
 
 #include "eina_suite.h"
-#include "eina_array.h"
-#include "eina_convert.h"
+#include "Eina.h"
 
 START_TEST(eina_array_simple)
 {
@@ -33,7 +32,7 @@ START_TEST(eina_array_simple)
    Eina_Array_Iterator it;
    unsigned int i;
 
-   eina_array_init();
+   eina_init();
 
    ea = eina_array_new(11);
    fail_if(!ea);
@@ -66,7 +65,7 @@ START_TEST(eina_array_simple)
    eina_array_flush(ea);
    eina_array_free(ea);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -77,7 +76,7 @@ START_TEST(eina_array_static)
    Eina_Array_Iterator it;
    unsigned int i;
 
-   eina_array_init();
+   eina_init();
 
    eina_array_step_set(&sea, 10);
 
@@ -104,7 +103,7 @@ START_TEST(eina_array_static)
    eina_array_clean(&sea);
    eina_array_flush(&sea);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -127,7 +126,7 @@ START_TEST(eina_array_remove_stuff)
    Eina_Array_Iterator it;
    unsigned int i;
 
-   eina_array_init();
+   eina_init();
 
    ea = eina_array_new(64);
    fail_if(!ea);
@@ -177,7 +176,7 @@ START_TEST(eina_array_remove_stuff)
 
    eina_array_free(ea);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
diff --git a/src/tests/eina_test_convert.c b/src/tests/eina_test_convert.c
index 842aeea..cb13f19 100644
--- a/src/tests/eina_test_convert.c
+++ b/src/tests/eina_test_convert.c
@@ -25,8 +25,8 @@
 #include <math.h>
 #include <float.h>
 
-#include "eina_convert.h"
 #include "eina_suite.h"
+#include "Eina.h"
 
 START_TEST(eina_convert_simple)
 {
@@ -83,7 +83,7 @@ START_TEST(eina_convert_double)
    long long int m = 0;
    long e = 0;
 
-   eina_convert_init();
+   eina_init();
 
    _eina_convert_check(EET_TEST_DOUBLE0, 20);
    _eina_convert_check(-EET_TEST_DOUBLE0, 21);
@@ -96,7 +96,63 @@ START_TEST(eina_convert_double)
    fail_if(eina_convert_atod("0xjo", 8, &m, &e) != EINA_FALSE);
    fail_if(eina_convert_atod("0xp", 8, &m, &e) != EINA_FALSE);
 
-   eina_convert_shutdown();
+   eina_shutdown();
+}
+END_TEST
+
+static void
+_eina_convert_fp_check(double d, Eina_F32p32 fp, int length)
+{
+   char tmp1[128];
+   char tmp2[128];
+   Eina_F32p32 fpc;
+   double fpd;
+   int l1;
+   int l2;
+
+   l1 = eina_convert_dtoa(d, tmp1);
+   l2 = eina_convert_fptoa(fp, tmp2);
+/*    fprintf(stderr, "[%s](%i) vs [%s](%i)\n", tmp1, l1, tmp2, l2); */
+   fail_if(l1 != l2);
+   fail_if(length != l1);
+   fail_if(strcmp(tmp1, tmp2) != 0);
+
+   fail_if(!eina_convert_atofp(tmp2, l2, &fpc));
+/*    fprintf(stderr, "%016x vs %016x\n", fpc, fp); */
+   fail_if(fpc != fp);
+
+   fail_if(!eina_convert_atofp(tmp1, l1, &fpc));
+   fpd = eina_f32p32_double_to(fpc);
+/*    fprintf(stderr, "%0.16f vs %0.16f\n", fpd, d); */
+   fail_if(fabs(fpd - d) > DBL_MIN);
+
+   d = -d;
+   fp = -fp;
+
+   l1 = eina_convert_dtoa(d, tmp1);
+   l2 = eina_convert_fptoa(fp, tmp2);
+   fail_if(l1 != l2);
+   fail_if(length + 1 != l1);
+   fail_if(strcmp(tmp1, tmp2) != 0);
+
+   fail_if(!eina_convert_atofp(tmp2, l2, &fpc));
+/*    fprintf(stderr, "%016x vs %016x\n", fpc, fp); */
+   fail_if(fpc != fp);
+
+   fail_if(!eina_convert_atofp(tmp1, l1, &fpc));
+   fpd = eina_f32p32_double_to(fpc);
+/*    fprintf(stderr, "%0.16f vs %0.16f\n", fpd, d); */
+   fail_if(fabs(fpd - d) > DBL_MIN);
+}
+
+START_TEST(eina_convert_fp)
+{
+   _eina_convert_fp_check(1.0, 0x0000000100000000, 6);
+   _eina_convert_fp_check(0.5, 0x0000000080000000, 8);
+   _eina_convert_fp_check(0.625, 0x00000000a0000000, 8);
+   _eina_convert_fp_check(256.0, 0x0000010000000000, 6);
+   _eina_convert_fp_check(0.5, 0x0000000080000000, 8);
+   _eina_convert_fp_check(128.625, 0x00000080a0000000, 10);
 }
 END_TEST
 
@@ -105,4 +161,5 @@ eina_test_convert(TCase *tc)
 {
    tcase_add_test(tc, eina_convert_simple);
    tcase_add_test(tc, eina_convert_double);
+   tcase_add_test(tc, eina_convert_fp);
 }
diff --git a/src/tests/eina_test_counter.c b/src/tests/eina_test_counter.c
index b5aef0c..a40999e 100644
--- a/src/tests/eina_test_counter.c
+++ b/src/tests/eina_test_counter.c
@@ -23,21 +23,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "eina_counter.h"
 #include "eina_suite.h"
-
-START_TEST(eina_counter_init_shutdown)
-{
-   eina_counter_init();
-    eina_counter_init();
-    eina_counter_shutdown();
-    eina_counter_init();
-     eina_counter_init();
-     eina_counter_shutdown();
-    eina_counter_shutdown();
-   eina_counter_shutdown();
-}
-END_TEST
+#include "Eina.h"
+#include "eina_safety_checks.h"
 
 START_TEST(eina_counter_simple)
 {
@@ -45,7 +33,7 @@ START_TEST(eina_counter_simple)
    char *dump;
    int i;
 
-   eina_counter_init();
+   eina_init();
 
    cnt = eina_counter_new("eina_test");
    fail_if(!cnt);
@@ -53,14 +41,20 @@ START_TEST(eina_counter_simple)
    eina_counter_start(cnt);
 
    for (i = 0; i < 100000; ++i)
-     malloc(sizeof(long int));
+     {
+	void *tmp = malloc(sizeof(long int));
+	free(tmp);
+     }
 
    eina_counter_stop(cnt, i);
 
    eina_counter_start(cnt);
 
    for (i = 0; i < 200000; ++i)
-     malloc(sizeof(long int));
+     {
+	void *tmp = malloc(sizeof(long int));
+	free(tmp);
+     }
 
    eina_counter_stop(cnt, i);
 
@@ -73,16 +67,15 @@ START_TEST(eina_counter_simple)
 
    eina_counter_free(cnt);
 
-   eina_counter_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
 START_TEST(eina_counter_break)
 {
    Eina_Counter *cnt;
-   char *dump;
 
-   eina_counter_init();
+   eina_init();
 
    cnt = eina_counter_new("eina_test");
    fail_if(!cnt);
@@ -91,18 +84,24 @@ START_TEST(eina_counter_break)
 
    eina_counter_free(cnt);
 
-   dump = eina_counter_dump(NULL);
-   fail_if(dump);
+#ifdef EINA_SAFETY_CHECKS
+   {
+      char *dump;
 
-   free(dump);
+      fprintf(stderr, "you should have a safety check failure below:\n");
+      dump = eina_counter_dump(NULL);
+      fail_if(dump);
+      fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED);
+      free(dump);
+   }
+#endif
 
-   eina_counter_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
 void eina_test_counter(TCase *tc)
 {
-   tcase_add_test(tc, eina_counter_init_shutdown);
    tcase_add_test(tc, eina_counter_simple);
    tcase_add_test(tc, eina_counter_break);
 }
diff --git a/src/tests/eina_test_error.c b/src/tests/eina_test_error.c
index 233edfc..1cd0435 100644
--- a/src/tests/eina_test_error.c
+++ b/src/tests/eina_test_error.c
@@ -25,20 +25,7 @@
 #include <string.h>
 
 #include "eina_suite.h"
-#include "eina_error.h"
-
-START_TEST(eina_error_init_shutdown)
-{
-   eina_error_init();
-    eina_error_init();
-    eina_error_shutdown();
-    eina_error_init();
-     eina_error_init();
-     eina_error_shutdown();
-    eina_error_shutdown();
-   eina_error_shutdown();
-}
-END_TEST
+#include "Eina.h"
 
 #define TEST_TEXT "The big test\n"
 
@@ -48,7 +35,7 @@ START_TEST(eina_error_errno)
 
    setenv("EINA_ERROR_LEVEL", "1", 0);
 
-   eina_error_init();
+   eina_init();
 
    test = eina_error_msg_register(TEST_TEXT);
    fail_if(!eina_error_msg_get(test));
@@ -57,30 +44,12 @@ START_TEST(eina_error_errno)
    eina_error_set(test);
    fail_if(eina_error_get() != test);
 
-   eina_error_shutdown();
-}
-END_TEST
-
-START_TEST(eina_error_macro)
-{
-   eina_error_init();
-
-   eina_error_log_level_set(EINA_ERROR_LEVEL_DBG);
-   eina_error_print_cb_set(eina_error_print_cb_file, stderr);
-
-   EINA_ERROR_PERR("An error\n");
-   EINA_ERROR_PINFO("An info\n");
-   EINA_ERROR_PWARN("A warning\n");
-   EINA_ERROR_PDBG("A debug\n");
-
-   eina_error_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
 void
 eina_test_error(TCase *tc)
 {
-   tcase_add_test(tc, eina_error_init_shutdown);
    tcase_add_test(tc, eina_error_errno);
-   tcase_add_test(tc, eina_error_macro);
 }
diff --git a/src/tests/eina_test_file.c b/src/tests/eina_test_file.c
index 72f61b1..d05a095 100644
--- a/src/tests/eina_test_file.c
+++ b/src/tests/eina_test_file.c
@@ -21,19 +21,25 @@
 #endif
 
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 
 #include "eina_suite.h"
-#include "eina_file.h"
+#include "Eina.h"
+#include "eina_safety_checks.h"
 
 START_TEST(eina_file_split_simple)
 {
    Eina_Array *ea;
 
-   eina_array_init();
+   eina_init();
 
+#ifdef EINA_SAFETY_CHECKS
+   fprintf(stderr, "you should have a safety check failure below:\n");
    ea = eina_file_split(NULL);
    fail_if(ea);
+   fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED);
+#endif
 
    ea = eina_file_split(strdup("/this/is/a/small/test"));
 
@@ -60,7 +66,7 @@ START_TEST(eina_file_split_simple)
 
    eina_array_free(ea);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
diff --git a/src/tests/eina_test_hash.c b/src/tests/eina_test_hash.c
index b75137c..6c82bd1 100644
--- a/src/tests/eina_test_hash.c
+++ b/src/tests/eina_test_hash.c
@@ -24,22 +24,8 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "eina_hash.h"
-#include "eina_convert.h"
 #include "eina_suite.h"
-
-START_TEST(eina_hash_init_shutdown)
-{
-   eina_hash_init();
-    eina_hash_init();
-    eina_hash_shutdown();
-    eina_hash_init();
-     eina_hash_init();
-     eina_hash_shutdown();
-    eina_hash_shutdown();
-   eina_hash_shutdown();
-}
-END_TEST
+#include "Eina.h"
 
 static Eina_Bool
 eina_foreach_check(__UNUSED__ const Eina_Hash *hash, const void *key, void *data, __UNUSED__ void *fdata)
@@ -62,7 +48,7 @@ START_TEST(eina_hash_simple)
    int array[] = { 1, 42, 4, 5, 6 };
 
    /* As mempool is already initialized and it use hash, we should have 2 init. */
-   fail_if(eina_hash_init() != 2);
+   fail_if(eina_init() != 2);
 
    hash = eina_hash_string_superfast_new(NULL);
    fail_if(hash == NULL);
@@ -108,8 +94,8 @@ START_TEST(eina_hash_simple)
 
    eina_hash_free(hash);
 
-   /* Same comment as eina_hash_init */
-   fail_if(eina_hash_shutdown() != 1);
+   /* Same comment as eina_init */
+   fail_if(eina_shutdown() != 1);
 }
 END_TEST
 
@@ -118,7 +104,7 @@ START_TEST(eina_hash_extended)
    Eina_Hash *hash = NULL;
    int i;
 
-   fail_if(eina_hash_init() != 2);
+   fail_if(eina_init() != 2);
 
    hash = eina_hash_string_djb2_new(NULL);
    fail_if(hash == NULL);
@@ -137,7 +123,7 @@ START_TEST(eina_hash_extended)
 
    eina_hash_free(hash);
 
-   fail_if(eina_hash_shutdown() != 1);
+   fail_if(eina_shutdown() != 1);
 }
 END_TEST
 
@@ -147,7 +133,7 @@ START_TEST(eina_hash_double_item)
    int i[] = { 7, 7 };
    int *test;
 
-   fail_if(eina_hash_init() != 2);
+   fail_if(eina_init() != 2);
 
    hash = eina_hash_string_superfast_new(NULL);
    fail_if(hash == NULL);
@@ -161,13 +147,12 @@ START_TEST(eina_hash_double_item)
 
    eina_hash_free(hash);
 
-   fail_if(eina_hash_shutdown() != 1);
+   fail_if(eina_shutdown() != 1);
 }
 END_TEST
 
 void eina_test_hash(TCase *tc)
 {
-   tcase_add_test(tc, eina_hash_init_shutdown);
    tcase_add_test(tc, eina_hash_simple);
    tcase_add_test(tc, eina_hash_extended);
    tcase_add_test(tc, eina_hash_double_item);
diff --git a/src/tests/eina_test_inlist.c b/src/tests/eina_test_inlist.c
index d16c4c9..dd3eea5 100644
--- a/src/tests/eina_test_inlist.c
+++ b/src/tests/eina_test_inlist.c
@@ -21,15 +21,17 @@
 #endif
 
 #include <stdlib.h>
+#include <stdio.h>
 
 #include "eina_suite.h"
-#include "eina_inlist.h"
+#include "Eina.h"
+#include "eina_safety_checks.h"
 
 typedef struct _Eina_Test_Inlist Eina_Test_Inlist;
 struct _Eina_Test_Inlist
 {
-   EINA_INLIST;
    int i;
+   EINA_INLIST;
 };
 
 static Eina_Test_Inlist*
@@ -61,13 +63,13 @@ START_TEST(eina_inlist_simple)
    tmp = _eina_test_inlist_build(1664);
    lst = eina_inlist_append_relative(lst, EINA_INLIST_GET(tmp), lst);
    fail_if(!lst);
-   fail_if(((Eina_Test_Inlist*)lst)->i != 42);
+   fail_if(EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist)->i != 42);
 
    prev = tmp;
    tmp = _eina_test_inlist_build(3227);
    lst = eina_inlist_prepend_relative(lst, EINA_INLIST_GET(tmp), EINA_INLIST_GET(prev));
    fail_if(!lst);
-   fail_if(((Eina_Test_Inlist*)lst)->i != 42);
+   fail_if(EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist)->i != 42);
 
    lst = eina_inlist_remove(lst, EINA_INLIST_GET(tmp));
 
@@ -96,19 +98,30 @@ START_TEST(eina_inlist_simple)
 	++i;
      }
 
-   eina_inlist_remove(NULL, EINA_INLIST_GET(tmp));
+#ifdef EINA_SAFETY_CHECKS
+   fprintf(stderr, "you should have a safety check failure below:\n");
+   {
+      Eina_Inlist *tmp2 = eina_inlist_remove(NULL, EINA_INLIST_GET(tmp));
+      fail_if(tmp2 != NULL);
+      fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED);
+   }
+
+   fprintf(stderr, "you should have a safety check failure below:\n");
    lst = eina_inlist_remove(lst, NULL);
+   fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED);
+#endif
 
-   tmp = (Eina_Test_Inlist*) lst;
+   tmp = EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist);
    lst = eina_inlist_demote(lst, lst);
-   fail_if(lst == (Eina_Inlist*) tmp);
+   fail_if(EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist) == tmp);
 
    lst = eina_inlist_promote(lst, EINA_INLIST_GET(tmp));
-   fail_if(lst != (Eina_Inlist*) tmp);
+   fail_if(lst != EINA_INLIST_GET(tmp));
 
-   tmp = (Eina_Test_Inlist*) eina_inlist_find(lst, EINA_INLIST_GET(prev));
+   tmp = EINA_INLIST_CONTAINER_GET(eina_inlist_find(lst, EINA_INLIST_GET(prev)), Eina_Test_Inlist);
    lst = eina_inlist_remove(lst, EINA_INLIST_GET(tmp));
-   tmp = (Eina_Test_Inlist*) eina_inlist_find(lst, EINA_INLIST_GET(tmp));
+   prev = eina_inlist_find(lst, EINA_INLIST_GET(tmp));
+   tmp = prev ? EINA_INLIST_CONTAINER_GET(prev, Eina_Test_Inlist) : NULL;
    fail_if(tmp != NULL);
 
    while (lst)
diff --git a/src/tests/eina_test_iterator.c b/src/tests/eina_test_iterator.c
index 2a511f5..cc77f07 100644
--- a/src/tests/eina_test_iterator.c
+++ b/src/tests/eina_test_iterator.c
@@ -23,12 +23,7 @@
 #include <stdio.h>
 
 #include "eina_suite.h"
-#include "eina_array.h"
-#include "eina_hash.h"
-#include "eina_inlist.h"
-#include "eina_list.h"
-#include "eina_rbtree.h"
-#include "eina_private.h"
+#include "Eina.h"
 
 static Eina_Bool
 eina_iterator_array_check(__UNUSED__ const Eina_Array *array,
@@ -47,7 +42,7 @@ START_TEST(eina_iterator_array_simple)
    int *tmp;
    int i;
 
-   eina_array_init();
+   eina_init();
 
    ea = eina_array_new(11);
    fail_if(!ea);
@@ -75,7 +70,7 @@ START_TEST(eina_iterator_array_simple)
 
    eina_array_free(ea);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -110,7 +105,7 @@ START_TEST(eina_iterator_hash_simple)
    Eina_Hash *hash;
    int array[] = { 1, 42, 7, 8, 6 };
 
-   eina_hash_init();
+   eina_init();
 
    hash = eina_hash_string_superfast_new(NULL);
    fail_if(hash == NULL);
@@ -135,7 +130,7 @@ START_TEST(eina_iterator_hash_simple)
 
    eina_hash_free(hash);
 
-   eina_hash_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -240,7 +235,7 @@ START_TEST(eina_iterator_list_simple)
    int data[] = { 6, 9, 42, 1, 7, 1337, 81, 1664 };
    int i = 0;
 
-   eina_list_init();
+   eina_init();
 
    list = eina_list_append(list, &data[0]);
    fail_if(list == NULL);
diff --git a/src/tests/eina_test_lalloc.c b/src/tests/eina_test_lalloc.c
index 9248fe0..6327f5f 100644
--- a/src/tests/eina_test_lalloc.c
+++ b/src/tests/eina_test_lalloc.c
@@ -24,7 +24,7 @@
 #include <stdio.h>
 
 #include "eina_suite.h"
-#include "eina_lalloc.h"
+#include "Eina.h"
 
 typedef struct _Eina_Lazy_Allocator_Test Eina_Lazy_Allocator_Test;
 struct _Eina_Lazy_Allocator_Test
diff --git a/src/tests/eina_test_list.c b/src/tests/eina_test_list.c
index 190ef8a..ac1cbbf 100644
--- a/src/tests/eina_test_list.c
+++ b/src/tests/eina_test_list.c
@@ -22,8 +22,29 @@
 
 #include <stdio.h>
 
-#include "eina_list.h"
 #include "eina_suite.h"
+#include "Eina.h"
+
+static Eina_Bool eina_list_sorted_check(const Eina_List *list)
+{
+   const Eina_List *n;
+   void *d;
+   int last = *(int *)list->data;
+
+   EINA_LIST_FOREACH(list->next, n, d)
+     {
+	int current = *(int *)d;
+	if (last > current)
+	  {
+	     fprintf(stderr, "list is not sorted: last=%d, current=%d\n",
+		     last, current);
+	     return 0;
+	  }
+	last = current;
+     }
+
+   return 1;
+}
 
 static int eina_int_cmp(const void *a, const void *b)
 {
@@ -44,7 +65,7 @@ START_TEST(eina_test_simple)
    int result[] = { 81, 9, 9, 7, 1 };
    int i;
 
-   eina_list_init();
+   eina_init();
 
    list = eina_list_append(list, &data[0]);
    fail_if(list == NULL);
@@ -184,7 +205,7 @@ START_TEST(eina_test_simple)
    list = eina_list_free(list);
    fail_if(list != NULL);
 
-   eina_list_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -196,19 +217,47 @@ START_TEST(eina_test_merge)
    Eina_List *l4;
    Eina_List *l5;
    int data[] = { 6, 9, 42, 1, 7, 9, 81, 1664, 1337, 3, 21, 10, 0, 5, 2008 };
-   int *prev;
-   int *current;
    int i;
 
-   eina_list_init();
+   eina_init();
 
    l1 = eina_list_append(NULL, &data[0]);
    l1 = eina_list_append(l1, &data[1]);
    l1 = eina_list_append(l1, &data[2]);
+   l1 = eina_list_append(l1, &data[3]);
+   fail_if(l1 == NULL);
+
+   l2 = eina_list_append(NULL, &data[4]);
+   l2 = eina_list_append(l2, &data[5]);
+   fail_if(l2 == NULL);
 
-   l2 = eina_list_append(NULL, &data[3]);
+   l1 = eina_list_merge(l1, l2);
+   fail_if(l1 == NULL);
+   fail_if(eina_list_count(l1) != 6);
+   for (i = 0, l2 = l1; ((l2 != NULL) && (i < 6)); ++i, l2 = l2->next)
+     fail_if(l2->data != &data[i]);
+   fail_if(i != 6);
+   fail_if(l2 != NULL);
+
+   eina_list_free(l1);
+
+   l1 = eina_list_append(NULL, &data[0]);
+   l1 = eina_list_append(l1, &data[1]);
+   fail_if(l1 == NULL);
+
+   l2 = eina_list_append(NULL, &data[2]);
+   l2 = eina_list_append(l2, &data[3]);
    l2 = eina_list_append(l2, &data[4]);
    l2 = eina_list_append(l2, &data[5]);
+   fail_if(l2 == NULL);
+
+   l1 = eina_list_merge(l1, l2);
+   fail_if(l1 == NULL);
+   fail_if(eina_list_count(l1) != 6);
+   for (i = 0, l2 = l1; ((l2 != NULL) && (i < 6)); ++i, l2 = l2->next)
+     fail_if(l2->data != &data[i]);
+   fail_if(i != 6);
+   fail_if(l2 != NULL);
 
    l3 = eina_list_append(NULL, &data[6]);
    l3 = eina_list_append(l3, &data[7]);
@@ -222,12 +271,6 @@ START_TEST(eina_test_merge)
    l5 = eina_list_append(l5, &data[13]);
    l5 = eina_list_append(l5, &data[14]);
 
-   l1 = eina_list_merge(l1, l2);
-   fail_if(l1 == NULL);
-   fail_if(eina_list_count(l1) != 6);
-   for (i = 0; i < 6; ++i)
-     fail_if(eina_list_nth(l1, i) != &data[i]);
-
    l1 = eina_list_sort(l1, -1, eina_int_cmp);
    l3 = eina_list_sort(l3, -1, eina_int_cmp);
    l4 = eina_list_sort(l4, -1, eina_int_cmp);
@@ -245,15 +288,58 @@ START_TEST(eina_test_merge)
    fail_if(l1 == NULL);
    fail_if(eina_list_count(l1) != 15);
 
-   prev = eina_list_data_get(l1);
-   for (i = 1; i < eina_list_count(l1); ++i)
-     {
-	current = eina_list_nth(l1, i);
-	fail_if (*prev > *current);
-	prev = current;
-     }
+   fail_if(!eina_list_sorted_check(l1));
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_test_sorted_insert)
+{
+   const int data[] = {6, 9, 42, 1, 7, 9, 81, 1664, 1337, 3, 21, 10, 0, 5, 2008};
+   const int data2[] = {5, 0, 3, 2, 1, 0, 1, 2, 3, 4, 5};
+   int i, count;
+   Eina_List *l1, *l2, *itr;
+   void *d;
+
+   eina_init();
+
+   count = sizeof(data)/sizeof(data[0]);
+
+   l1 = NULL;
+   for (i = 0; i < count; i++)
+     l1 = eina_list_sorted_insert(l1, eina_int_cmp, data + i);
+
+   fail_if(l1 == NULL);
+   fail_if(!eina_list_sorted_check(l1));
+
+   l2 = NULL;
+   EINA_LIST_FOREACH(l1, itr, d)
+     l2 = eina_list_sorted_insert(l2, eina_int_cmp, d);
+
+   fail_if(l2 == NULL);
+   fail_if(!eina_list_sorted_check(l2));
+   eina_list_free(l2);
+
+   l2 = NULL;
+   EINA_LIST_REVERSE_FOREACH(l1, itr, d)
+     l2 = eina_list_sorted_insert(l2, eina_int_cmp, d);
+
+   fail_if(l2 == NULL);
+   fail_if(!eina_list_sorted_check(l2));
+   eina_list_free(l2);
+   eina_list_free(l1);
+
+   count = sizeof(data2)/sizeof(data2[0]);
+   l1 = NULL;
+   for (i = 0; i < count; i++)
+     l1 = eina_list_sorted_insert(l1, eina_int_cmp, data2 + i);
+
+   fail_if(l1 == NULL);
+   fail_if(!eina_list_sorted_check(l1));
+   eina_list_free(l1);
 
-   eina_list_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -262,4 +348,5 @@ eina_test_list(TCase *tc)
 {
    tcase_add_test(tc, eina_test_simple);
    tcase_add_test(tc, eina_test_merge);
+   tcase_add_test(tc, eina_test_sorted_insert);
 }
diff --git a/src/tests/eina_test_log.c b/src/tests/eina_test_log.c
new file mode 100644
index 0000000..1b4a4f0
--- /dev/null
+++ b/src/tests/eina_test_log.c
@@ -0,0 +1,145 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2008 Cedric Bail
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "eina_suite.h"
+#include "Eina.h"
+
+START_TEST(eina_log_macro)
+{
+   fail_if(!eina_init());
+
+   eina_log_level_set(EINA_LOG_LEVEL_DBG);
+   eina_log_print_cb_set(eina_log_print_cb_file, stderr);
+
+   EINA_LOG_CRIT("Critical message\n");
+   EINA_LOG_ERR("An error\n");
+   EINA_LOG_INFO("An info\n");
+   EINA_LOG_WARN("A warning\n");
+   EINA_LOG_DBG("A debug\n");
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_log_domains_macros)
+{
+   fail_if(!eina_init());
+
+   int d = eina_log_domain_register("MyDomain", EINA_COLOR_GREEN);
+   fail_if(d < 0);
+
+   EINA_LOG_DOM_CRIT(d, "A critical message\n");
+   EINA_LOG_DOM_ERR(d, "An error\n");
+   EINA_LOG_DOM_WARN(d, "A warning\n");
+   EINA_LOG_DOM_DBG(d, "A debug\n");
+   EINA_LOG_DOM_INFO(d, "An info\n");
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_log_domains_registry)
+{
+   fail_if(!eina_init());
+
+   int i;
+   int d[50];
+
+   for (i = 0; i < 50; i++)
+     {
+	d[i] = eina_log_domain_register("Test", EINA_COLOR_GREEN);
+	fail_if(d[i] < 0);
+     }
+
+   for (i = 0; i < 50; i++)
+      eina_log_domain_unregister(d[i]);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_log_domains_slot_reuse)
+{
+   fail_if(!eina_init());
+
+   // Create 9 domains
+   int idx[9];
+   int i;
+
+   for (i = 0; i < 9; i++)
+     {
+	idx[i] = eina_log_domain_register("Test1", EINA_COLOR_GREEN);
+	fail_if(idx[i] < 0);
+     }
+
+   // Slot 0 by default contains the global logger. The above code created
+   // domains for slots indexes from 1 to 9.
+   //
+   // The global logger allocated the first 8 initial slots. The 8th domain
+   // registered on the for loop will create 8 more slots.
+   //
+   // Test will just unregister a domain between 1 and 9 and assure that a new
+   // domain register will be placed on the available slot and not at the end.
+
+   int removed = idx[5];
+   eina_log_domain_unregister(removed);
+
+   int new = eina_log_domain_register("Test Slot", EINA_COLOR_GREEN);
+
+   // Check for slot reuse
+   fail_if(new != removed);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_log_level_indexes)
+{
+   fail_if(!eina_init());
+
+   int d = eina_log_domain_register("Levels", EINA_COLOR_GREEN);
+   fail_if(d < 0);
+
+   // Displayed unless user sets level lower than -1
+   EINA_LOG(d, -1, "Negative index message\n");
+
+   // Displayed only if user sets level 6 or higher
+   EINA_LOG(d, 6, "Higher level debug\n");
+
+   eina_shutdown();
+}
+END_TEST
+
+
+void
+eina_test_log(TCase *tc)
+{
+   tcase_add_test(tc, eina_log_macro);
+   tcase_add_test(tc, eina_log_domains_macros);
+   tcase_add_test(tc, eina_log_domains_registry);
+   tcase_add_test(tc, eina_log_domains_slot_reuse);
+   tcase_add_test(tc, eina_log_level_indexes);
+}
diff --git a/src/tests/eina_test_magic.c b/src/tests/eina_test_magic.c
index 34551b7..25dd13c 100644
--- a/src/tests/eina_test_magic.c
+++ b/src/tests/eina_test_magic.c
@@ -21,25 +21,14 @@
 #endif
 
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 
 #define EINA_MAGIC_DEBUG
 
 #include "eina_suite.h"
-#include "eina_magic.h"
-
-START_TEST(eina_magic_string_init_shutdown)
-{
-   eina_magic_string_init();
-    eina_magic_string_init();
-    eina_magic_string_shutdown();
-    eina_magic_string_init();
-     eina_magic_string_init();
-     eina_magic_string_shutdown();
-    eina_magic_string_shutdown();
-   eina_magic_string_shutdown();
-}
-END_TEST
+#include "Eina.h"
+#include "eina_safety_checks.h"
 
 #define EINA_MAGIC_TEST 0x7781fee7
 #define EINA_MAGIC_TEST2 0x42241664
@@ -55,17 +44,28 @@ START_TEST(eina_magic_simple)
 {
    Eina_Magic_Struct *ems = NULL;
 
-   eina_magic_string_init();
+   eina_init();
 
    eina_magic_string_set(EINA_MAGIC_TEST, EINA_MAGIC_STRING);
+
+#ifdef EINA_SAFETY_CHECKS
+   fprintf(stderr, "you should have a safety check failure below:\n");
    eina_magic_string_set(EINA_MAGIC_TEST2, NULL);
+   fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED);
+
+   fprintf(stderr, "you should have a safety check failure below:\n");
    eina_magic_string_set(EINA_MAGIC_TEST2, NULL);
+   fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED);
+#endif
+
    eina_magic_string_set(EINA_MAGIC_TEST2, EINA_MAGIC_STRING);
 
    fail_if(eina_magic_string_get(EINA_MAGIC_TEST) == NULL);
    fail_if(strcmp(eina_magic_string_get(EINA_MAGIC_TEST), EINA_MAGIC_STRING) != 0);
 
+#ifdef EINA_MAGIC_DEBUG
    fail_if(EINA_MAGIC_CHECK(ems, EINA_MAGIC_TEST));
+   fprintf(stderr, "you should see 'Input handle pointer is NULL' below\n");
    EINA_MAGIC_FAIL(ems, EINA_MAGIC_TEST);
 
    ems = malloc(sizeof (Eina_Magic_Struct));
@@ -75,18 +75,20 @@ START_TEST(eina_magic_simple)
    fail_if(!EINA_MAGIC_CHECK(ems, EINA_MAGIC_TEST));
 
    EINA_MAGIC_SET(ems, EINA_MAGIC_NONE);
+   fprintf(stderr, "you should see 'Input handle has already been freed' below\n");
    EINA_MAGIC_FAIL(ems, EINA_MAGIC_TEST);
 
    EINA_MAGIC_SET(ems, 42424242);
+   fprintf(stderr, "you should see 'Input handle is wrong type' below\n");
    EINA_MAGIC_FAIL(ems, EINA_MAGIC_TEST);
+#endif
 
-   eina_magic_string_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
 void eina_test_magic(TCase *tc)
 {
-   tcase_add_test(tc, eina_magic_string_init_shutdown);
    tcase_add_test(tc, eina_magic_simple);
 }
 
diff --git a/src/tests/eina_test_main.c b/src/tests/eina_test_main.c
index a3392aa..9cf38cd 100644
--- a/src/tests/eina_test_main.c
+++ b/src/tests/eina_test_main.c
@@ -22,13 +22,13 @@
 
 #include <stdio.h>
 
-#include "Eina.h"
 #include "eina_suite.h"
+#include "Eina.h"
 
 START_TEST(eina_simple)
 {
-   fail_if(eina_init() != 1);
-   fail_if(eina_shutdown() != 0);
+   fail_if(eina_init() != 2); /* one init by test suite */
+   fail_if(eina_shutdown() != 1);
 }
 END_TEST
 
diff --git a/src/tests/eina_test_matrixsparse.c b/src/tests/eina_test_matrixsparse.c
new file mode 100644
index 0000000..859e690
--- /dev/null
+++ b/src/tests/eina_test_matrixsparse.c
@@ -0,0 +1,477 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include "eina_suite.h"
+#include "Eina.h"
+
+#define MAX_ROWS 10
+#define MAX_COLS 10
+
+static void eina_matrixsparse_free_cell_cb(void *user_data __UNUSED__, void *cell_data __UNUSED__)
+{
+}
+
+static void matrixsparse_initialize(Eina_Matrixsparse *matrix, long data[MAX_ROWS][MAX_COLS], unsigned long nrows, unsigned long ncols)
+{
+   unsigned long i, j;
+   Eina_Bool r;
+
+   for (i = 0; i < nrows; i++)
+     for (j = 0; j < ncols; j++)
+       if (data[i][j] != 0)
+	 {
+	    r = eina_matrixsparse_data_idx_set(matrix, i, j, &data[i][j]);
+	    fail_if(r == EINA_FALSE);
+	 }
+}
+
+static void matrixsparse_check(Eina_Matrixsparse *matrix, long data[MAX_ROWS][MAX_COLS], unsigned long nrows __UNUSED__, unsigned long ncols __UNUSED__)
+{
+   unsigned long i, j;
+   long *test1;
+
+   for (i = 0; i < MAX_ROWS; i++)
+     for (j = 0; j < MAX_COLS; j++)
+       {
+	  if (data[i][j] != 0)
+	    {
+	       test1 = eina_matrixsparse_data_idx_get(matrix, i, j);
+	       fail_if(test1 == NULL || *test1 != data[i][j]);
+	    }
+	  else
+	    {
+	       test1 = eina_matrixsparse_data_idx_get(matrix, i, j);
+	       fail_if(test1 != NULL);
+	    }
+       }
+}
+
+START_TEST(eina_test_simple)
+{
+   Eina_Matrixsparse *matrix = NULL;
+   Eina_Matrixsparse_Cell *cell = NULL;
+   Eina_Bool r;
+   long *test1, value, value2, value3, value4;
+   unsigned long i, j;
+   unsigned long row, col;
+
+   long data[MAX_ROWS][MAX_COLS];
+
+   for (i = 0; i < MAX_ROWS; i++)
+     for (j = 0; j < MAX_COLS; j++)
+       data[i][j] = 0;
+
+   data[0][3] = 3;
+   data[1][3] = 13;
+   data[1][6] = 16;
+   data[1][9] = 19;
+   data[1][8] = 18;
+   data[1][7] = 17;
+   data[2][8] = 28;
+   data[2][7] = 27;
+   data[2][6] = 26;
+   data[3][5] = 35;
+   data[3][6] = 36;
+   data[3][7] = 37;
+   data[3][9] = 39;
+   data[3][0] = 30;
+   data[4][6] = 46;
+   data[4][8] = 48;
+   data[4][2] = 42;
+   data[4][3] = 43;
+   data[4][7] = 47;
+   data[5][3] = 53;
+   data[6][3] = 63;
+   data[6][4] = 64;
+   data[6][6] = 66;
+   data[7][3] = 73;
+   data[7][7] = 77;
+   data[8][8] = 88;
+
+   value = -1;
+   value2 = -2;
+   value3 = -3;
+   value4 = -4;
+
+   eina_init();
+
+   matrix = eina_matrixsparse_new(MAX_ROWS, MAX_COLS,
+				  eina_matrixsparse_free_cell_cb, data);
+   fail_if(matrix == NULL);
+
+   r = eina_matrixsparse_cell_idx_get(matrix, 3, 5, &cell);
+   fail_if(r == EINA_FALSE);
+   fail_if(cell != NULL);
+
+   matrixsparse_initialize(matrix, data, MAX_ROWS, MAX_COLS);
+
+   /* data fetching */
+   test1 = eina_matrixsparse_data_idx_get(matrix, 3, 0);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != data[3][0]);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 3, 5);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != data[3][5]);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 3, 6);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != data[3][6]);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 3, 1);
+   fail_if(test1 != NULL);
+
+   r = eina_matrixsparse_cell_idx_get(matrix, 3, 5, &cell);
+   fail_if(r == EINA_FALSE);
+   fail_if(cell == NULL);
+
+   test1 = eina_matrixsparse_cell_data_get(cell);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != data[3][5]);
+
+   r = eina_matrixsparse_cell_position_get(cell, &row, &col);
+   fail_if(r == EINA_FALSE);
+   fail_if(row != 3 || col != 5);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 4, 3);
+   fail_if(*test1 != data[4][3]);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 1, 3);
+   fail_if(*test1 != data[1][3]);
+
+   /* data changing */
+   r = eina_matrixsparse_data_idx_set(matrix, 1, 9, &data[1][9]);
+   fail_if(r == EINA_FALSE);
+
+   r = eina_matrixsparse_data_idx_replace(matrix, 4, 3, &value, (void**)&test1);
+   fail_if(r == EINA_FALSE);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != data[4][3]);
+   data[4][3] = value;
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 4, 3);
+   fail_if(test1 == NULL || *test1 != value);
+
+   r = eina_matrixsparse_cell_data_replace(cell, &value2, (void**)&test1);
+   fail_if(r == EINA_FALSE);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != data[3][5]);
+   data[3][5] = value2;
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 3, 5);
+   fail_if(test1 == NULL);
+   fail_if(*test1 != value2);
+
+   r = eina_matrixsparse_cell_idx_get(matrix, 4, 2, &cell);
+   fail_if(r == EINA_FALSE || cell == NULL);
+
+   r = eina_matrixsparse_cell_data_set(cell, &value3);
+   fail_if(r == EINA_FALSE);
+   data[4][2] = value3;
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 4, 2);
+   fail_if(test1 == NULL || *test1 != value3);
+
+   r = eina_matrixsparse_data_idx_replace(matrix, 6, 5, &value4, (void**)&test1);
+   fail_if(r == EINA_FALSE || test1 != NULL);
+   data[6][5] = value4;
+
+
+   /* cell deletion */
+   r = eina_matrixsparse_row_idx_clear(matrix, 4);
+   fail_if(r == EINA_FALSE);
+   data[4][6] = 0;
+   data[4][8] = 0;
+   data[4][2] = 0;
+   data[4][3] = 0;
+   data[4][7] = 0;
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 4, 3);
+   fail_if(test1 != NULL);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 4, 8);
+   fail_if(test1 != NULL);
+
+   test1 = eina_matrixsparse_data_idx_get(matrix, 5, 3);
+   fail_if(*test1 != data[5][3]);
+
+   r = eina_matrixsparse_column_idx_clear(matrix, 3);
+   fail_if(r != EINA_TRUE);
+   data[0][3] = 0;
+   data[1][3] = 0;
+   data[4][3] = 0;
+   data[5][3] = 0;
+   data[6][3] = 0;
+   data[7][3] = 0;
+
+   r = eina_matrixsparse_cell_idx_clear(matrix, 3, 5);
+   fail_if(r != EINA_TRUE);
+   data[3][5] = 0;
+
+   r = eina_matrixsparse_cell_idx_clear(matrix, 3, 9);
+   fail_if(r != EINA_TRUE);
+   data[3][9] = 0;
+
+   r = eina_matrixsparse_cell_idx_clear(matrix, 4, 3);
+   fail_if(r != EINA_TRUE);
+   data[4][3] = 0;
+
+   r = eina_matrixsparse_cell_idx_get(matrix, 3, 7, &cell);
+   fail_if(r == EINA_FALSE);
+   fail_if(cell == NULL);
+
+   r = eina_matrixsparse_cell_clear(cell);
+   fail_if(r == EINA_FALSE);
+   data[3][7] = 0;
+
+   r = eina_matrixsparse_cell_idx_get(matrix, 2, 7, &cell);
+   fail_if(r == EINA_FALSE);
+
+   r = eina_matrixsparse_cell_idx_clear(matrix, 2, 8);
+   fail_if(r == EINA_FALSE);
+   data[2][8] = 0;
+
+   r = eina_matrixsparse_cell_idx_clear(matrix, 2, 7);
+   fail_if(r == EINA_FALSE);
+   data[2][7] = 0;
+
+   r = eina_matrixsparse_cell_idx_get(matrix, 7, 7, &cell);
+   fail_if(r == EINA_FALSE);
+
+   r = eina_matrixsparse_row_idx_clear(matrix, 8);
+   fail_if(r == EINA_FALSE);
+   data[8][8] = 0;
+
+   r = eina_matrixsparse_row_idx_clear(matrix, 7);
+   fail_if(r == EINA_FALSE);
+   data[7][3] = 0;
+   data[7][7] = 0;
+
+   matrixsparse_check(matrix, data, MAX_ROWS, MAX_COLS);
+   eina_matrixsparse_free(matrix);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_test_resize)
+{
+   Eina_Matrixsparse *matrix = NULL;
+   Eina_Bool r;
+   unsigned long i, j;
+   unsigned long nrows, ncols;
+
+   long data[MAX_ROWS][MAX_COLS];
+
+   for (i = 0; i < MAX_ROWS; i++)
+     for (j = 0; j < MAX_COLS; j++)
+       data[i][j] = 0;
+
+   eina_init();
+
+   matrix = eina_matrixsparse_new(MAX_ROWS, MAX_COLS,
+				  eina_matrixsparse_free_cell_cb, data);
+   fail_if(matrix == NULL);
+
+   /* cell insertion */
+   data[0][5] = 5;
+   data[1][0] = 10;
+   data[1][3] = 13;
+   data[1][6] = 16;
+   data[1][9] = 19;
+   data[1][8] = 18;
+   data[1][7] = 17;
+   data[2][8] = 28;
+   data[2][7] = 27;
+   data[2][6] = 26;
+   data[3][0] = 30;
+   data[3][5] = 35;
+   data[3][6] = 36;
+   data[3][7] = 37;
+   data[3][9] = 39;
+   data[3][0] = 30;
+   data[4][8] = 48;
+   data[4][2] = 42;
+   data[4][3] = 43;
+   data[4][7] = 47;
+   data[4][6] = 46;
+   data[5][3] = 53;
+   data[6][3] = 63;
+   data[6][4] = 64;
+   data[6][6] = 66;
+   data[7][3] = 73;
+   data[7][7] = 77;
+   data[8][8] = 88;
+
+   matrixsparse_initialize(matrix, data, MAX_ROWS, MAX_COLS);
+
+   eina_matrixsparse_size_get(matrix, &nrows, &ncols);
+   fail_if(nrows != MAX_ROWS || ncols != MAX_COLS);
+
+   r = eina_matrixsparse_size_set(matrix, nrows - 2, ncols - 2);
+   fail_if(r == EINA_FALSE);
+   data[1][9] = 0;
+   data[1][8] = 0;
+   data[2][8] = 0;
+   data[3][9] = 0;
+   data[4][8] = 0;
+   data[8][8] = 0;
+   matrixsparse_check(matrix, data, MAX_ROWS, MAX_COLS);
+
+   r = eina_matrixsparse_size_set(matrix, 5, 1);
+   fail_if(r == EINA_FALSE);
+   data[0][5] = 0;
+   data[1][3] = 0;
+   data[1][6] = 0;
+   data[1][7] = 0;
+   data[2][7] = 0;
+   data[2][6] = 0;
+   data[3][5] = 0;
+   data[3][6] = 0;
+   data[3][7] = 0;
+   data[4][2] = 0;
+   data[4][3] = 0;
+   data[4][7] = 0;
+   data[4][6] = 0;
+   data[5][3] = 0;
+   data[6][3] = 0;
+   data[6][4] = 0;
+   data[6][6] = 0;
+   data[7][3] = 0;
+   data[7][7] = 0;
+   matrixsparse_check(matrix, data, MAX_ROWS, MAX_COLS);
+
+   r = eina_matrixsparse_size_set(matrix, 1, 1);
+   fail_if(r == EINA_FALSE);
+   data[3][0] = 0;
+   data[1][0] = 0;
+   matrixsparse_check(matrix, data, MAX_ROWS, MAX_COLS);
+
+   r = eina_matrixsparse_size_set(matrix, 5, 4);
+   fail_if(r == EINA_FALSE);
+
+   r = eina_matrixsparse_data_idx_set(matrix, 4, 2, &data[4][2]);
+   fail_if(r == EINA_FALSE);
+   data[4][2] = 42;
+   matrixsparse_check(matrix, data, MAX_ROWS, MAX_COLS);
+
+   r = eina_matrixsparse_size_set(matrix, 5, 1);
+   fail_if(r == EINA_FALSE);
+   data[4][2] = 0;
+   matrixsparse_check(matrix, data, MAX_ROWS, MAX_COLS);
+
+   eina_matrixsparse_free(matrix);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_test_iterators)
+{
+   Eina_Matrixsparse *matrix = NULL;
+   Eina_Matrixsparse_Cell *cell = NULL;
+   Eina_Iterator *it = NULL;
+   Eina_Bool r;
+   long *test1, value;
+   unsigned long i, j;
+   unsigned long row, col;
+
+   long data[MAX_ROWS][MAX_COLS];
+
+   value = 0;
+   for (i = 0; i < MAX_ROWS; i++)
+     {
+	for (j = 0; j < MAX_COLS; j++)
+	  {
+	     data[i][j] = value++;
+	     printf("%4ld ", data[i][j]);
+	  }
+	printf("\n");
+     }
+
+   eina_init();
+
+   matrix = eina_matrixsparse_new(MAX_ROWS, MAX_COLS,
+				  eina_matrixsparse_free_cell_cb, data);
+   fail_if(matrix == NULL);
+
+   r = eina_matrixsparse_data_idx_set(matrix, 3, 5, &data[3][5]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 3, 6, &data[3][6]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 3, 7, &data[3][7]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 3, 9, &data[3][9]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 3, 0, &data[3][0]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 4, 6, &data[4][6]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 4, 8, &data[4][8]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 4, 2, &data[4][2]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 4, 3, &data[4][3]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 4, 7, &data[4][7]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 6, 4, &data[6][4]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 5, 3, &data[5][3]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 6, 3, &data[6][3]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 7, 3, &data[7][3]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 0, 3, &data[0][3]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 1, 3, &data[1][3]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 1, 6, &data[1][6]);
+   fail_if(r == EINA_FALSE);
+   r = eina_matrixsparse_data_idx_set(matrix, 1, 9, &data[1][9]);
+   fail_if(r == EINA_FALSE);
+
+   it = eina_matrixsparse_iterator_new(matrix);
+   fail_if(it == NULL);
+   EINA_ITERATOR_FOREACH(it, cell)
+     {
+	fail_if(cell == NULL);
+	r = eina_matrixsparse_cell_position_get(cell, &row, &col);
+	fail_if(r == EINA_FALSE);
+
+	test1 = eina_matrixsparse_cell_data_get(cell);
+	fail_if(test1 == NULL || *test1 != data[row][col]);
+     }
+   eina_iterator_free(it);
+
+   it = eina_matrixsparse_iterator_complete_new(matrix);
+   fail_if(it == NULL);
+   EINA_ITERATOR_FOREACH(it, cell)
+     {
+	fail_if(cell == NULL);
+	r = eina_matrixsparse_cell_position_get(cell, &row, &col);
+	fail_if(r == EINA_FALSE);
+
+	test1 = eina_matrixsparse_cell_data_get(cell);
+	if (test1)
+	  fail_if(*test1 != data[row][col]);
+     }
+   eina_iterator_free(it);
+
+   eina_matrixsparse_free(matrix);
+
+   eina_shutdown();
+}
+END_TEST
+
+void
+eina_test_matrixsparse(TCase *tc)
+{
+    tcase_add_test(tc, eina_test_simple);
+    tcase_add_test(tc, eina_test_resize);
+    tcase_add_test(tc, eina_test_iterators);
+}
diff --git a/src/tests/eina_test_mempool.c b/src/tests/eina_test_mempool.c
index 09ab5d1..06bdcc0 100644
--- a/src/tests/eina_test_mempool.c
+++ b/src/tests/eina_test_mempool.c
@@ -21,14 +21,14 @@
 #endif
 
 #include "eina_suite.h"
-#include "eina_mempool.h"
+#include "Eina.h"
 
 static Eina_Array *_modules;
 
 static void
 _mempool_init(void)
 {
-    eina_mempool_init();
+    eina_init();
     /* force modules to be loaded in case they are not installed */
     _modules = eina_module_list_get(NULL, PACKAGE_BUILD_DIR"/src/modules", 1, NULL, NULL);
     eina_module_list_load(_modules);
@@ -39,7 +39,7 @@ _mempool_shutdown(void)
 {
    eina_module_list_flush(_modules);
    /* TODO delete the list */
-   eina_mempool_shutdown();
+   eina_shutdown();
 }
 
 static void
@@ -77,19 +77,6 @@ _eina_mempool_test(Eina_Mempool *mp, Eina_Bool with_realloc, Eina_Bool with_gc)
    eina_mempool_del(mp);
 }
 
-START_TEST(eina_mempool_init_shutdown)
-{
-   Eina_Mempool *mp;
-
-   _mempool_init();
-
-   mp = eina_mempool_add("test", "test", NULL);
-   fail_if(mp != NULL);
-
-   _mempool_shutdown();
-}
-END_TEST
-
 START_TEST(eina_mempool_chained_mempool)
 {
    Eina_Mempool *mp;
@@ -160,7 +147,6 @@ END_TEST
 void
 eina_test_mempool(TCase *tc)
 {
-   tcase_add_test(tc, eina_mempool_init_shutdown);
    tcase_add_test(tc, eina_mempool_chained_mempool);
    tcase_add_test(tc, eina_mempool_pass_through);
    tcase_add_test(tc, eina_mempool_fixed_bitmap);
diff --git a/src/tests/eina_test_module.c b/src/tests/eina_test_module.c
index 86a7b46..eeeb9cd 100644
--- a/src/tests/eina_test_module.c
+++ b/src/tests/eina_test_module.c
@@ -23,26 +23,9 @@
 #include <stdio.h>
 
 #include "eina_suite.h"
-#include "eina_module.h"
+#include "Eina.h"
 
-START_TEST(eina_module_init_shutdown)
-{
-   eina_module_init();
-   eina_module_shutdown();
-   eina_module_init();
-    eina_module_init();
-     eina_module_init();
-     eina_module_shutdown();
-     eina_module_init();
-      eina_module_init();
-      eina_module_shutdown();
-     eina_module_shutdown();
-    eina_module_shutdown();
-   eina_module_shutdown();
-}
-END_TEST
-
-static Eina_Bool list_cb(Eina_Module *m, void *data)
+static Eina_Bool list_cb(Eina_Module *m, void *data __UNUSED__)
 {
    int *sym;
    const char *file;
@@ -65,20 +48,19 @@ START_TEST(eina_module_load_unload)
 {
    Eina_Array *_modules;
 
-   eina_module_init();
+   eina_init();
    _modules = eina_module_list_get(NULL, PACKAGE_BUILD_DIR"/src/tests/", 1, &list_cb, NULL);
    fail_if(!_modules);
    eina_module_list_load(_modules);
    eina_module_list_unload(_modules);
    eina_module_list_flush(_modules);
    /* TODO delete the list */
-   eina_module_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
 void
 eina_test_module(TCase *tc)
 {
-   tcase_add_test(tc, eina_module_init_shutdown);
    tcase_add_test(tc, eina_module_load_unload);
 }
diff --git a/src/tests/eina_test_rbtree.c b/src/tests/eina_test_rbtree.c
index cfb6e83..a7b66e6 100644
--- a/src/tests/eina_test_rbtree.c
+++ b/src/tests/eina_test_rbtree.c
@@ -24,9 +24,8 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "eina_array.h"
 #include "eina_suite.h"
-#include "eina_rbtree.h"
+#include "Eina.h"
 
 static inline Eina_Bool
 _eina_rbtree_is_red(Eina_Rbtree *tree)
@@ -160,7 +159,7 @@ START_TEST(eina_rbtree_remove)
    Eina_Array_Iterator it;
    unsigned int i;
 
-   eina_array_init();
+   eina_init();
 
    ea =  eina_array_new(11);
    fail_if(!ea);
@@ -184,7 +183,7 @@ START_TEST(eina_rbtree_remove)
 
    fail_if(root != NULL);
 
-   eina_array_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
diff --git a/src/tests/eina_test_rectangle.c b/src/tests/eina_test_rectangle.c
index e50950d..defb319 100644
--- a/src/tests/eina_test_rectangle.c
+++ b/src/tests/eina_test_rectangle.c
@@ -22,8 +22,8 @@
 
 #include <stdio.h>
 
-#include "eina_rectangle.h"
 #include "eina_suite.h"
+#include "Eina.h"
 
 START_TEST(eina_rectangle_pool)
 {
@@ -34,7 +34,7 @@ START_TEST(eina_rectangle_pool)
    int w;
    int h;
 
-   fail_if(!eina_rectangle_init());
+   fail_if(!eina_init());
 
    pool = eina_rectangle_pool_new(256, 256);
    fail_if(pool == NULL);
@@ -68,7 +68,7 @@ START_TEST(eina_rectangle_pool)
 
    eina_rectangle_pool_free(pool);
 
-   eina_rectangle_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
diff --git a/src/tests/eina_test_stringshare.c b/src/tests/eina_test_stringshare.c
index a75cba5..2db4d5d 100644
--- a/src/tests/eina_test_stringshare.c
+++ b/src/tests/eina_test_stringshare.c
@@ -26,22 +26,7 @@
 #include <time.h>
 
 #include "eina_suite.h"
-#include "eina_stringshare.h"
-#include "eina_array.h"
-#include "eina_convert.h"
-
-START_TEST(eina_stringshare_init_shutdown)
-{
-   eina_stringshare_init();
-    eina_stringshare_init();
-    eina_stringshare_shutdown();
-    eina_stringshare_init();
-     eina_stringshare_init();
-     eina_stringshare_shutdown();
-    eina_stringshare_shutdown();
-   eina_stringshare_shutdown();
-}
-END_TEST
+#include "Eina.h"
 
 #define TEST0 "test/0"
 #define TEST1 "test/1"
@@ -51,7 +36,7 @@ START_TEST(eina_stringshare_simple)
    const char *t0;
    const char *t1;
 
-   eina_stringshare_init();
+   eina_init();
 
    t0 = eina_stringshare_add(TEST0);
    t1 = eina_stringshare_add(TEST1);
@@ -64,7 +49,7 @@ START_TEST(eina_stringshare_simple)
    eina_stringshare_del(t0);
    eina_stringshare_del(t1);
 
-   eina_stringshare_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -73,7 +58,7 @@ START_TEST(eina_stringshare_small)
    char buf[4];
    int i;
 
-   eina_stringshare_init();
+   eina_init();
 
    for (i = 0; i < 3; i++)
      {
@@ -99,7 +84,7 @@ START_TEST(eina_stringshare_small)
 	eina_stringshare_del(t1);
      }
 
-   eina_stringshare_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -109,7 +94,7 @@ START_TEST(eina_stringshare_test_share)
    const char *t0;
    const char *t1;
 
-   eina_stringshare_init();
+   eina_init();
 
    t0 = eina_stringshare_add(TEST0);
    t1 = eina_stringshare_add(TEST0);
@@ -123,7 +108,7 @@ START_TEST(eina_stringshare_test_share)
    eina_stringshare_del(t0);
    eina_stringshare_del(t1);
 
-   eina_stringshare_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -132,7 +117,7 @@ START_TEST(eina_stringshare_putstuff)
    const char *tmp;
    int i;
 
-   eina_stringshare_init();
+   eina_init();
 
    for (i = 10000; i > 0; --i)
      {
@@ -143,7 +128,7 @@ START_TEST(eina_stringshare_putstuff)
 	fail_if(tmp != eina_stringshare_add(build));
      }
 
-   eina_stringshare_shutdown();
+   eina_shutdown();
 }
 END_TEST
 
@@ -155,7 +140,7 @@ START_TEST(eina_stringshare_collision)
 
    srand(time(NULL));
 
-   eina_stringshare_init();
+   eina_init();
 
    ea = eina_array_new(256);
    fail_if(!ea);
@@ -164,14 +149,23 @@ START_TEST(eina_stringshare_collision)
      {
 	eina_convert_itoa(rand(), buffer);
 	eina_array_push(ea, (void*) eina_stringshare_add(buffer));
-	if (rand() > RAND_MAX / 2) eina_stringshare_add(buffer);
+	if (rand() > RAND_MAX / 2)
+	  {
+	     const char *r = eina_stringshare_add(buffer);
+	     fail_if(r == NULL);
+	  }
      }
 
    for (i = 0; i < 10000; ++i)
      {
+	const char *r;
+
 	eina_convert_itoa(60000 - i, buffer);
 	eina_array_push(ea, (void*) eina_stringshare_add(buffer));
-	eina_stringshare_add(buffer);
+	r = eina_stringshare_add(buffer);
+	fail_if(r == NULL);
+	r = eina_stringshare_add(buffer);
+	fail_if(r == NULL);
      }
 
    for (i = 0; i < 200; ++i)
@@ -180,7 +174,7 @@ START_TEST(eina_stringshare_collision)
    for (i = 0; i < 1000; ++i)
      eina_stringshare_del(eina_array_pop(ea));
 
-   eina_stringshare_shutdown();
+   eina_shutdown();
 
    eina_array_free(ea);
 }
@@ -189,7 +183,6 @@ END_TEST
 void
 eina_test_stringshare(TCase *tc)
 {
-   tcase_add_test(tc, eina_stringshare_init_shutdown);
    tcase_add_test(tc, eina_stringshare_simple);
    tcase_add_test(tc, eina_stringshare_small);
    tcase_add_test(tc, eina_stringshare_test_share);
diff --git a/src/tests/eina_test_tiler.c b/src/tests/eina_test_tiler.c
new file mode 100644
index 0000000..e24044f
--- /dev/null
+++ b/src/tests/eina_test_tiler.c
@@ -0,0 +1,128 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2009 Rafael Antognolli
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include "eina_suite.h"
+#include "Eina.h"
+
+struct test_rect {
+     unsigned long col, row;
+     int x, y, w, h;
+     Eina_Bool full;
+};
+
+static void
+check_iterator(Eina_Iterator *it, struct test_rect *cur_test)
+{
+   unsigned int i = 0;
+   struct Eina_Tile_Grid_Info *tile;
+
+   EINA_ITERATOR_FOREACH(it, tile) {
+      fail_if(cur_test[i].col != tile->col ||
+	      cur_test[i].row != tile->row ||
+	      cur_test[i].x != tile->rect.x ||
+	      cur_test[i].y != tile->rect.y ||
+	      cur_test[i].w != tile->rect.w ||
+	      cur_test[i].h != tile->rect.h ||
+	      cur_test[i].full != tile->full);
+      i++;
+   }
+}
+
+START_TEST(eina_test_tile_grid_slicer_iterator)
+{
+   Eina_Iterator *it;
+   struct test_rect *cur_test;
+   struct test_rect test1[] = {{1, 1, 72, 82, 10, 15, 0}};
+   struct test_rect test2[] =
+     {{1, 1,  72,  82,  56,  15,  0},
+      {2, 1,   0,  82, 128,  15,  0},
+      {3, 1,   0,  82, 116,  15,  0}};
+   struct test_rect test3[] =
+     {{1, 1,  72,  82,  10,  46,  0},
+      {1, 2,  72,   0,  10, 128,  0},
+      {1, 3,  72,   0,  10, 126,  0}};
+   struct test_rect test4[] =
+     {{1, 1,  72,  82,  56,  46,  0},
+      {2, 1,   0,  82, 128,  46,  0},
+      {3, 1,   0,  82, 128,  46,  0},
+      {4, 1,   0,  82,  88,  46,  0},
+      {1, 2,  72,   0,  56, 128,  0},
+      {2, 2,   0,   0, 128, 128,  1},
+      {3, 2,   0,   0, 128, 128,  1},
+      {4, 2,   0,   0,  88, 128,  0},
+      {1, 3,  72,   0,  56, 126,  0},
+      {2, 3,   0,   0, 128, 126,  0},
+      {3, 3,   0,   0, 128, 126,  0},
+      {4, 3,   0,   0,  88, 126,  0}};
+   struct test_rect test5[] = {{1, 1, 0, 0, 128, 128, 1}};
+   struct test_rect test6[] = {{1, 1, 0, 0, 1, 1, 0}};
+   struct test_rect test7[] =
+     {{1, 1,   0,   0, 128, 128,  1},
+      {2, 1,   0,   0,   1, 128,  0},
+      {1, 2,   0,   0, 128,   1,  0},
+      {2, 2,   0,   0,   1,   1,  0}};
+
+
+   cur_test = test1;
+   it = eina_tile_grid_slicer_iterator_new(200, 210, 10, 15, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+
+   cur_test = test2;
+   it = eina_tile_grid_slicer_iterator_new(200, 210, 300, 15, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+
+   cur_test = test3;
+   it = eina_tile_grid_slicer_iterator_new(200, 210, 10, 300, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+
+   cur_test = test4;
+   it = eina_tile_grid_slicer_iterator_new(200, 210, 400, 300, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+
+   cur_test = test5;
+   it = eina_tile_grid_slicer_iterator_new(128, 128, 128, 128, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+
+   cur_test = test6;
+   it = eina_tile_grid_slicer_iterator_new(128, 128, 1, 1, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+
+   cur_test = test7;
+   it = eina_tile_grid_slicer_iterator_new(128, 128, 129, 129, 128, 128);
+   check_iterator(it, cur_test);
+   eina_iterator_free(it);
+}
+END_TEST
+
+void
+eina_test_tiler(TCase *tc)
+{
+   tcase_add_test(tc, eina_test_tile_grid_slicer_iterator);
+}

-- 
 Enlightenment Foundation Library providing optimized data types



More information about the Pkg-e-commits mailing list