diff --git a/Makefile.in b/Makefile.in
index 37ece9c..80fbd6e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,22 +90,6 @@
 host_triplet = @host@
 @COND_GNULIB_TRUE@am__append_1 = lib
 subdir = .
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/configure $(am__configure_deps) \
-	$(srcdir)/config.h.in $(srcdir)/Doxyfile.in \
-	$(am__dist_doc_DATA_DIST) $(am__dist_examples_DATA_DIST) \
-	$(am__dist_examplesold_DATA_DIST) ABOUT-NLS AUTHORS COPYING \
-	ChangeLog INSTALL NEWS README THANKS TODO build-aux/compile \
-	build-aux/config.guess build-aux/config.rpath \
-	build-aux/config.sub build-aux/depcomp build-aux/install-sh \
-	build-aux/missing build-aux/ltmain.sh \
-	$(top_srcdir)/build-aux/compile \
-	$(top_srcdir)/build-aux/config.guess \
-	$(top_srcdir)/build-aux/config.rpath \
-	$(top_srcdir)/build-aux/config.sub \
-	$(top_srcdir)/build-aux/install-sh \
-	$(top_srcdir)/build-aux/ltmain.sh \
-	$(top_srcdir)/build-aux/missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -115,6 +109,10 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__dist_doc_DATA_DIST) \
+	$(am__dist_examples_DATA_DIST) \
+	$(am__dist_examplesold_DATA_DIST) $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
@@ -194,7 +192,7 @@
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	cscope distdir dist dist-all distcheck
+	cscope distdir distdir-am dist dist-all distcheck
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
 	$(LISP)config.h.in
 # Read a list of newline-separated strings from the standard input,
@@ -216,6 +214,18 @@
 ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
+am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in \
+	$(srcdir)/config.h.in $(top_srcdir)/build-aux/compile \
+	$(top_srcdir)/build-aux/config.guess \
+	$(top_srcdir)/build-aux/config.rpath \
+	$(top_srcdir)/build-aux/config.sub \
+	$(top_srcdir)/build-aux/install-sh \
+	$(top_srcdir)/build-aux/ltmain.sh \
+	$(top_srcdir)/build-aux/missing ABOUT-NLS AUTHORS COPYING \
+	ChangeLog INSTALL NEWS README THANKS TODO build-aux/compile \
+	build-aux/config.guess build-aux/config.rpath \
+	build-aux/config.sub build-aux/depcomp build-aux/install-sh \
+	build-aux/ltmain.sh build-aux/missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -315,6 +325,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -397,6 +408,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -471,7 +483,7 @@
 .SUFFIXES:
 am--refresh: Makefile
 	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -484,23 +496,22 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    echo ' $(SHELL) ./config.status'; \
 	    $(SHELL) ./config.status;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	$(SHELL) ./config.status --recheck
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
 $(am__aclocal_m4_deps):
 
@@ -511,7 +522,7 @@
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
 	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
 	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
 	rm -f stamp-h1
 	touch $@
@@ -699,7 +710,10 @@
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	$(am__remove_distdir)
 	test -d "$(distdir)" || mkdir "$(distdir)"
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -772,7 +786,7 @@
 	  exit 1; \
 	else :; fi
 dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
 	$(am__post_remove_distdir)
 
 dist-bzip2: distdir
@@ -788,17 +802,17 @@
 	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
-	@echo WARNING: "Support for shar distribution archives is" \
-	               "deprecated." >&2
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
 	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__post_remove_distdir)
 
 dist-shar: distdir
-	@echo WARNING: "Support for distribution archives compressed with" \
-		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
 	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
 	$(am__post_remove_distdir)
 
 dist-zip: distdir
@@ -816,7 +830,7 @@
 distcheck: dist
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	  eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.lz*) \
@@ -826,23 +840,23 @@
 	*.tar.Z*) \
 	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	  eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
 	chmod -R a-w $(distdir)
 	chmod u+w $(distdir)
-	mkdir $(distdir)/_build $(distdir)/_inst
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
 	chmod a-w $(distdir)
 	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
 	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
 	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	    --srcdir=.. --prefix="$$dc_install_base" \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1027,6 +1041,8 @@
 	uninstall-am uninstall-dist_docDATA \
 	uninstall-dist_examplesDATA uninstall-dist_examplesoldDATA
 
+.PRECIOUS: Makefile
+
 
 # Create ChangeLog from output of "git log --date=iso --stat".
 # Convert the man pages to PDF and plain text (ASCII only) formats.
diff --git a/aclocal.m4 b/aclocal.m4
index 129fa71..7f0eb5d 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@
 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'.])])
 
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.16'
 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.14.1], [],
+m4_if([$1], [1.16.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,14 @@
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # Figure out how to run the assembler.                      -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -78,7 +78,7 @@
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -123,15 +123,14 @@
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 ])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -162,7 +161,7 @@
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -353,13 +352,12 @@
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
@@ -367,49 +365,41 @@
   # Older Autoconf 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
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  AS_CASE([$CONFIG_FILES],
+          [*\'*], [eval set x "$CONFIG_FILES"],
+          [*], [set x $CONFIG_FILES])
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_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
+    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: 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"`
-    # 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'`; 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
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`AS_DIRNAME(["$am_mf"])`
+    am_filepart=`AS_BASENAME(["$am_mf"])`
+    AM_RUN_LOG([cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles]) || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).])
+  fi
+  AS_UNSET([am_dirpart])
+  AS_UNSET([am_filepart])
+  AS_UNSET([am_mf])
+  AS_UNSET([am_rc])
+  rm -f conftest-deps.mk
 }
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
@@ -418,18 +408,17 @@
 # -----------------------------
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
      [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
+     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -516,11 +505,11 @@
 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -584,7 +573,7 @@
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -593,7 +582,11 @@
 END
     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
   fi
-fi])
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -622,7 +615,7 @@
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -633,7 +626,7 @@
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\	*)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -643,7 +636,7 @@
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -662,9 +655,45 @@
 rmdir .tst 2>/dev/null
 AC_SUBST([am__leading_dot])])
 
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -672,49 +701,42 @@
 
 # AM_MAKE_INCLUDE()
 # -----------------
-# Check to see how make treats includes.
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
 AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
 am__doit:
-	@echo this is the am__doit target
+	@echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+      ['0:this is the am__doit target'],
+      [AS_CASE([$s],
+          [BSD], [am__include='.include' am__quote='"'],
+          [am__include='include' am__quote=''])])
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -751,7 +773,7 @@
 fi
 ])
 
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -785,7 +807,7 @@
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -814,7 +836,7 @@
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -861,7 +883,7 @@
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -880,7 +902,7 @@
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -961,7 +983,7 @@
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1021,7 +1043,7 @@
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1049,7 +1071,7 @@
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1068,7 +1090,7 @@
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0
index e384461..0323a5d 100644
--- a/autom4te.cache/output.0
+++ b/autom4te.cache/output.0
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for XZ Utils 5.2.2.
+@%:@ Generated by GNU Autoconf 2.69 for XZ Utils 5.2.3.
 @%:@
 @%:@ Report bugs to <lasse.collin@tukaani.org>.
 @%:@ 
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='XZ Utils'
 PACKAGE_TARNAME='xz'
-PACKAGE_VERSION='5.2.2'
-PACKAGE_STRING='XZ Utils 5.2.2'
+PACKAGE_VERSION='5.2.3'
+PACKAGE_STRING='XZ Utils 5.2.3'
 PACKAGE_BUGREPORT='lasse.collin@tukaani.org'
 PACKAGE_URL='http://tukaani.org/xz/'
 
@@ -642,6 +642,7 @@
 COND_GNULIB_TRUE
 HAVE_VISIBILITY
 CFLAG_VISIBILITY
+CAPSICUM_LIB
 COND_INTERNAL_SHA256_FALSE
 COND_INTERNAL_SHA256_TRUE
 GETOPT_H
@@ -706,7 +707,6 @@
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
-am__quote
 am__include
 DEPDIR
 OBJEXT
@@ -855,6 +855,9 @@
 build_vendor
 build_cpu
 build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
 target_alias
 host_alias
 build_alias
@@ -874,6 +877,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -892,15 +896,18 @@
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_maintainer_mode
 enable_debug
 enable_encoders
 enable_decoders
 enable_match_finders
 enable_checks
+enable_external_sha256
 enable_assembler
 enable_small
 enable_threads
@@ -913,6 +920,7 @@
 enable_scripts
 enable_doc
 enable_symbol_versions
+enable_sandbox
 enable_silent_rules
 enable_dependency_tracking
 enable_shared
@@ -979,6 +987,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1231,6 +1240,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1368,7 +1386,7 @@
 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
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1481,7 +1499,7 @@
   # 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 XZ Utils 5.2.2 to adapt to many kinds of systems.
+\`configure' configures XZ Utils 5.2.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1521,6 +1539,7 @@
   --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]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1551,7 +1570,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of XZ Utils 5.2.2:";;
+     short | recursive ) echo "Configuration of XZ Utils 5.2.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1559,6 +1578,9 @@
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode 
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
   --enable-debug          Enable debugging code.
   --enable-encoders=LIST  Comma-separated list of encoders to build.
                           Default=all. Available encoders: lzma1 lzma2 delta
@@ -1574,6 +1596,9 @@
   --enable-checks=LIST    Comma-separated list of integrity checks to build.
                           Default=all. Available integrity checks: crc32 crc64
                           sha256
+  --enable-external-sha256 
+                          Use SHA-256 code from the operating system. See
+                          INSTALL for possible subtle problems.
   --disable-assembler     Do not use assembler optimizations even if such
                           exist for the architecture.
   --enable-small          Make liblzma smaller and a little slower. This is
@@ -1601,6 +1626,9 @@
                           Use symbol versioning for liblzma. Enabled by
                           default on GNU/Linux, other GNU-based systems, and
                           FreeBSD.
+  --enable-sandbox=METHOD This is an experimental feature. Sandboxing METHOD
+                          can be `auto', `no', or `capsicum'. The default is
+                          `no'.
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
   --enable-dependency-tracking 
@@ -1716,7 +1744,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-XZ Utils configure 5.2.2
+XZ Utils configure 5.2.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2555,7 +2583,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by XZ Utils $as_me 5.2.2, which was
+It was created by XZ Utils $as_me 5.2.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2938,6 +2966,29 @@
 ac_config_headers="$ac_config_headers config.h"
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    @%:@ Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+  
+
+
 echo
 echo "$PACKAGE_STRING"
 
@@ -3122,6 +3173,7 @@
 
 enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'`
 if test "x$enable_encoders" = xno || test "x$enable_encoders" = x; then
+	enable_encoders=no
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: (none)" >&5
 $as_echo "(none)" >&6; }
 else
@@ -3198,6 +3250,9 @@
 				;;
 		esac
 	done
+	
+$as_echo "@%:@define HAVE_ENCODERS 1" >>confdefs.h
+
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_encoders" >&5
 $as_echo "$enable_encoders" >&6; }
 fi
@@ -3213,6 +3268,7 @@
 
 enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'`
 if test "x$enable_decoders" = xno || test "x$enable_decoders" = x; then
+	enable_decoders=no
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: (none)" >&5
 $as_echo "(none)" >&6; }
 else
@@ -3289,10 +3345,8 @@
 				;;
 		esac
 	done
-
-	# LZMA2 requires that LZMA1 is enabled.
-	test "x$enable_encoder_lzma2" = xyes && enable_encoder_lzma1=yes
-	test "x$enable_decoder_lzma2" = xyes && enable_decoder_lzma1=yes
+	
+$as_echo "@%:@define HAVE_DECODERS 1" >>confdefs.h
 
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_decoders" >&5
 $as_echo "$enable_decoders" >&6; }
@@ -3303,7 +3357,7 @@
 	as_fn_error $? "LZMA2 requires that LZMA1 is also enabled." "$LINENO" 5
 fi
 
- if test "x$enable_encoders" != xno && test "x$enable_encoders" != x; then
+ if test "x$enable_encoders" != xno; then
   COND_MAIN_ENCODER_TRUE=
   COND_MAIN_ENCODER_FALSE='#'
 else
@@ -3311,7 +3365,7 @@
   COND_MAIN_ENCODER_FALSE=
 fi
 
- if test "x$enable_decoders" != xno && test "x$enable_decoders" != x; then
+ if test "x$enable_decoders" != xno; then
   COND_MAIN_DECODER_TRUE=
   COND_MAIN_DECODER_FALSE='#'
 else
@@ -3776,6 +3830,26 @@
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if external SHA-256 should be used" >&5
+$as_echo_n "checking if external SHA-256 should be used... " >&6; }
+@%:@ Check whether --enable-external-sha256 was given.
+if test "${enable_external_sha256+set}" = set; then :
+  enableval=$enable_external_sha256; 
+else
+  enable_external_sha256=no
+fi
+
+if test "x$enable_check_sha256" != "xyes"; then
+	enable_external_sha256=no
+fi
+if test "x$enable_external_sha256" = xyes; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
 
 ###########################
 # Assembler optimizations #
@@ -3980,6 +4054,7 @@
   enable_xzdec=yes
 fi
 
+test "x$enable_decoders" = xno && enable_xzdec=no
  if test x$enable_xzdec != xno; then
   COND_XZDEC_TRUE=
   COND_XZDEC_FALSE='#'
@@ -3996,6 +4071,7 @@
   enable_lzmadec=yes
 fi
 
+test "x$enable_decoder_lzma1" = xno && enable_lzmadec=no
  if test x$enable_lzmadec != xno; then
   COND_LZMADEC_TRUE=
   COND_LZMADEC_FALSE='#'
@@ -4012,6 +4088,7 @@
   enable_lzmainfo=yes
 fi
 
+test "x$enable_decoder_lzma1" = xno && enable_lzmainfo=no
  if test x$enable_lzmainfo != xno; then
   COND_LZMAINFO_TRUE=
   COND_LZMAINFO_FALSE='#'
@@ -4109,6 +4186,36 @@
 
 
 
+##############
+# Sandboxing #
+##############
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if sandboxing should be used" >&5
+$as_echo_n "checking if sandboxing should be used... " >&6; }
+@%:@ Check whether --enable-sandbox was given.
+if test "${enable_sandbox+set}" = set; then :
+  enableval=$enable_sandbox; 
+else
+  enable_sandbox=no
+fi
+
+case $enable_sandbox in
+	auto)
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: maybe (autodetect)" >&5
+$as_echo "maybe (autodetect)" >&6; }
+		;;
+	no | capsicum)
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_sandbox" >&5
+$as_echo "$enable_sandbox" >&6; }
+		;;
+	*)
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+		as_fn_error $? "--enable-sandbox only accepts \`auto', \`no', or \`capsicum'." "$LINENO" 5
+		;;
+esac
+
+
 ###############################################################################
 # Checks for programs.
 ###############################################################################
@@ -4181,7 +4288,7 @@
 # http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354
 # The -Wno-unsupported is used to silence warnings about missing
 # "subdir-objects".
-am__api_version='1.14'
+am__api_version='1.16'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -4353,8 +4460,8 @@
 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`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -4373,7 +4480,7 @@
 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\	*)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -4667,7 +4774,7 @@
 
 # Define the identity of the package.
  PACKAGE='xz'
- VERSION='5.2.2'
+ VERSION='5.2.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4697,12 +4804,12 @@
 
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
@@ -4749,7 +4856,7 @@
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -4759,6 +4866,7 @@
     as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
   fi
 fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
@@ -4775,45 +4883,45 @@
 
 ac_config_commands="$ac_config_commands depfiles"
 
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
 am__doit:
-	@echo this is the am__doit target
+	@echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  case $?:`cat confinc.out 2>/dev/null` in @%:@(
+  '0:this is the am__doit target') :
+    case $s in @%:@(
+  BSD) :
+    am__include='.include' am__quote='"' ;; @%:@(
+  *) :
+    am__include='include' am__quote='' ;;
+esac ;; @%:@(
+  *) :
      ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
 
 @%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
@@ -17628,7 +17736,7 @@
 
 
 # Find the best function to set timestamps.
-for ac_func in futimens futimes futimesat utimes utime
+for ac_func in futimens futimes futimesat utimes _futime utime
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -18123,8 +18231,36 @@
 else
   
 
+# glibc-based systems (GNU/Linux and GNU/kFreeBSD) have sched_getaffinity().
+# The CPU_COUNT() macro was added in glibc 2.9 so we try to link the
+# test program instead of merely compiling it. glibc 2.9 is old enough that
+# if someone uses the code on older glibc, the fallback to sysconf() should
+# be good enough.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sched.h>
+int
+main(void)
+{
+	cpu_set_t cpu_mask;
+	sched_getaffinity(0, sizeof(cpu_mask), &cpu_mask);
+	return CPU_COUNT(&cpu_mask);
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  tuklib_cv_cpucores_method=sched_getaffinity
+else
+  
+
 # FreeBSD has both cpuset and sysctl. Look for cpuset first because
 # it's a better approach.
+#
+# This test would match on GNU/kFreeBSD too but it would require
+# -lfreebsd-glue when linking and thus in the current form this would
+# fail on GNU/kFreeBSD. The above test for sched_getaffinity() matches
+# on GNU/kFreeBSD so the test below should never run on that OS.
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -18236,12 +18372,20 @@
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_cpucores_method" >&5
 $as_echo "$tuklib_cv_cpucores_method" >&6; }
 
 case $tuklib_cv_cpucores_method in
+	sched_getaffinity)
+		
+$as_echo "@%:@define TUKLIB_CPUCORES_SCHED_GETAFFINITY 1" >>confdefs.h
+
+		;;
 	cpuset)
 		
 $as_echo "@%:@define TUKLIB_CPUCORES_CPUSET 1" >>confdefs.h
@@ -18316,30 +18460,29 @@
 
 
 
-# Check for system-provided SHA-256. At least the following is supported:
+# If requsted, check for system-provided SHA-256. At least the following
+# implementations are supported:
 #
 # OS       Headers                     Library  Type           Function
 # FreeBSD  sys/types.h + sha256.h      libmd    SHA256_CTX     SHA256_Init
 # NetBSD   sys/types.h + sha2.h                 SHA256_CTX     SHA256_Init
 # OpenBSD  sys/types.h + sha2.h                 SHA2_CTX       SHA256Init
 # Solaris  sys/types.h + sha2.h        libmd    SHA256_CTX     SHA256Init
-# MINIX 3  sys/types.h + minix/sha2.h  libutil  SHA256_CTX     SHA256_Init
+# MINIX 3  sys/types.h + sha2.h                 SHA256_CTX     SHA256_Init
 # Darwin   CommonCrypto/CommonDigest.h          CC_SHA256_CTX  CC_SHA256_Init
 #
 # Note that Darwin's CC_SHA256_Update takes buffer size as uint32_t instead
 # of size_t.
 #
-# We don't check for e.g. OpenSSL or libgcrypt because we don't want
-# to introduce dependencies to other packages by default. Maybe such
-# libraries could be supported via additional configure options though.
-#
-if test "x$enable_check_sha256" = "xyes"; then
+sha256_header_found=no
+sha256_type_found=no
+sha256_func_found=no
+if test "x$enable_external_sha256" = "xyes"; then
 	# Test for Common Crypto before others, because Darwin has sha256.h
 	# too and we don't want to use that, because on older versions it
 	# uses OpenSSL functions, whose SHA256_Init is not guaranteed to
 	# succeed.
-	sha256_header_found=no
-	for ac_header in CommonCrypto/CommonDigest.h sha256.h sha2.h minix/sha2.h
+	for ac_header in CommonCrypto/CommonDigest.h sha256.h sha2.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -18365,9 +18508,6 @@
 			  #ifdef HAVE_SHA2_H
 			  # include <sha2.h>
 			  #endif
-			  #ifdef HAVE_MINIX_SHA2_H
-			  # include <minix/sha2.h>
-			  #endif
 "
 if test "x$ac_cv_type_CC_SHA256_CTX" = xyes; then :
   
@@ -18375,7 +18515,7 @@
 @%:@define HAVE_CC_SHA256_CTX 1
 _ACEOF
 
-
+sha256_type_found=yes
 fi
 ac_fn_c_check_type "$LINENO" "SHA256_CTX" "ac_cv_type_SHA256_CTX" "#ifdef HAVE_SYS_TYPES_H
 			  # include <sys/types.h>
@@ -18389,9 +18529,6 @@
 			  #ifdef HAVE_SHA2_H
 			  # include <sha2.h>
 			  #endif
-			  #ifdef HAVE_MINIX_SHA2_H
-			  # include <minix/sha2.h>
-			  #endif
 "
 if test "x$ac_cv_type_SHA256_CTX" = xyes; then :
   
@@ -18399,7 +18536,7 @@
 @%:@define HAVE_SHA256_CTX 1
 _ACEOF
 
-
+sha256_type_found=yes
 fi
 ac_fn_c_check_type "$LINENO" "SHA2_CTX" "ac_cv_type_SHA2_CTX" "#ifdef HAVE_SYS_TYPES_H
 			  # include <sys/types.h>
@@ -18413,9 +18550,6 @@
 			  #ifdef HAVE_SHA2_H
 			  # include <sha2.h>
 			  #endif
-			  #ifdef HAVE_MINIX_SHA2_H
-			  # include <minix/sha2.h>
-			  #endif
 "
 if test "x$ac_cv_type_SHA2_CTX" = xyes; then :
   
@@ -18423,66 +18557,11 @@
 @%:@define HAVE_SHA2_CTX 1
 _ACEOF
 
-
+sha256_type_found=yes
 fi
 
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256_Init" >&5
-$as_echo_n "checking for library containing SHA256_Init... " >&6; }
-if ${ac_cv_search_SHA256_Init+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char SHA256_Init ();
-int
-main ()
-{
-return SHA256_Init ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' md util; 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
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_SHA256_Init=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_SHA256_Init+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_SHA256_Init+:} false; then :
-  
-else
-  ac_cv_search_SHA256_Init=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256_Init" >&5
-$as_echo "$ac_cv_search_SHA256_Init" >&6; }
-ac_res=$ac_cv_search_SHA256_Init
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256Init" >&5
+		if test "x$sha256_type_found" = xyes ; then
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256Init" >&5
 $as_echo_n "checking for library containing SHA256Init... " >&6; }
 if ${ac_cv_search_SHA256Init+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18538,7 +18617,63 @@
   
 fi
 
-		for ac_func in CC_SHA256_Init SHA256_Init SHA256Init
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256_Init" >&5
+$as_echo_n "checking for library containing SHA256_Init... " >&6; }
+if ${ac_cv_search_SHA256_Init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char SHA256_Init ();
+int
+main ()
+{
+return SHA256_Init ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' md; 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
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_SHA256_Init=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_SHA256_Init+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_SHA256_Init+:} false; then :
+  
+else
+  ac_cv_search_SHA256_Init=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256_Init" >&5
+$as_echo "$ac_cv_search_SHA256_Init" >&6; }
+ac_res=$ac_cv_search_SHA256_Init
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+  
+fi
+
+			for ac_func in CC_SHA256_Init SHA256Init SHA256_Init
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -18546,15 +18681,14 @@
   cat >>confdefs.h <<_ACEOF
 @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
- break
+ sha256_func_found=yes ; break
 fi
 done
 
+		fi
 	fi
 fi
- if test "x$ac_cv_func_SHA256_Init" != xyes \
-		&& test "x$ac_cv_func_SHA256Init" != xyes \
-		&& test "x$ac_cv_func_CC_SHA256_Init" != xyes; then
+ if test "x$sha256_func_found" = xno; then
   COND_INTERNAL_SHA256_TRUE=
   COND_INTERNAL_SHA256_FALSE='#'
 else
@@ -18562,6 +18696,9 @@
   COND_INTERNAL_SHA256_FALSE=
 fi
 
+if test "x$enable_external_sha256$sha256_func_found" = xyesno; then
+	as_fn_error $? "--enable-external-sha256 was specified but no supported external SHA-256 implementation was found" "$LINENO" 5
+fi
 
 # Check for SSE2 intrinsics.
 ac_fn_c_check_decl "$LINENO" "_mm_movemask_epi8" "ac_cv_have_decl__mm_movemask_epi8" "#ifdef HAVE_IMMINTRIN_H
@@ -18575,6 +18712,143 @@
 fi
 
 
+# Check for sandbox support. If one is found, set enable_sandbox=found.
+case $enable_sandbox in
+	auto | capsicum)
+		
+# On FreeBSD >= 11.x and Linux, Capsicum is uses <sys/capsicum.h>.
+# If this header is found, it is assumed to be the right one.
+capsicum_header_found=no
+for ac_header in sys/capsicum.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/capsicum.h" "ac_cv_header_sys_capsicum_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_capsicum_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_SYS_CAPSICUM_H 1
+_ACEOF
+ capsicum_header_found=yes
+fi
+
+done
+
+if test "$capsicum_header_found" = no ; then
+    # On FreeBSD 10.x Capsicum uses <sys/capability.h>. Such a header exists
+    # on Linux too but it describes POSIX.1e capabilities. Look for the
+    # declaration of cap_rights_limit to check if <sys/capability.h> is
+    # a Capsicum header.
+    ac_fn_c_check_decl "$LINENO" "cap_rights_limit" "ac_cv_have_decl_cap_rights_limit" "#include <sys/capability.h>
+"
+if test "x$ac_cv_have_decl_cap_rights_limit" = xyes; then :
+  capsicum_header_found=yes
+fi
+
+fi
+
+capsicum_lib_found=no
+CAPSICUM_LIB=
+if test "$capsicum_header_found" = yes ; then
+    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
+
+    # FreeBSD >= 10.x has Capsicum functions in libc.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cap_rights_limit ();
+int
+main ()
+{
+return cap_rights_limit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  capsicum_lib_found=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    # Linux has Capsicum functions in libcaprights.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cap_rights_limit in -lcaprights" >&5
+$as_echo_n "checking for cap_rights_limit in -lcaprights... " >&6; }
+if ${ac_cv_lib_caprights_cap_rights_limit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcaprights  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cap_rights_limit ();
+int
+main ()
+{
+return cap_rights_limit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_caprights_cap_rights_limit=yes
+else
+  ac_cv_lib_caprights_cap_rights_limit=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_caprights_cap_rights_limit" >&5
+$as_echo "$ac_cv_lib_caprights_cap_rights_limit" >&6; }
+if test "x$ac_cv_lib_caprights_cap_rights_limit" = xyes; then :
+  CAPSICUM_LIB=-lcaprights
+                  capsicum_lib_found=yes
+fi
+
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test "$capsicum_lib_found" = yes ; then
+    
+$as_echo "@%:@define HAVE_CAPSICUM 1" >>confdefs.h
+
+    enable_sandbox=found
+else
+    :
+fi
+		;;
+esac
+
+# If a specific sandboxing method was explicitly requested and it wasn't
+# found, give an error.
+case $enable_sandbox in
+	auto | no | found)
+		;;
+	*)
+		as_fn_error $? "$enable_sandbox support not found" "$LINENO" 5
+		;;
+esac
+
 
 ###############################################################################
 # If using GCC, set some additional AM_CFLAGS:
@@ -18893,6 +19167,10 @@
 LTLIBOBJS=$ac_ltlibobjs
 
 
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${COND_W32_TRUE}" && test -z "${COND_W32_FALSE}"; then
   as_fn_error $? "conditional \"COND_W32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19535,7 +19813,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by XZ Utils $as_me 5.2.2, which was
+This file was extended by XZ Utils $as_me 5.2.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -19602,7 +19880,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-XZ Utils config.status 5.2.2
+XZ Utils config.status 5.2.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -19721,7 +19999,7 @@
 #
 # INIT-COMMANDS
 #
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
 
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
@@ -20711,29 +20989,35 @@
   # Older Autoconf 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
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  case $CONFIG_FILES in @%:@(
+  *\'*) :
+    eval set x "$CONFIG_FILES" ;; @%:@(
+  *) :
+    set x $CONFIG_FILES ;; @%:@(
+  *) :
+     ;;
+esac
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_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
+    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$am_mf" : 'X\(//\)[^/]' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -20751,53 +21035,48 @@
 	    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"`
-    # 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'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+    am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)[^/].*/{
+	  /^X\/\(\/\/\)$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
+	  /^X\/\(\/\).*/{
 	    s//\1/
 	    q
 	  }
 	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    { echo "$as_me:$LINENO: cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles" >&5
+   (cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+  { am_dirpart=; unset am_dirpart;}
+  { am_filepart=; unset am_filepart;}
+  { am_mf=; unset am_mf;}
+  { am_rc=; unset am_rc;}
+  rm -f conftest-deps.mk
 }
  ;;
     "libtool":C) 
diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1
index 107ce37..0323a5d 100644
--- a/autom4te.cache/output.1
+++ b/autom4te.cache/output.1
@@ -707,7 +707,6 @@
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
-am__quote
 am__include
 DEPDIR
 OBJEXT
@@ -856,6 +855,9 @@
 build_vendor
 build_cpu
 build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
 target_alias
 host_alias
 build_alias
@@ -875,6 +877,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -893,10 +896,12 @@
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_maintainer_mode
 enable_debug
 enable_encoders
 enable_decoders
@@ -982,6 +987,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1234,6 +1240,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1371,7 +1386,7 @@
 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
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1524,6 +1539,7 @@
   --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]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1562,6 +1578,9 @@
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode 
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
   --enable-debug          Enable debugging code.
   --enable-encoders=LIST  Comma-separated list of encoders to build.
                           Default=all. Available encoders: lzma1 lzma2 delta
@@ -2947,6 +2966,29 @@
 ac_config_headers="$ac_config_headers config.h"
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    @%:@ Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+  
+
+
 echo
 echo "$PACKAGE_STRING"
 
@@ -4246,7 +4288,7 @@
 # http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354
 # The -Wno-unsupported is used to silence warnings about missing
 # "subdir-objects".
-am__api_version='1.14'
+am__api_version='1.16'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -4418,8 +4460,8 @@
 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`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -4438,7 +4480,7 @@
 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\	*)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -4762,12 +4804,12 @@
 
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
@@ -4814,7 +4856,7 @@
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -4824,6 +4866,7 @@
     as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
   fi
 fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
@@ -4840,45 +4883,45 @@
 
 ac_config_commands="$ac_config_commands depfiles"
 
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
 am__doit:
-	@echo this is the am__doit target
+	@echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  case $?:`cat confinc.out 2>/dev/null` in @%:@(
+  '0:this is the am__doit target') :
+    case $s in @%:@(
+  BSD) :
+    am__include='.include' am__quote='"' ;; @%:@(
+  *) :
+    am__include='include' am__quote='' ;;
+esac ;; @%:@(
+  *) :
      ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
 
 @%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
@@ -19124,6 +19167,10 @@
 LTLIBOBJS=$ac_ltlibobjs
 
 
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${COND_W32_TRUE}" && test -z "${COND_W32_FALSE}"; then
   as_fn_error $? "conditional \"COND_W32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19952,7 +19999,7 @@
 #
 # INIT-COMMANDS
 #
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
 
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
@@ -20942,29 +20989,35 @@
   # Older Autoconf 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
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  case $CONFIG_FILES in @%:@(
+  *\'*) :
+    eval set x "$CONFIG_FILES" ;; @%:@(
+  *) :
+    set x $CONFIG_FILES ;; @%:@(
+  *) :
+     ;;
+esac
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_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
+    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$am_mf" : 'X\(//\)[^/]' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -20982,53 +21035,48 @@
 	    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"`
-    # 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'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+    am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)[^/].*/{
+	  /^X\/\(\/\/\)$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
+	  /^X\/\(\/\).*/{
 	    s//\1/
 	    q
 	  }
 	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    { echo "$as_me:$LINENO: cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles" >&5
+   (cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+  { am_dirpart=; unset am_dirpart;}
+  { am_filepart=; unset am_filepart;}
+  { am_mf=; unset am_mf;}
+  { am_rc=; unset am_rc;}
+  rm -f conftest-deps.mk
 }
  ;;
     "libtool":C) 
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
index d960597..bb88774 100644
--- a/autom4te.cache/requests
+++ b/autom4te.cache/requests
@@ -1,4 +1,4 @@
-# This file was generated by Autom4te Thu Apr 10 10:06:43 UTC 2014.
+# This file was generated by Autom4te Mon Oct 30 20:59:34 UTC 2017.
 # It contains the lists of macros which have been traced.
 # It can be safely removed.
 
@@ -11,331 +11,70 @@
                       ],
                       [
                         '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        '-',
-                        '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
-                        '/usr/share/aclocal/argz.m4',
-                        '/usr/share/aclocal/ltdl.m4',
-                        '/usr/share/aclocal-1.14/amversion.m4',
-                        '/usr/share/aclocal-1.14/as.m4',
-                        '/usr/share/aclocal-1.14/auxdir.m4',
-                        '/usr/share/aclocal-1.14/cond.m4',
-                        '/usr/share/aclocal-1.14/depend.m4',
-                        '/usr/share/aclocal-1.14/depout.m4',
-                        '/usr/share/aclocal-1.14/init.m4',
-                        '/usr/share/aclocal-1.14/install-sh.m4',
-                        '/usr/share/aclocal-1.14/lead-dot.m4',
-                        '/usr/share/aclocal-1.14/make.m4',
-                        '/usr/share/aclocal-1.14/missing.m4',
-                        '/usr/share/aclocal-1.14/mkdirp.m4',
-                        '/usr/share/aclocal-1.14/options.m4',
-                        '/usr/share/aclocal-1.14/prog-cc-c-o.m4',
-                        '/usr/share/aclocal-1.14/runlog.m4',
-                        '/usr/share/aclocal-1.14/sanity.m4',
-                        '/usr/share/aclocal-1.14/silent.m4',
-                        '/usr/share/aclocal-1.14/strip.m4',
-                        '/usr/share/aclocal-1.14/substnot.m4',
-                        '/usr/share/aclocal-1.14/tar.m4',
-                        'm4/ax_pthread.m4',
-                        'm4/codeset.m4',
-                        'm4/fcntl-o.m4',
-                        'm4/getopt.m4',
-                        'm4/gettext.m4',
-                        'm4/glibc2.m4',
-                        'm4/glibc21.m4',
-                        'm4/iconv.m4',
-                        'm4/intdiv0.m4',
-                        'm4/intl.m4',
-                        'm4/intlmacosx.m4',
-                        'm4/intmax.m4',
-                        'm4/inttypes-pri.m4',
-                        'm4/inttypes_h.m4',
-                        'm4/lcmessage.m4',
-                        'm4/lib-ld.m4',
-                        'm4/lib-link.m4',
-                        'm4/lib-prefix.m4',
-                        'm4/libtool.m4',
-                        'm4/lock.m4',
-                        'm4/longlong.m4',
-                        'm4/ltoptions.m4',
-                        'm4/ltsugar.m4',
-                        'm4/ltversion.m4',
-                        'm4/lt~obsolete.m4',
-                        'm4/nls.m4',
-                        'm4/po.m4',
-                        'm4/posix-shell.m4',
-                        'm4/printf-posix.m4',
-                        'm4/progtest.m4',
-                        'm4/size_max.m4',
-                        'm4/stdint_h.m4',
-                        'm4/threadlib.m4',
-                        'm4/tuklib_common.m4',
-                        'm4/tuklib_cpucores.m4',
-                        'm4/tuklib_integer.m4',
-                        'm4/tuklib_mbstr.m4',
-                        'm4/tuklib_physmem.m4',
-                        'm4/tuklib_progname.m4',
-                        'm4/uintmax_t.m4',
-                        'm4/visibility.m4',
-                        'm4/wchar_t.m4',
-                        'm4/wint_t.m4',
-                        'm4/xsize.m4',
+                        'aclocal.m4',
                         'configure.ac'
                       ],
                       {
-                        'TUKLIB_MBSTR' => 1,
-                        'AM_ICONV_LINK' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
-                        '_LT_PROG_ECHO_BACKSLASH' => 1,
-                        'ACX_PTHREAD' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
-                        'gl_THREADLIB' => 1,
-                        'LT_SYS_DLOPEN_SELF' => 1,
-                        'gt_LC_MESSAGES' => 1,
-                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
-                        'gl_GETOPT_CHECK_HEADERS' => 1,
-                        '_LT_PROG_LTMAIN' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
-                        'AC_LTDL_DLSYM_USCORE' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        'gl_LOCK' => 1,
-                        'LT_SYS_DLSEARCH_PATH' => 1,
-                        'AX_PTHREAD' => 1,
-                        'AM_LANGINFO_CODESET' => 1,
-                        'AC_LTDL_SYMBOL_USCORE' => 1,
-                        'AC_LIB_ARG_WITH' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'AC_LIB_PREFIX' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'TUKLIB_CPUCORES' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        '_LTDL_SETUP' => 1,
-                        'AM_GNU_GETTEXT_NEED' => 1,
-                        'AC_ENABLE_SHARED' => 1,
-                        'AC_LTDL_ENABLE_INSTALL' => 1,
-                        '_LT_AC_LANG_F77' => 1,
-                        'AM_PO_SUBDIRS' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        'AM_GNU_GETTEXT_VERSION' => 1,
-                        'AM_PROG_LD' => 1,
-                        'LT_PROG_RC' => 1,
-                        'gt_TYPE_WINT_T' => 1,
-                        'TUKLIB_PROGNAME' => 1,
-                        '_LT_AC_FILE_LTDLL_C' => 1,
-                        'AC_ENABLE_FAST_INSTALL' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'gl_GETOPT' => 1,
-                        'gl_GETOPT_IFELSE' => 1,
-                        'AM_ICONV' => 1,
-                        'AC_LIB_LINKFLAGS_BODY' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        '_LT_COMPILER_BOILERPLATE' => 1,
-                        'gl_VISIBILITY' => 1,
-                        'LT_OUTPUT' => 1,
-                        'AC_PROG_LD_GNU' => 1,
-                        'AC_LIBTOOL_PICMODE' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AM_ICONV_LINKFLAGS_BODY' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        'gl_DISABLE_THREADS' => 1,
-                        'gl_GETOPT_SUBSTITUTE_HEADER' => 1,
-                        'gt_GLIBC2' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        'LTDL_INSTALLABLE' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
-                        'LTDL_INIT' => 1,
-                        'LT_INIT' => 1,
-                        'AM_PROG_NM' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AC_LIB_RPATH' => 1,
-                        'AC_' => 1,
-                        'gt_TYPE_INTMAX_T' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
-                        '_LT_CC_BASENAME' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
-                        'AM_PATH_PROG_WITH_TEST' => 1,
-                        'LTDL_CONVENIENCE' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
                         'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_LIB_APPENDTOVAR' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
-                        'LT_PATH_NM' => 1,
+                        'AM_PROG_AR' => 1,
+                        'LT_INIT' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
                         'AC_PROG_LIBTOOL' => 1,
-                        'LT_AC_PROG_SED' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_LTDL_OBJDIR' => 1,
-                        '_LT_LINKER_OPTION' => 1,
-                        'gl_SIZE_MAX' => 1,
-                        'AM_XGETTEXT_OPTION_INIT' => 1,
-                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        '_LT_PROG_FC' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
-                        'AC_COMPUTE_INT' => 1,
-                        'gt_INTL_SUBDIR_CORE' => 1,
-                        '_LT_PATH_TOOL_PREFIX' => 1,
-                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
-                        'AM_PROG_AS' => 1,
-                        'LT_LIB_M' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        'LT_SYS_MODULE_EXT' => 1,
-                        'AC_DISABLE_STATIC' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'gl_XSIZE' => 1,
-                        'AC_LIB_PREPARE_PREFIX' => 1,
-                        'LT_LIB_DLLOAD' => 1,
-                        'LT_LANG' => 1,
-                        'AC_LIBTOOL_LINKER_OPTION' => 1,
-                        '_LT_AC_LOCK' => 1,
-                        'AC_LIB_LTDL' => 1,
                         'include' => 1,
-                        'LTSUGAR_VERSION' => 1,
-                        'AC_LIB_FROMPACKAGE' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
-                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'AC_WITH_LTDL' => 1,
-                        'gl_AC_HEADER_INTTYPES_H' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AC_LTDL_SHLIBEXT' => 1,
-                        '_LT_WITH_SYSROOT' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        'AC_PROG_LD_RELOAD_FLAG' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_LTDL_DLLIB' => 1,
-                        'AM_ENABLE_STATIC' => 1,
-                        'LT_AC_PROG_GCJ' => 1,
-                        'gt_INTTYPES_PRI' => 1,
-                        '_LT_PROG_F77' => 1,
-                        'AC_LIB_PREPARE_MULTILIB' => 1,
-                        'gt_PRINTF_POSIX' => 1,
-                        'gl_PREREQ_LOCK' => 1,
-                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        '_LT_LIBOBJ' => 1,
-                        'AC_LIB_HAVE_LINKFLAGS' => 1,
-                        'gl_FUNC_ARGZ' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'gl_AC_HEADER_STDINT_H' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
-                        'AM_DEP_TRACK' => 1,
-                        'gl_GETOPT_SUBSTITUTE' => 1,
-                        'AC_PATH_TOOL_PREFIX' => 1,
-                        '_LT_AC_PROG_CXXCPP' => 1,
-                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'AC_LIBTOOL_RC' => 1,
-                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'LT_AC_PROG_RC' => 1,
-                        'gt_CHECK_DECL' => 1,
-                        'TUKLIB_PHYSMEM' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
-                        '_AC_TYPE_LONG_LONG_SNIPPET' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'LT_FUNC_DLSYM_USCORE' => 1,
-                        '_LT_COMPILER_OPTION' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
-                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        'AC_ENABLE_STATIC' => 1,
-                        'LT_SYS_MODULE_PATH' => 1,
-                        'gl_FCNTL_O_FLAGS' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        '_LT_PROG_CXX' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'gl_AC_TYPE_UINTMAX_T' => 1,
-                        'gl_THREADLIB_BODY' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        'gl_GLIBC21' => 1,
-                        'm4_include' => 1,
-                        'LT_SYS_SYMBOL_USCORE' => 1,
-                        'AC_LIBTOOL_F77' => 1,
-                        'TUKLIB_INTEGER' => 1,
-                        '_m4_warn' => 1,
-                        'AC_LIBTOOL_GCJ' => 1,
-                        'AC_LIB_PROG_LD' => 1,
-                        'LT_PATH_LD' => 1,
-                        'AC_LIBTOOL_SETUP' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'gl_THREADLIB_EARLY' => 1,
-                        'AC_LTDL_SHLIBPATH' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        'AC_DEFUN' => 1,
-                        'TUKLIB_COMMON' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_LIBTOOL_FC' => 1,
-                        'gl_PREREQ_ARGZ' => 1,
-                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
-                        'AC_PROG_LD' => 1,
-                        'gt_TYPE_WCHAR_T' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_LIB_LINKFLAGS' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        '_AC_PROG_LIBTOOL' => 1,
-                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        'AM_NLS' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'gl_THREADLIB_EARLY_BODY' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
-                        'AC_PATH_MAGIC' => 1,
-                        'LT_CMD_MAX_LEN' => 1,
-                        'gt_INTDIV0' => 1,
-                        'gt_INTL_MACOSX' => 1,
-                        'AC_TYPE_LONG_LONG_INT' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
-                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        'AM_INTL_SUBDIR' => 1,
-                        'LT_PROG_GO' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'AU_DEFUN' => 1,
-                        'AC_LIBTOOL_CXX' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_MAKEFILE_INCLUDE' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
                         'AM_PROG_LIBTOOL' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        'LT_WITH_LTDL' => 1,
-                        '_AM_PROG_CC_C_O' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_PROG_NM' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        '_LT_AC_SYS_COMPILER' => 1,
-                        'AC_LIB_PROG_LD_GNU' => 1,
-                        '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        'AC_LTDL_SYSSEARCHPATH' => 1,
-                        '_LT_AC_CHECK_DLFCN' => 1,
+                        '_m4_warn' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AC_FC_PP_DEFINE' => 1,
+                        'AC_FC_PP_SRCEXT' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'sinclude' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AM_NLS' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'AC_SUBST' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_SUBST_TRACE' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'm4_include' => 1,
+                        'AM_PROG_F77_C_O' => 1,
+                        'AM_PROG_MOC' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'm4_sinclude' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_POT_TOOLS' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AC_INIT' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
                         'AM_XGETTEXT_OPTION' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        'gl_POSIX_SHELL' => 1,
-                        'AC_LIBTOOL_DLOPEN' => 1,
-                        'm4_pattern_allow' => 1
+                        'm4_pattern_forbid' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -346,101 +85,31 @@
                       ],
                       [
                         '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        'aclocal.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        'AM_PROG_MOC' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_LIBSOURCE' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'LT_INIT' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'AC_INIT' => 1,
-                        'AM_MAKEFILE_INCLUDE' => 1,
-                        'AH_OUTPUT' => 1,
-                        'include' => 1,
-                        'm4_include' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'm4_sinclude' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        'AM_PATH_GUILE' => 1,
-                        '_m4_warn' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        '_AM_COND_ENDIF' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        'AM_NLS' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        '_AM_COND_IF' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_SUBST' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        'AM_PROG_FC_C_O' => 1,
-                        'AC_FC_PP_DEFINE' => 1,
-                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
-                        'AC_SUBST_TRACE' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'sinclude' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AM_PROG_F77_C_O' => 1,
-                        'AM_GNU_GETTEXT' => 1
-                      }
-                    ], 'Autom4te::Request' ),
-             bless( [
-                      '2',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
                         '-',
-                        '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
-                        '/usr/share/aclocal-1.14/amversion.m4',
-                        '/usr/share/aclocal-1.14/as.m4',
-                        '/usr/share/aclocal-1.14/auxdir.m4',
-                        '/usr/share/aclocal-1.14/cond.m4',
-                        '/usr/share/aclocal-1.14/depend.m4',
-                        '/usr/share/aclocal-1.14/depout.m4',
-                        '/usr/share/aclocal-1.14/init.m4',
-                        '/usr/share/aclocal-1.14/install-sh.m4',
-                        '/usr/share/aclocal-1.14/lead-dot.m4',
-                        '/usr/share/aclocal-1.14/make.m4',
-                        '/usr/share/aclocal-1.14/missing.m4',
-                        '/usr/share/aclocal-1.14/mkdirp.m4',
-                        '/usr/share/aclocal-1.14/options.m4',
-                        '/usr/share/aclocal-1.14/prog-cc-c-o.m4',
-                        '/usr/share/aclocal-1.14/runlog.m4',
-                        '/usr/share/aclocal-1.14/sanity.m4',
-                        '/usr/share/aclocal-1.14/silent.m4',
-                        '/usr/share/aclocal-1.14/strip.m4',
-                        '/usr/share/aclocal-1.14/substnot.m4',
-                        '/usr/share/aclocal-1.14/tar.m4',
+                        '/usr/share/aclocal-1.16/internal/ac-config-macro-dirs.m4',
+                        '/usr/share/aclocal/ltargz.m4',
+                        '/usr/share/aclocal/ltdl.m4',
+                        '/usr/share/aclocal-1.16/amversion.m4',
+                        '/usr/share/aclocal-1.16/as.m4',
+                        '/usr/share/aclocal-1.16/auxdir.m4',
+                        '/usr/share/aclocal-1.16/cond.m4',
+                        '/usr/share/aclocal-1.16/depend.m4',
+                        '/usr/share/aclocal-1.16/depout.m4',
+                        '/usr/share/aclocal-1.16/init.m4',
+                        '/usr/share/aclocal-1.16/install-sh.m4',
+                        '/usr/share/aclocal-1.16/lead-dot.m4',
+                        '/usr/share/aclocal-1.16/maintainer.m4',
+                        '/usr/share/aclocal-1.16/make.m4',
+                        '/usr/share/aclocal-1.16/missing.m4',
+                        '/usr/share/aclocal-1.16/mkdirp.m4',
+                        '/usr/share/aclocal-1.16/options.m4',
+                        '/usr/share/aclocal-1.16/prog-cc-c-o.m4',
+                        '/usr/share/aclocal-1.16/runlog.m4',
+                        '/usr/share/aclocal-1.16/sanity.m4',
+                        '/usr/share/aclocal-1.16/silent.m4',
+                        '/usr/share/aclocal-1.16/strip.m4',
+                        '/usr/share/aclocal-1.16/substnot.m4',
+                        '/usr/share/aclocal-1.16/tar.m4',
                         'm4/ax_check_capsicum.m4',
                         'm4/ax_pthread.m4',
                         'm4/codeset.m4',
@@ -489,234 +158,261 @@
                         'configure.ac'
                       ],
                       {
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
-                        'include' => 1,
-                        'AC_LIB_FROMPACKAGE' => 1,
-                        'LTSUGAR_VERSION' => 1,
-                        'LT_LANG' => 1,
-                        '_LT_AC_LOCK' => 1,
-                        'AC_LIBTOOL_LINKER_OPTION' => 1,
-                        'AC_LIB_PREPARE_PREFIX' => 1,
-                        '_LT_PROG_F77' => 1,
-                        'AC_LIB_PREPARE_MULTILIB' => 1,
-                        'gt_INTTYPES_PRI' => 1,
-                        'LT_AC_PROG_GCJ' => 1,
-                        'AM_ENABLE_STATIC' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_PROG_LD_RELOAD_FLAG' => 1,
-                        '_LT_WITH_SYSROOT' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        'gl_AC_HEADER_INTTYPES_H' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AX_CHECK_CAPSICUM' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
-                        'LT_PATH_NM' => 1,
-                        'LT_AC_PROG_SED' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_LIB_APPENDTOVAR' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
-                        'AM_PATH_PROG_WITH_TEST' => 1,
-                        '_LT_CC_BASENAME' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
-                        'AC_DISABLE_STATIC' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'gl_XSIZE' => 1,
-                        'LT_LIB_M' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        '_LT_PATH_TOOL_PREFIX' => 1,
-                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
-                        'AM_PROG_AS' => 1,
-                        'AC_COMPUTE_INT' => 1,
-                        'gt_INTL_SUBDIR_CORE' => 1,
-                        '_LT_PROG_FC' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
-                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        'gl_SIZE_MAX' => 1,
-                        '_LT_LINKER_OPTION' => 1,
-                        'AC_LTDL_OBJDIR' => 1,
-                        'AM_XGETTEXT_OPTION_INIT' => 1,
-                        'gl_GETOPT_IFELSE' => 1,
-                        'AM_ICONV' => 1,
-                        'gl_GETOPT' => 1,
-                        '_LT_AC_FILE_LTDLL_C' => 1,
-                        'TUKLIB_PROGNAME' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AC_ENABLE_FAST_INSTALL' => 1,
-                        'AM_GNU_GETTEXT_VERSION' => 1,
-                        'AM_PROG_LD' => 1,
-                        'gt_TYPE_WINT_T' => 1,
-                        'LT_PROG_RC' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        'AC_LTDL_ENABLE_INSTALL' => 1,
-                        'AM_PO_SUBDIRS' => 1,
-                        '_LT_AC_LANG_F77' => 1,
-                        'AC_LIB_RPATH' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'gt_TYPE_INTMAX_T' => 1,
-                        'AC_' => 1,
-                        'LT_INIT' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        'AM_PROG_NM' => 1,
-                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        'gl_DISABLE_THREADS' => 1,
-                        'gl_GETOPT_SUBSTITUTE_HEADER' => 1,
-                        'gt_GLIBC2' => 1,
-                        'AM_ICONV_LINKFLAGS_BODY' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        'gl_VISIBILITY' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AC_PROG_LD_GNU' => 1,
-                        'LT_OUTPUT' => 1,
-                        'AC_LIBTOOL_PICMODE' => 1,
-                        'AC_LIB_LINKFLAGS_BODY' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        '_LT_COMPILER_BOILERPLATE' => 1,
-                        'gl_GETOPT_CHECK_HEADERS' => 1,
-                        'gt_LC_MESSAGES' => 1,
-                        'LT_SYS_DLOPEN_SELF' => 1,
-                        'gl_THREADLIB' => 1,
-                        'ACX_PTHREAD' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        '_LT_PROG_ECHO_BACKSLASH' => 1,
-                        'TUKLIB_MBSTR' => 1,
-                        'AM_ICONV_LINK' => 1,
-                        'AM_GNU_GETTEXT_NEED' => 1,
-                        'AC_ENABLE_SHARED' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        'TUKLIB_CPUCORES' => 1,
-                        'AC_LIB_PREFIX' => 1,
-                        'AC_LIB_ARG_WITH' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_LANGINFO_CODESET' => 1,
-                        'AX_PTHREAD' => 1,
-                        'gl_LOCK' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        '_LT_PROG_LTMAIN' => 1,
-                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
-                        '_AM_PROG_CC_C_O' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        'gl_POSIX_SHELL' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        'AC_LIBTOOL_DLOPEN' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        '_LT_AC_CHECK_DLFCN' => 1,
-                        '_LT_AC_SYS_COMPILER' => 1,
-                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        'AC_LIB_PROG_LD_GNU' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        'AC_PROG_NM' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        '_AC_PROG_LIBTOOL' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_LIB_LINKFLAGS' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
-                        'gt_TYPE_WCHAR_T' => 1,
-                        'AC_PROG_LD' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'AU_DEFUN' => 1,
-                        'AC_LIBTOOL_CXX' => 1,
-                        'LT_PROG_GO' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        'AM_INTL_SUBDIR' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
-                        'AC_TYPE_LONG_LONG_INT' => 1,
-                        'gt_INTDIV0' => 1,
-                        'LT_CMD_MAX_LEN' => 1,
-                        'gt_INTL_MACOSX' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'AC_PATH_MAGIC' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
-                        'gl_THREADLIB_EARLY_BODY' => 1,
-                        'AM_NLS' => 1,
-                        '_m4_warn' => 1,
-                        'AC_LIBTOOL_GCJ' => 1,
-                        'TUKLIB_INTEGER' => 1,
-                        'AC_LIBTOOL_F77' => 1,
-                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        'm4_include' => 1,
-                        'gl_GLIBC21' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        'gl_THREADLIB_BODY' => 1,
-                        'gl_AC_TYPE_UINTMAX_T' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_LIBTOOL_FC' => 1,
-                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
-                        'TUKLIB_COMMON' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        'AC_DEFUN' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'gl_THREADLIB_EARLY' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'LT_PATH_LD' => 1,
-                        'AC_LIBTOOL_SETUP' => 1,
-                        'AC_LIB_PROG_LD' => 1,
-                        'gl_AC_HEADER_STDINT_H' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'AC_LIB_HAVE_LINKFLAGS' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'gl_PREREQ_LOCK' => 1,
-                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
-                        'gt_PRINTF_POSIX' => 1,
-                        'gl_FCNTL_O_FLAGS' => 1,
-                        '_LT_PROG_CXX' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
                         '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        'AC_ENABLE_STATIC' => 1,
-                        '_LT_COMPILER_OPTION' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
+                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'ACX_PTHREAD' => 1,
+                        'gt_TYPE_INTMAX_T' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'AC_LIB_FROMPACKAGE' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'gl_VISIBILITY' => 1,
+                        'TUKLIB_COMMON' => 1,
+                        'LT_LIB_M' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        'gl_LOCK' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        'gl_THREADLIB_EARLY_BODY' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AM_GNU_GETTEXT_NEED' => 1,
+                        'AC_PROG_LD' => 1,
+                        'LT_INIT' => 1,
+                        'include' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        'gl_XSIZE' => 1,
+                        'gl_GETOPT_SUBSTITUTE_HEADER' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'LTDL_INIT' => 1,
+                        'gl_DISABLE_THREADS' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'gl_PREREQ_LOCK' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'gl_AC_HEADER_INTTYPES_H' => 1,
+                        'AX_PTHREAD' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        'AM_PROG_AS' => 1,
+                        'AC_PROG_NM' => 1,
+                        'AX_CHECK_CAPSICUM' => 1,
+                        'AC_LIB_HAVE_LINKFLAGS' => 1,
+                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'AC_LIB_PROG_LD' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'AM_XGETTEXT_OPTION_INIT' => 1,
+                        'AM_PATH_PROG_WITH_TEST' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AC_LIB_ARG_WITH' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        'gl_SIZE_MAX' => 1,
+                        'AC_LIB_PREFIX' => 1,
+                        'gl_THREADLIB_BODY' => 1,
+                        'LT_PROG_RC' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        'AM_ICONV_LINKFLAGS_BODY' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AM_ICONV_LINK' => 1,
                         'TUKLIB_PHYSMEM' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
                         '_AC_TYPE_LONG_LONG_SNIPPET' => 1,
-                        'LT_AC_PROG_RC' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        'gl_AC_HEADER_STDINT_H' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        'LT_PATH_LD' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AC_LIB_LINKFLAGS_BODY' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'gl_THREADLIB_EARLY' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'AM_PROG_LD' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'AM_NLS' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'gt_LC_MESSAGES' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
                         'gt_CHECK_DECL' => 1,
                         'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'AC_LIBTOOL_RC' => 1,
-                        'AC_PATH_TOOL_PREFIX' => 1,
-                        '_LT_AC_PROG_CXXCPP' => 1,
-                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AM_PROG_NM' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'gl_GETOPT_IFELSE' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'TUKLIB_MBSTR' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        'gt_INTL_SUBDIR_CORE' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'gl_FCNTL_O_FLAGS' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'gl_THREADLIB' => 1,
+                        'LT_PROG_GO' => 1,
+                        'm4_include' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
                         'AM_DEP_TRACK' => 1,
-                        'gl_GETOPT_SUBSTITUTE' => 1
+                        'AC_LIBTOOL_F77' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'gt_GLIBC2' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        'gl_GETOPT_CHECK_HEADERS' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        'AM_LANGINFO_CODESET' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'TUKLIB_CPUCORES' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AM_INTL_SUBDIR' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        'AC_COMPUTE_INT' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        '_m4_warn' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        'gt_PRINTF_POSIX' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'gt_TYPE_WCHAR_T' => 1,
+                        'AC_LIB_PROG_LD_GNU' => 1,
+                        'gl_GETOPT_SUBSTITUTE' => 1,
+                        'AM_PO_SUBDIRS' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'AC_LIB_PREPARE_MULTILIB' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'm4_pattern_allow' => 1,
+                        'LT_OUTPUT' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        'AC_DEFUN' => 1,
+                        '_LTDL_SETUP' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AC_LIB_RPATH' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'AM_ICONV' => 1,
+                        'gt_INTTYPES_PRI' => 1,
+                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
+                        'LT_LANG' => 1,
+                        'AC_LIB_LINKFLAGS' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        'gl_POSIX_SHELL' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        'AC_TYPE_LONG_LONG_INT' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'gt_INTL_MACOSX' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        'AM_GNU_GETTEXT_VERSION' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_' => 1,
+                        'gl_GETOPT' => 1,
+                        'TUKLIB_INTEGER' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'TUKLIB_PROGNAME' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'AC_LIB_PREPARE_PREFIX' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AC_LIB_APPENDTOVAR' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'gl_GLIBC21' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        '_LT_PROG_FC' => 1,
+                        'gt_TYPE_WINT_T' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        'LT_FUNC_ARGZ' => 1,
+                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
+                        'gl_AC_TYPE_UINTMAX_T' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'gt_INTDIV0' => 1,
+                        'AU_DEFUN' => 1
                       }
                     ], 'Autom4te::Request' )
            );
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
index 30ffbe3..11b4df1 100644
--- a/autom4te.cache/traces.0
+++ b/autom4te.cache/traces.0
@@ -1,6138 +1,32 @@
-m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
-
-AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
-
-AC_CHECK_TYPES([error_t],
-  [],
-  [AC_DEFINE([error_t], [int],
-   [Define to a type to use for `error_t' if it is not otherwise available.])
-   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
-    does not typedef error_t.])],
-  [#if defined(HAVE_ARGZ_H)
-#  include <argz.h>
-#endif])
-
-ARGZ_H=
-AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
-	argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
-
-dnl if have system argz functions, allow forced use of
-dnl libltdl-supplied implementation (and default to do so
-dnl on "known bad" systems). Could use a runtime check, but
-dnl (a) detecting malloc issues is notoriously unreliable
-dnl (b) only known system that declares argz functions,
-dnl     provides them, yet they are broken, is cygwin
-dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
-dnl So, it's more straightforward simply to special case
-dnl this for known bad systems.
-AS_IF([test -z "$ARGZ_H"],
-    [AC_CACHE_CHECK(
-        [if argz actually works],
-        [lt_cv_sys_argz_works],
-        [[case $host_os in #(
-	 *cygwin*)
-	   lt_cv_sys_argz_works=no
-	   if test "$cross_compiling" != no; then
-	     lt_cv_sys_argz_works="guessing no"
-	   else
-	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
-	     save_IFS=$IFS
-	     IFS=-.
-	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
-	     IFS=$save_IFS
-	     lt_os_major=${2-0}
-	     lt_os_minor=${3-0}
-	     lt_os_micro=${4-0}
-	     if test "$lt_os_major" -gt 1 \
-		|| { test "$lt_os_major" -eq 1 \
-		  && { test "$lt_os_minor" -gt 5 \
-		    || { test "$lt_os_minor" -eq 5 \
-		      && test "$lt_os_micro" -gt 24; }; }; }; then
-	       lt_cv_sys_argz_works=yes
-	     fi
-	   fi
-	   ;; #(
-	 *) lt_cv_sys_argz_works=yes ;;
-	 esac]])
-     AS_IF([test "$lt_cv_sys_argz_works" = yes],
-        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
-                   [This value is set to 1 to indicate that the system argz facility works])],
-        [ARGZ_H=argz.h
-        AC_LIBOBJ([argz])])])
-
-AC_SUBST([ARGZ_H])
-])
-m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
-m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
-_$0($*)
-])
-m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
-dnl Although the argument is deprecated and no longer documented,
-dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
-dnl here make sure it is the same as any other declaration of libltdl's
-dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
-dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
-m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
-_$0()
-])
-m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_CONVENIENCE])
-m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
-You should run autoupdate.])dnl
-_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_CONVENIENCE])
-m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
-dnl Although the argument is deprecated and no longer documented,
-dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
-dnl here make sure it is the same as any other declaration of libltdl's
-dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
-dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
-m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
-_$0()
-])
-m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_INSTALLABLE])
-m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
-You should run autoupdate.])dnl
-_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_INSTALLABLE])
-m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
-  m4_pattern_allow([^_LT_LIBOBJS$])
-  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
-])
-m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-dnl We need to keep our own list of libobjs separate from our parent project,
-dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
-dnl we look for our own LIBOBJs.
-m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
-m4_pushdef([AC_LIBSOURCES])
-
-dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
-m4_if(_LTDL_MODE, [],
-        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
-        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
-                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
-
-AC_ARG_WITH([included_ltdl],
-    [AS_HELP_STRING([--with-included-ltdl],
-                    [use the GNU ltdl sources included here])])
-
-if test "x$with_included_ltdl" != xyes; then
-  # We are not being forced to use the included libltdl sources, so
-  # decide whether there is a useful installed version we can use.
-  AC_CHECK_HEADER([ltdl.h],
-      [AC_CHECK_DECL([lt_dlinterface_register],
-	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
-	       [with_included_ltdl=no],
-	       [with_included_ltdl=yes])],
-	   [with_included_ltdl=yes],
-	   [AC_INCLUDES_DEFAULT
-	    #include <ltdl.h>])],
-      [with_included_ltdl=yes],
-      [AC_INCLUDES_DEFAULT]
-  )
-fi
-
-dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
-dnl was called yet, then for old times' sake, we assume libltdl is in an
-dnl eponymous directory:
-AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
-
-AC_ARG_WITH([ltdl_include],
-    [AS_HELP_STRING([--with-ltdl-include=DIR],
-                    [use the ltdl headers installed in DIR])])
-
-if test -n "$with_ltdl_include"; then
-  if test -f "$with_ltdl_include/ltdl.h"; then :
-  else
-    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
-  fi
-else
-  with_ltdl_include=no
-fi
-
-AC_ARG_WITH([ltdl_lib],
-    [AS_HELP_STRING([--with-ltdl-lib=DIR],
-                    [use the libltdl.la installed in DIR])])
-
-if test -n "$with_ltdl_lib"; then
-  if test -f "$with_ltdl_lib/libltdl.la"; then :
-  else
-    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
-  fi
-else
-  with_ltdl_lib=no
-fi
-
-case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
-  ,yes,no,no,)
-	m4_case(m4_default(_LTDL_TYPE, [convenience]),
-	    [convenience], [_LTDL_CONVENIENCE],
-	    [installable], [_LTDL_INSTALLABLE],
-	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
-	;;
-  ,no,no,no,)
-	# If the included ltdl is not to be used, then use the
-	# preinstalled libltdl we found.
-	AC_DEFINE([HAVE_LTDL], [1],
-	  [Define this if a modern libltdl is already installed])
-	LIBLTDL=-lltdl
-	LTDLDEPS=
-	LTDLINCL=
-	;;
-  ,no*,no,*)
-	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
-	;;
-  *)	with_included_ltdl=no
-	LIBLTDL="-L$with_ltdl_lib -lltdl"
-	LTDLDEPS=
-	LTDLINCL="-I$with_ltdl_include"
-	;;
-esac
-INCLTDL="$LTDLINCL"
-
-# Report our decision...
-AC_MSG_CHECKING([where to find libltdl headers])
-AC_MSG_RESULT([$LTDLINCL])
-AC_MSG_CHECKING([where to find libltdl library])
-AC_MSG_RESULT([$LIBLTDL])
-
-_LTDL_SETUP
-
-dnl restore autoconf definition.
-m4_popdef([AC_LIBOBJ])
-m4_popdef([AC_LIBSOURCES])
-
-AC_CONFIG_COMMANDS_PRE([
-    _ltdl_libobjs=
-    _ltdl_ltlibobjs=
-    if test -n "$_LT_LIBOBJS"; then
-      # Remove the extension.
-      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
-      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
-        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
-        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
-      done
-    fi
-    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
-    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
-])
-
-# Only expand once:
-m4_define([LTDL_INIT])
-])
-m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
-You should run autoupdate.])dnl
-LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
-You should run autoupdate.])dnl
-LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
-You should run autoupdate.])dnl
-LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
-AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
-AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
-AC_REQUIRE([LT_LIB_DLLOAD])dnl
-AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
-AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
-AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
-AC_REQUIRE([gl_FUNC_ARGZ])dnl
-
-m4_require([_LT_CHECK_OBJDIR])dnl
-m4_require([_LT_HEADER_DLFCN])dnl
-m4_require([_LT_CHECK_DLPREOPEN])dnl
-m4_require([_LT_DECL_SED])dnl
-
-dnl Don't require this, or it will be expanded earlier than the code
-dnl that sets the variables it relies on:
-_LT_ENABLE_INSTALL
-
-dnl _LTDL_MODE specific code must be called at least once:
-_LTDL_MODE_DISPATCH
-
-# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
-# the user used.  This is so that ltdl.h can pick up the parent projects
-# config.h file, The first file in AC_CONFIG_HEADERS must contain the
-# definitions required by ltdl.c.
-# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
-AC_CONFIG_COMMANDS_PRE([dnl
-m4_pattern_allow([^LT_CONFIG_H$])dnl
-m4_ifset([AH_HEADER],
-    [LT_CONFIG_H=AH_HEADER],
-    [m4_ifset([AC_LIST_HEADERS],
-	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
-	[])])])
-AC_SUBST([LT_CONFIG_H])
-
-AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
-	[], [], [AC_INCLUDES_DEFAULT])
-
-AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
-AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
-
-m4_pattern_allow([LT_LIBEXT])dnl
-AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
-
-name=
-eval "lt_libprefix=\"$libname_spec\""
-m4_pattern_allow([LT_LIBPREFIX])dnl
-AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
-
-name=ltdl
-eval "LTDLOPEN=\"$libname_spec\""
-AC_SUBST([LTDLOPEN])
-])
-m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
-  [lt_cv_sys_dlopen_deplibs],
-  [# PORTME does your system automatically load deplibs for dlopen?
-  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
-  # For now, we just catch OSes we know something about -- in the
-  # future, we'll try test this programmatically.
-  lt_cv_sys_dlopen_deplibs=unknown
-  case $host_os in
-  aix3*|aix4.1.*|aix4.2.*)
-    # Unknown whether this is true for these versions of AIX, but
-    # we want this `case' here to explicitly catch those versions.
-    lt_cv_sys_dlopen_deplibs=unknown
-    ;;
-  aix[[4-9]]*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  amigaos*)
-    case $host_cpu in
-    powerpc)
-      lt_cv_sys_dlopen_deplibs=no
-      ;;
-    esac
-    ;;
-  darwin*)
-    # Assuming the user has installed a libdl from somewhere, this is true
-    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  freebsd* | dragonfly*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
-    # GNU and its variants, using gnu ld.so (Glibc)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  hpux10*|hpux11*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  interix*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  irix[[12345]]*|irix6.[[01]]*)
-    # Catch all versions of IRIX before 6.2, and indicate that we don't
-    # know how it worked for any of those versions.
-    lt_cv_sys_dlopen_deplibs=unknown
-    ;;
-  irix*)
-    # The case above catches anything before 6.2, and it's known that
-    # at 6.2 and later dlopen does load deplibs.
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  netbsd* | netbsdelf*-gnu)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  openbsd*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  osf[[1234]]*)
-    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
-    # it did *not* use an RPATH in a shared library to find objects the
-    # library depends on, so we explicitly say `no'.
-    lt_cv_sys_dlopen_deplibs=no
-    ;;
-  osf5.0|osf5.0a|osf5.1)
-    # dlopen *does* load deplibs and with the right loader patch applied
-    # it even uses RPATH in a shared library to search for shared objects
-    # that the library depends on, but there's no easy way to know if that
-    # patch is installed.  Since this is the case, all we can really
-    # say is unknown -- it depends on the patch being installed.  If
-    # it is, this changes to `yes'.  Without it, it would be `no'.
-    lt_cv_sys_dlopen_deplibs=unknown
-    ;;
-  osf*)
-    # the two cases above should catch all versions of osf <= 5.1.  Read
-    # the comments above for what we know about them.
-    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
-    # is used to find them so we can finally say `yes'.
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  qnx*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  solaris*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-    libltdl_cv_sys_dlopen_deplibs=yes
-    ;;
-  esac
-  ])
-if test "$lt_cv_sys_dlopen_deplibs" != yes; then
- AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
-    [Define if the OS needs help to load dependent libraries for dlopen().])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
-AC_CACHE_CHECK([which extension is used for runtime loadable modules],
-  [libltdl_cv_shlibext],
-[
-module=yes
-eval libltdl_cv_shlibext=$shrext_cmds
-module=no
-eval libltdl_cv_shrext=$shrext_cmds
-  ])
-if test -n "$libltdl_cv_shlibext"; then
-  m4_pattern_allow([LT_MODULE_EXT])dnl
-  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
-    [Define to the extension used for runtime loadable modules, say, ".so".])
-fi
-if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
-  m4_pattern_allow([LT_SHARED_EXT])dnl
-  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
-    [Define to the shared library suffix, say, ".dylib".])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
-AC_CACHE_CHECK([which variable specifies run-time module search path],
-  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
-if test -n "$lt_cv_module_path_var"; then
-  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
-  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
-    [Define to the name of the environment variable that determines the run-time module search path.])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
-AC_CACHE_CHECK([for the default library search path],
-  [lt_cv_sys_dlsearch_path],
-  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
-if test -n "$lt_cv_sys_dlsearch_path"; then
-  sys_dlsearch_path=
-  for dir in $lt_cv_sys_dlsearch_path; do
-    if test -z "$sys_dlsearch_path"; then
-      sys_dlsearch_path="$dir"
-    else
-      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
-    fi
-  done
-  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
-  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
-    [Define to the system default library search path.])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
-LT_DLLOADERS=
-AC_SUBST([LT_DLLOADERS])
-
-AC_LANG_PUSH([C])
-
-LIBADD_DLOPEN=
-AC_SEARCH_LIBS([dlopen], [dl],
-	[AC_DEFINE([HAVE_LIBDL], [1],
-		   [Define if you have the libdl library or equivalent.])
-	if test "$ac_cv_search_dlopen" != "none required" ; then
-	  LIBADD_DLOPEN="-ldl"
-	fi
-	libltdl_cv_lib_dl_dlopen="yes"
-	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
-    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
-#  include <dlfcn.h>
-#endif
-    ]], [[dlopen(0, 0);]])],
-	    [AC_DEFINE([HAVE_LIBDL], [1],
-		       [Define if you have the libdl library or equivalent.])
-	    libltdl_cv_func_dlopen="yes"
-	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
-	[AC_CHECK_LIB([svld], [dlopen],
-		[AC_DEFINE([HAVE_LIBDL], [1],
-			 [Define if you have the libdl library or equivalent.])
-	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
-		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
-if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
-then
-  lt_save_LIBS="$LIBS"
-  LIBS="$LIBS $LIBADD_DLOPEN"
-  AC_CHECK_FUNCS([dlerror])
-  LIBS="$lt_save_LIBS"
-fi
-AC_SUBST([LIBADD_DLOPEN])
-
-LIBADD_SHL_LOAD=
-AC_CHECK_FUNC([shl_load],
-	[AC_DEFINE([HAVE_SHL_LOAD], [1],
-		   [Define if you have the shl_load function.])
-	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
-    [AC_CHECK_LIB([dld], [shl_load],
-	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
-		       [Define if you have the shl_load function.])
-	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
-	    LIBADD_SHL_LOAD="-ldld"])])
-AC_SUBST([LIBADD_SHL_LOAD])
-
-case $host_os in
-darwin[[1567]].*)
-# We only want this for pre-Mac OS X 10.4.
-  AC_CHECK_FUNC([_dyld_func_lookup],
-	[AC_DEFINE([HAVE_DYLD], [1],
-		   [Define if you have the _dyld_func_lookup function.])
-	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
-  ;;
-beos*)
-  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
-  ;;
-cygwin* | mingw* | os2* | pw32*)
-  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
-  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
-  ;;
-esac
-
-AC_CHECK_LIB([dld], [dld_link],
-	[AC_DEFINE([HAVE_DLD], [1],
-		   [Define if you have the GNU dld library.])
-		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
-AC_SUBST([LIBADD_DLD_LINK])
-
-m4_pattern_allow([^LT_DLPREOPEN$])
-LT_DLPREOPEN=
-if test -n "$LT_DLLOADERS"
-then
-  for lt_loader in $LT_DLLOADERS; do
-    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
-  done
-  AC_DEFINE([HAVE_LIBDLLOADER], [1],
-            [Define if libdlloader will be built on this platform])
-fi
-AC_SUBST([LT_DLPREOPEN])
-
-dnl This isn't used anymore, but set it for backwards compatibility
-LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
-AC_SUBST([LIBADD_DL])
-
-AC_LANG_POP
-])
-m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-AC_CACHE_CHECK([for _ prefix in compiled symbols],
-  [lt_cv_sys_symbol_underscore],
-  [lt_cv_sys_symbol_underscore=no
-  cat > conftest.$ac_ext <<_LT_EOF
-void nm_test_func(){}
-int main(){nm_test_func;return 0;}
-_LT_EOF
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    ac_nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
-      # See whether the symbols have a leading underscore.
-      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
-        lt_cv_sys_symbol_underscore=yes
-      else
-        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
-	  :
-        else
-	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
-        fi
-      fi
-    else
-      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.c >&AS_MESSAGE_LOG_FD
-  fi
-  rm -rf conftest*
-  ])
-  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
-  AC_SUBST([sys_symbol_underscore])
-])
-m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
-if test x"$lt_cv_sys_symbol_underscore" = xyes; then
-  if test x"$libltdl_cv_func_dlopen" = xyes ||
-     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
-	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
-	  [libltdl_cv_need_uscore],
-	  [libltdl_cv_need_uscore=unknown
-          save_LIBS="$LIBS"
-          LIBS="$LIBS $LIBADD_DLOPEN"
-	  _LT_TRY_DLOPEN_SELF(
-	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
-	    [],				 [libltdl_cv_need_uscore=cross])
-	  LIBS="$save_LIBS"
-	])
-  fi
-fi
-
-if test x"$libltdl_cv_need_uscore" = xyes; then
-  AC_DEFINE([NEED_USCORE], [1],
-    [Define if dlsym() requires a leading underscore in symbol names.])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
-m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14'
-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.14.1], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-m4trace:/usr/share/aclocal-1.14/as.m4:11: -1- AC_DEFUN([AM_PROG_AS], [# By default we simply use the C compiler to build assembly code.
-AC_REQUIRE([AC_PROG_CC])
-test "${CCAS+set}" = set || CCAS=$CC
-test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
-AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
-AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
-_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
-])
-m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
-  # Older Autoconf 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"`
-    # 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'`; 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
-}
-])
-m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi])
-m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-m4trace:/usr/share/aclocal-1.14/mkdirp.m4:11: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl FIXME we are no longer going to remove this! adjust warning
-dnl FIXME message accordingly.
-AC_DIAGNOSE([obsolete],
-[$0: this macro is deprecated, and will soon be removed.
-You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
-and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.])
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
-m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-])
-m4trace:m4/ax_pthread.m4:87: -1- AU_DEFUN([ACX_PTHREAD], [m4_if($#, 0, [AX_PTHREAD], [AX_PTHREAD($@)])])
-m4trace:m4/ax_pthread.m4:87: -1- AC_DEFUN([ACX_PTHREAD], [AC_DIAGNOSE([obsolete], [The macro `ACX_PTHREAD' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [AX_PTHREAD], [AX_PTHREAD($@)])])
-m4trace:m4/ax_pthread.m4:88: -1- AC_DEFUN([AX_PTHREAD], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-AC_LANG_PUSH([C])
-ax_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
-        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
-        AC_MSG_RESULT([$ax_pthread_ok])
-        if test x"$ax_pthread_ok" = xno; then
-                PTHREAD_LIBS=""
-                PTHREAD_CFLAGS=""
-        fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case ${host_os} in
-        solaris*)
-
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
-
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
-        ;;
-esac
-
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
-
-AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
-                  [AC_MSG_RESULT([yes])],
-                  [ax_pthread_extra_flags=
-                   AC_MSG_RESULT([no])])
-CFLAGS="$save_CFLAGS"
-
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
-
-        case $flag in
-                none)
-                AC_MSG_CHECKING([whether pthreads work without any flags])
-                ;;
-
-                -*)
-                AC_MSG_CHECKING([whether pthreads work with $flag])
-                PTHREAD_CFLAGS="$flag"
-                ;;
-
-                pthread-config)
-                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
-                if test x"$ax_pthread_config" = xno; then continue; fi
-                PTHREAD_CFLAGS="`pthread-config --cflags`"
-                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-                ;;
-
-                *)
-                AC_MSG_CHECKING([for the pthreads library -l$flag])
-                PTHREAD_LIBS="-l$flag"
-                ;;
-        esac
-
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
-
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
-                        static void routine(void *a) { a = 0; }
-                        static void *start_routine(void *a) { return a; }],
-                       [pthread_t th; pthread_attr_t attr;
-                        pthread_create(&th, 0, start_routine, 0);
-                        pthread_join(th, 0);
-                        pthread_attr_init(&attr);
-                        pthread_cleanup_push(routine, 0);
-                        pthread_cleanup_pop(0) /* ; */])],
-                [ax_pthread_ok=yes],
-                [])
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        AC_MSG_RESULT([$ax_pthread_ok])
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
-
-        PTHREAD_LIBS=""
-        PTHREAD_CFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        AC_MSG_CHECKING([for joinable pthread attribute])
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
-                           [int attr = $attr; return attr /* ; */])],
-                [attr_name=$attr; break],
-                [])
-        done
-        AC_MSG_RESULT([$attr_name])
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
-                               [Define to necessary symbol if this constant
-                                uses a non-standard name on your system.])
-        fi
-
-        AC_MSG_CHECKING([if more special flags are required for pthreads])
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                # TODO: What about Clang on Solaris?
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        AC_MSG_RESULT([$flag])
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
-
-        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
-            [ax_cv_PTHREAD_PRIO_INHERIT], [
-                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
-                                                [[int i = PTHREAD_PRIO_INHERIT;]])],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
-            ])
-        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
-            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != xyes; then
-            case $host_os in
-                aix*)
-                AS_CASE(["x/$CC"],
-                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
-                  [#handle absolute path differently from PATH based program lookup
-                   AS_CASE(["x$CC"],
-                     [x/*],
-                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
-                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
-                ;;
-            esac
-        fi
-fi
-
-test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
-
-AC_SUBST([PTHREAD_LIBS])
-AC_SUBST([PTHREAD_CFLAGS])
-AC_SUBST([PTHREAD_CC])
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
-        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
-        :
-else
-        ax_pthread_ok=no
-        $2
-fi
-AC_LANG_POP
-])
-m4trace:m4/codeset.m4:9: -1- AC_DEFUN([AM_LANGINFO_CODESET], [
-  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
-    [AC_TRY_LINK([#include <langinfo.h>],
-      [char* cs = nl_langinfo(CODESET); return !cs;],
-      [am_cv_langinfo_codeset=yes],
-      [am_cv_langinfo_codeset=no])
-    ])
-  if test $am_cv_langinfo_codeset = yes; then
-    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
-      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
-  fi
-])
-m4trace:m4/fcntl-o.m4:12: -1- AC_DEFUN([gl_FCNTL_O_FLAGS], [
-  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-  AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
-    [AC_RUN_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <sys/types.h>
-           #include <sys/stat.h>
-           #include <unistd.h>
-           #include <fcntl.h>
-           #ifndef O_NOATIME
-            #define O_NOATIME 0
-           #endif
-           #ifndef O_NOFOLLOW
-            #define O_NOFOLLOW 0
-           #endif
-           static int const constants[] =
-            {
-              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
-              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
-            };
-          ]],
-          [[
-            int status = !constants;
-            {
-              static char const sym[] = "conftest.sym";
-              if (symlink (".", sym) != 0
-                  || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
-                status |= 32;
-              unlink (sym);
-            }
-            {
-              static char const file[] = "confdefs.h";
-              int fd = open (file, O_RDONLY | O_NOATIME);
-              char c;
-              struct stat st0, st1;
-              if (fd < 0
-                  || fstat (fd, &st0) != 0
-                  || sleep (1) != 0
-                  || read (fd, &c, 1) != 1
-                  || close (fd) != 0
-                  || stat (file, &st1) != 0
-                  || st0.st_atime != st1.st_atime)
-                status |= 64;
-            }
-            return status;]])],
-       [gl_cv_header_working_fcntl_h=yes],
-       [case $? in #(
-        32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
-        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
-        96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
-         *) gl_cv_header_working_fcntl_h='no';;
-        esac],
-       [gl_cv_header_working_fcntl_h=cross-compiling])])
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
-    [Define to 1 if O_NOATIME works.])
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
-    [Define to 1 if O_NOFOLLOW works.])
-])
-m4trace:m4/getopt.m4:11: -1- AC_DEFUN([gl_GETOPT_SUBSTITUTE], [
-  AC_LIBOBJ([getopt])
-  AC_LIBOBJ([getopt1])
-  gl_GETOPT_SUBSTITUTE_HEADER
-])
-m4trace:m4/getopt.m4:18: -1- AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [
-  GETOPT_H=getopt.h
-  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
-    [Define to rpl_ if the getopt replacement functions and variables
-     should be used.])
-  AC_SUBST([GETOPT_H])
-])
-m4trace:m4/getopt.m4:27: -1- AC_DEFUN([gl_GETOPT_CHECK_HEADERS], [
-  if test -z "$GETOPT_H"; then
-    AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
-  fi
-
-  if test -z "$GETOPT_H"; then
-    AC_CHECK_FUNCS([getopt_long], [], [GETOPT_H=getopt.h])
-  fi
-
-  dnl BSD getopt_long uses a way to reset option processing, that is different
-  dnl from GNU and Solaris (which copied the GNU behavior). We support both
-  dnl GNU and BSD style resetting of getopt_long(), so there's no need to use
-  dnl GNU getopt_long() on BSD due to different resetting style.
-  dnl
-  dnl With getopt_long(), some BSD versions have a bug in handling optional
-  dnl arguments. This bug appears only if the environment variable
-  dnl POSIXLY_CORRECT has been set, so it shouldn't be too bad in most
-  dnl cases; probably most don't have that variable set. But if we actually
-  dnl hit this bug, it is a real problem due to our heavy use of optional
-  dnl arguments.
-  dnl
-  dnl According to CVS logs, the bug was introduced in OpenBSD in 2003-09-22
-  dnl and copied to FreeBSD in 2004-02-24. It was fixed in both in 2006-09-22,
-  dnl so the affected versions shouldn't be popular anymore anyway. NetBSD
-  dnl never had this bug. TODO: What about Darwin and others?
-  if test -z "$GETOPT_H"; then
-    AC_CHECK_DECL([optreset],
-      [AC_DEFINE([HAVE_OPTRESET], 1,
-        [Define to 1 if getopt.h declares extern int optreset.])],
-      [], [#include <getopt.h>])
-  fi
-
-  dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
-  dnl option string (as of 2005-05-05). We don't use that feature, so this
-  dnl is not a problem for us. Thus, the respective test was removed here.
-])
-m4trace:m4/getopt.m4:65: -1- AC_DEFUN([gl_GETOPT_IFELSE], [
-  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
-  AS_IF([test -n "$GETOPT_H"], [$1], [$2])
-])
-m4trace:m4/getopt.m4:71: -1- AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
-m4trace:m4/gettext.m4:57: -1- AC_DEFUN([AM_GNU_GETTEXT], [
-  dnl Argument checking.
-  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
-    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
-  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
-    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
-  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
-    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
-  define([gt_included_intl],
-    ifelse([$1], [external],
-      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
-      [yes]))
-  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
-  gt_NEEDS_INIT
-  AM_GNU_GETTEXT_NEED([$2])
-
-  AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  ifelse(gt_included_intl, yes, [
-    AC_REQUIRE([AM_INTL_SUBDIR])dnl
-  ])
-
-  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-
-  dnl Sometimes libintl requires libiconv, so first search for libiconv.
-  dnl Ideally we would do this search only after the
-  dnl      if test "$USE_NLS" = "yes"; then
-  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
-  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
-  dnl the configure script would need to contain the same shell code
-  dnl again, outside any 'if'. There are two solutions:
-  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
-  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
-  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
-  dnl documented, we avoid it.
-  ifelse(gt_included_intl, yes, , [
-    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-  ])
-
-  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
-  gt_INTL_MACOSX
-
-  dnl Set USE_NLS.
-  AC_REQUIRE([AM_NLS])
-
-  ifelse(gt_included_intl, yes, [
-    BUILD_INCLUDED_LIBINTL=no
-    USE_INCLUDED_LIBINTL=no
-  ])
-  LIBINTL=
-  LTLIBINTL=
-  POSUB=
-
-  dnl Add a version number to the cache macros.
-  case " $gt_needs " in
-    *" need-formatstring-macros "*) gt_api_version=3 ;;
-    *" need-ngettext "*) gt_api_version=2 ;;
-    *) gt_api_version=1 ;;
-  esac
-  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
-  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
-
-  dnl If we use NLS figure out what method
-  if test "$USE_NLS" = "yes"; then
-    gt_use_preinstalled_gnugettext=no
-    ifelse(gt_included_intl, yes, [
-      AC_MSG_CHECKING([whether included gettext is requested])
-      AC_ARG_WITH([included-gettext],
-        [  --with-included-gettext use the GNU gettext library included here],
-        nls_cv_force_use_gnu_gettext=$withval,
-        nls_cv_force_use_gnu_gettext=no)
-      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
-
-      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-    ])
-        dnl User does not insist on using GNU NLS library.  Figure out what
-        dnl to use.  If GNU gettext is available we use this.  Else we have
-        dnl to fall back to GNU NLS library.
-
-        if test $gt_api_version -ge 3; then
-          gt_revision_test_code='
-#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-'
-        else
-          gt_revision_test_code=
-        fi
-        if test $gt_api_version -ge 2; then
-          gt_expression_test_code=' + * ngettext ("", "", 0)'
-        else
-          gt_expression_test_code=
-        fi
-
-        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
-         [AC_TRY_LINK([#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
-            [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
-            [eval "$gt_func_gnugettext_libc=yes"],
-            [eval "$gt_func_gnugettext_libc=no"])])
-
-        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
-          dnl Sometimes libintl requires libiconv, so first search for libiconv.
-          ifelse(gt_included_intl, yes, , [
-            AM_ICONV_LINK
-          ])
-          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
-          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
-          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
-          dnl even if libiconv doesn't exist.
-          AC_LIB_LINKFLAGS_BODY([intl])
-          AC_CACHE_CHECK([for GNU gettext in libintl],
-            [$gt_func_gnugettext_libintl],
-           [gt_save_CPPFLAGS="$CPPFLAGS"
-            CPPFLAGS="$CPPFLAGS $INCINTL"
-            gt_save_LIBS="$LIBS"
-            LIBS="$LIBS $LIBINTL"
-            dnl Now see whether libintl exists and does not depend on libiconv.
-            AC_TRY_LINK([#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);],
-              [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
-              [eval "$gt_func_gnugettext_libintl=yes"],
-              [eval "$gt_func_gnugettext_libintl=no"])
-            dnl Now see whether libintl exists and depends on libiconv.
-            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
-              LIBS="$LIBS $LIBICONV"
-              AC_TRY_LINK([#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);],
-                [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
-               [LIBINTL="$LIBINTL $LIBICONV"
-                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                eval "$gt_func_gnugettext_libintl=yes"
-               ])
-            fi
-            CPPFLAGS="$gt_save_CPPFLAGS"
-            LIBS="$gt_save_LIBS"])
-        fi
-
-        dnl If an already present or preinstalled GNU gettext() is found,
-        dnl use it.  But if this macro is used in GNU gettext, and GNU
-        dnl gettext is already preinstalled in libintl, we update this
-        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
-        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
-           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
-                && test "$PACKAGE" != gettext-runtime \
-                && test "$PACKAGE" != gettext-tools; }; then
-          gt_use_preinstalled_gnugettext=yes
-        else
-          dnl Reset the values set by searching for libintl.
-          LIBINTL=
-          LTLIBINTL=
-          INCINTL=
-        fi
-
-    ifelse(gt_included_intl, yes, [
-        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
-          dnl GNU gettext is not found in the C library.
-          dnl Fall back on included GNU gettext library.
-          nls_cv_use_gnu_gettext=yes
-        fi
-      fi
-
-      if test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Mark actions used to generate GNU NLS library.
-        BUILD_INCLUDED_LIBINTL=yes
-        USE_INCLUDED_LIBINTL=yes
-        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
-        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
-        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
-      fi
-
-      CATOBJEXT=
-      if test "$gt_use_preinstalled_gnugettext" = "yes" \
-         || test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Mark actions to use GNU gettext tools.
-        CATOBJEXT=.gmo
-      fi
-    ])
-
-    if test -n "$INTL_MACOSX_LIBS"; then
-      if test "$gt_use_preinstalled_gnugettext" = "yes" \
-         || test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Some extra flags are needed during linking.
-        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
-        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
-      fi
-    fi
-
-    if test "$gt_use_preinstalled_gnugettext" = "yes" \
-       || test "$nls_cv_use_gnu_gettext" = "yes"; then
-      AC_DEFINE([ENABLE_NLS], [1],
-        [Define to 1 if translation of program messages to the user's native language
-   is requested.])
-    else
-      USE_NLS=no
-    fi
-  fi
-
-  AC_MSG_CHECKING([whether to use NLS])
-  AC_MSG_RESULT([$USE_NLS])
-  if test "$USE_NLS" = "yes"; then
-    AC_MSG_CHECKING([where the gettext function comes from])
-    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
-        gt_source="external libintl"
-      else
-        gt_source="libc"
-      fi
-    else
-      gt_source="included intl directory"
-    fi
-    AC_MSG_RESULT([$gt_source])
-  fi
-
-  if test "$USE_NLS" = "yes"; then
-
-    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
-        AC_MSG_CHECKING([how to link with libintl])
-        AC_MSG_RESULT([$LIBINTL])
-        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
-      fi
-
-      dnl For backward compatibility. Some packages may be using this.
-      AC_DEFINE([HAVE_GETTEXT], [1],
-       [Define if the GNU gettext() function is already present or preinstalled.])
-      AC_DEFINE([HAVE_DCGETTEXT], [1],
-       [Define if the GNU dcgettext() function is already present or preinstalled.])
-    fi
-
-    dnl We need to process the po/ directory.
-    POSUB=po
-  fi
-
-  ifelse(gt_included_intl, yes, [
-    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
-    dnl to 'yes' because some of the testsuite requires it.
-    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
-      BUILD_INCLUDED_LIBINTL=yes
-    fi
-
-    dnl Make all variables we use known to autoconf.
-    AC_SUBST([BUILD_INCLUDED_LIBINTL])
-    AC_SUBST([USE_INCLUDED_LIBINTL])
-    AC_SUBST([CATOBJEXT])
-
-    dnl For backward compatibility. Some configure.ins may be using this.
-    nls_cv_header_intl=
-    nls_cv_header_libgt=
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    DATADIRNAME=share
-    AC_SUBST([DATADIRNAME])
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    INSTOBJEXT=.mo
-    AC_SUBST([INSTOBJEXT])
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    GENCAT=gencat
-    AC_SUBST([GENCAT])
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    INTLOBJS=
-    if test "$USE_INCLUDED_LIBINTL" = yes; then
-      INTLOBJS="\$(GETTOBJS)"
-    fi
-    AC_SUBST([INTLOBJS])
-
-    dnl Enable libtool support if the surrounding package wishes it.
-    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
-    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
-  ])
-
-  dnl For backward compatibility. Some Makefiles may be using this.
-  INTLLIBS="$LIBINTL"
-  AC_SUBST([INTLLIBS])
-
-  dnl Make all documented variables known to autoconf.
-  AC_SUBST([LIBINTL])
-  AC_SUBST([LTLIBINTL])
-  AC_SUBST([POSUB])
-])
-m4trace:m4/gettext.m4:376: -1- AC_DEFUN([AM_GNU_GETTEXT_NEED], [
-  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
-])
-m4trace:m4/gettext.m4:383: -1- AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
-m4trace:m4/glibc2.m4:10: -1- AC_DEFUN([gt_GLIBC2], [
-    AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
-      [ac_cv_gnu_library_2],
-      [AC_EGREP_CPP([Lucky GNU user],
-        [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2)
-  Lucky GNU user
- #endif
-#endif
-        ],
-        [ac_cv_gnu_library_2=yes],
-        [ac_cv_gnu_library_2=no])
-      ]
-    )
-    AC_SUBST([GLIBC2])
-    GLIBC2="$ac_cv_gnu_library_2"
-  
-])
-m4trace:m4/glibc21.m4:10: -1- AC_DEFUN([gl_GLIBC21], [
-    AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
-      [ac_cv_gnu_library_2_1],
-      [AC_EGREP_CPP([Lucky GNU user],
-        [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-        ],
-        [ac_cv_gnu_library_2_1=yes],
-        [ac_cv_gnu_library_2_1=no])
-      ]
-    )
-    AC_SUBST([GLIBC21])
-    GLIBC21="$ac_cv_gnu_library_2_1"
-  
-])
-m4trace:m4/iconv.m4:9: -1- AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [
-  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-
-  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-  dnl accordingly.
-  AC_LIB_LINKFLAGS_BODY([iconv])
-])
-m4trace:m4/iconv.m4:20: -1- AC_DEFUN([AM_ICONV_LINK], [
-  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
-  dnl those with the standalone portable GNU libiconv installed).
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
-  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-  dnl accordingly.
-  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
-  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
-  dnl because if the user has installed libiconv and not disabled its use
-  dnl via --without-libiconv-prefix, he wants to use it. The first
-  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
-  am_save_CPPFLAGS="$CPPFLAGS"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
-  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
-    am_cv_func_iconv="no, consider installing GNU libiconv"
-    am_cv_lib_iconv=no
-    AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-      [iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);],
-      [am_cv_func_iconv=yes])
-    if test "$am_cv_func_iconv" != yes; then
-      am_save_LIBS="$LIBS"
-      LIBS="$LIBS $LIBICONV"
-      AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-        [iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);],
-        [am_cv_lib_iconv=yes]
-        [am_cv_func_iconv=yes])
-      LIBS="$am_save_LIBS"
-    fi
-  ])
-  if test "$am_cv_func_iconv" = yes; then
-    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
-      dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
-      am_save_LIBS="$LIBS"
-      if test $am_cv_lib_iconv = yes; then
-        LIBS="$LIBS $LIBICONV"
-      fi
-      AC_TRY_RUN([
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
-  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
-     returns.  */
-  {
-    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
-    if (cd_utf8_to_88591 != (iconv_t)(-1))
-      {
-        static const char input[] = "\342\202\254"; /* EURO SIGN */
-        char buf[10];
-        const char *inptr = input;
-        size_t inbytesleft = strlen (input);
-        char *outptr = buf;
-        size_t outbytesleft = sizeof (buf);
-        size_t res = iconv (cd_utf8_to_88591,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if (res == 0)
-          return 1;
-      }
-  }
-  /* Test against Solaris 10 bug: Failures are not distinguishable from
-     successful returns.  */
-  {
-    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
-    if (cd_ascii_to_88591 != (iconv_t)(-1))
-      {
-        static const char input[] = "\263";
-        char buf[10];
-        const char *inptr = input;
-        size_t inbytesleft = strlen (input);
-        char *outptr = buf;
-        size_t outbytesleft = sizeof (buf);
-        size_t res = iconv (cd_ascii_to_88591,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if (res == 0)
-          return 1;
-      }
-  }
-#if 0 /* This bug could be worked around by the caller.  */
-  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
-  {
-    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
-    if (cd_88591_to_utf8 != (iconv_t)(-1))
-      {
-        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
-        char buf[50];
-        const char *inptr = input;
-        size_t inbytesleft = strlen (input);
-        char *outptr = buf;
-        size_t outbytesleft = sizeof (buf);
-        size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if ((int)res > 0)
-          return 1;
-      }
-  }
-#endif
-  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
-     provided.  */
-  if (/* Try standardized names.  */
-      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
-      /* Try IRIX, OSF/1 names.  */
-      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
-      /* Try AIX names.  */
-      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
-      /* Try HP-UX names.  */
-      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
-    return 1;
-  return 0;
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
-        [case "$host_os" in
-           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
-           *)            am_cv_func_iconv_works="guessing yes" ;;
-         esac])
-      LIBS="$am_save_LIBS"
-    ])
-    case "$am_cv_func_iconv_works" in
-      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
-      *)   am_func_iconv=yes ;;
-    esac
-  else
-    am_func_iconv=no am_cv_lib_iconv=no
-  fi
-  if test "$am_func_iconv" = yes; then
-    AC_DEFINE([HAVE_ICONV], [1],
-      [Define if you have the iconv() function and it works.])
-  fi
-  if test "$am_cv_lib_iconv" = yes; then
-    AC_MSG_CHECKING([how to link with libiconv])
-    AC_MSG_RESULT([$LIBICONV])
-  else
-    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
-    dnl either.
-    CPPFLAGS="$am_save_CPPFLAGS"
-    LIBICONV=
-    LTLIBICONV=
-  fi
-  AC_SUBST([LIBICONV])
-  AC_SUBST([LTLIBICONV])
-])
-m4trace:m4/iconv.m4:173: -1- AC_DEFUN([AM_ICONV], [
-  AM_ICONV_LINK
-  if test "$am_cv_func_iconv" = yes; then
-    AC_MSG_CHECKING([for iconv declaration])
-    AC_CACHE_VAL([am_cv_proto_iconv], [
-      AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
-      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
-    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
-    AC_MSG_RESULT([
-         $am_cv_proto_iconv])
-    AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
-      [Define as const if the declaration of iconv() needs const.])
-  fi
-])
-m4trace:m4/intdiv0.m4:9: -1- AC_DEFUN([gt_INTDIV0], [
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
-  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
-    gt_cv_int_divbyzero_sigfpe,
-    [
-      gt_cv_int_divbyzero_sigfpe=
-changequote(,)dnl
-      case "$host_os" in
-        macos* | darwin[6-9]* | darwin[1-9][0-9]*)
-          # On MacOS X 10.2 or newer, just assume the same as when cross-
-          # compiling. If we were to perform the real test, 1 Crash Report
-          # dialog window would pop up.
-          case "$host_cpu" in
-            i[34567]86 | x86_64)
-              gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
-          esac
-          ;;
-      esac
-changequote([,])dnl
-      if test -z "$gt_cv_int_divbyzero_sigfpe"; then
-        AC_TRY_RUN([
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-sigfpe_handler (int sig)
-{
-  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
-  exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
-  signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
-  signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL.  */
-#if defined (__sparc__) && defined (__linux__)
-  signal (SIGILL, sigfpe_handler);
-#endif
-
-  z = x / y;
-  nan = y / y;
-  exit (1);
-}
-], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
-          [
-            # Guess based on the CPU.
-changequote(,)dnl
-            case "$host_cpu" in
-              alpha* | i[34567]86 | x86_64 | m68k | s390*)
-                gt_cv_int_divbyzero_sigfpe="guessing yes";;
-              *)
-                gt_cv_int_divbyzero_sigfpe="guessing no";;
-            esac
-changequote([,])dnl
-          ])
-      fi
-    ])
-  case "$gt_cv_int_divbyzero_sigfpe" in
-    *yes) value=1;;
-    *) value=0;;
-  esac
-  AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
-    [Define if integer division by zero raises signal SIGFPE.])
-])
-m4trace:m4/intl.m4:25: -1- AC_DEFUN([AM_INTL_SUBDIR], [
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-  AC_REQUIRE([gt_GLIBC2])dnl
-  AC_REQUIRE([AC_PROG_RANLIB])dnl
-  AC_REQUIRE([gl_VISIBILITY])dnl
-  AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
-  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
-  AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
-  AC_REQUIRE([gt_TYPE_WINT_T])dnl
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gt_TYPE_INTMAX_T])
-  AC_REQUIRE([gt_PRINTF_POSIX])
-  AC_REQUIRE([gl_GLIBC21])dnl
-  AC_REQUIRE([gl_XSIZE])dnl
-  AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
-  AC_REQUIRE([gt_INTL_MACOSX])dnl
-
-  dnl Support for automake's --enable-silent-rules.
-  case "$enable_silent_rules" in
-    yes) INTL_DEFAULT_VERBOSITY=0;;
-    no)  INTL_DEFAULT_VERBOSITY=1;;
-    *)   INTL_DEFAULT_VERBOSITY=1;;
-  esac
-  AC_SUBST([INTL_DEFAULT_VERBOSITY])
-
-  AC_CHECK_TYPE([ptrdiff_t], ,
-    [AC_DEFINE([ptrdiff_t], [long],
-       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
-    ])
-  AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
-  AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
-    snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
-
-  dnl Use the _snprintf function only if it is declared (because on NetBSD it
-  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
-  gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
-  gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
-
-  dnl Use the *_unlocked functions only if they are declared.
-  dnl (because some of them were defined without being declared in Solaris
-  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
-  dnl on Solaris 2.5.1 to run on Solaris 2.6).
-  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
-  gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
-
-  case $gt_cv_func_printf_posix in
-    *yes) HAVE_POSIX_PRINTF=1 ;;
-    *) HAVE_POSIX_PRINTF=0 ;;
-  esac
-  AC_SUBST([HAVE_POSIX_PRINTF])
-  if test "$ac_cv_func_asprintf" = yes; then
-    HAVE_ASPRINTF=1
-  else
-    HAVE_ASPRINTF=0
-  fi
-  AC_SUBST([HAVE_ASPRINTF])
-  if test "$ac_cv_func_snprintf" = yes; then
-    HAVE_SNPRINTF=1
-  else
-    HAVE_SNPRINTF=0
-  fi
-  AC_SUBST([HAVE_SNPRINTF])
-  if test "$ac_cv_func_newlocale" = yes; then
-    HAVE_NEWLOCALE=1
-  else
-    HAVE_NEWLOCALE=0
-  fi
-  AC_SUBST([HAVE_NEWLOCALE])
-  if test "$ac_cv_func_wprintf" = yes; then
-    HAVE_WPRINTF=1
-  else
-    HAVE_WPRINTF=0
-  fi
-  AC_SUBST([HAVE_WPRINTF])
-
-  AM_LANGINFO_CODESET
-  gt_LC_MESSAGES
-
-  dnl Compilation on mingw and Cygwin needs special Makefile rules, because
-  dnl 1. when we install a shared library, we must arrange to export
-  dnl    auxiliary pointer variables for every exported variable,
-  dnl 2. when we install a shared library and a static library simultaneously,
-  dnl    the include file specifies __declspec(dllimport) and therefore we
-  dnl    must arrange to define the auxiliary pointer variables for the
-  dnl    exported variables _also_ in the static library.
-  if test "$enable_shared" = yes; then
-    case "$host_os" in
-      mingw* | cygwin*) is_woe32dll=yes ;;
-      *) is_woe32dll=no ;;
-    esac
-  else
-    is_woe32dll=no
-  fi
-  WOE32DLL=$is_woe32dll
-  AC_SUBST([WOE32DLL])
-
-  dnl On mingw and Cygwin, we can activate special Makefile rules which add
-  dnl version information to the shared libraries and executables.
-  case "$host_os" in
-    mingw* | cygwin*) is_woe32=yes ;;
-    *) is_woe32=no ;;
-  esac
-  WOE32=$is_woe32
-  AC_SUBST([WOE32])
-  if test $WOE32 = yes; then
-    dnl Check for a program that compiles Windows resource files.
-    AC_CHECK_TOOL([WINDRES], [windres])
-  fi
-
-  dnl Determine whether when creating a library, "-lc" should be passed to
-  dnl libtool or not. On many platforms, it is required for the libtool option
-  dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
-  dnl in the *.la files - makes it impossible to create multithreaded programs,
-  dnl because libtool also reorders the -lc to come before the -pthread, and
-  dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
-  case "$host_os" in
-    hpux*) LTLIBC="" ;;
-    *)     LTLIBC="-lc" ;;
-  esac
-  AC_SUBST([LTLIBC])
-
-  dnl Rename some macros and functions used for locking.
-  AH_BOTTOM([
-#define __libc_lock_t                   gl_lock_t
-#define __libc_lock_define              gl_lock_define
-#define __libc_lock_define_initialized  gl_lock_define_initialized
-#define __libc_lock_init                gl_lock_init
-#define __libc_lock_lock                gl_lock_lock
-#define __libc_lock_unlock              gl_lock_unlock
-#define __libc_lock_recursive_t                   gl_recursive_lock_t
-#define __libc_lock_define_recursive              gl_recursive_lock_define
-#define __libc_lock_define_initialized_recursive  gl_recursive_lock_define_initialized
-#define __libc_lock_init_recursive                gl_recursive_lock_init
-#define __libc_lock_lock_recursive                gl_recursive_lock_lock
-#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
-#define glthread_in_use  libintl_thread_in_use
-#define glthread_lock_init_func     libintl_lock_init_func
-#define glthread_lock_lock_func     libintl_lock_lock_func
-#define glthread_lock_unlock_func   libintl_lock_unlock_func
-#define glthread_lock_destroy_func  libintl_lock_destroy_func
-#define glthread_rwlock_init_multithreaded     libintl_rwlock_init_multithreaded
-#define glthread_rwlock_init_func              libintl_rwlock_init_func
-#define glthread_rwlock_rdlock_multithreaded   libintl_rwlock_rdlock_multithreaded
-#define glthread_rwlock_rdlock_func            libintl_rwlock_rdlock_func
-#define glthread_rwlock_wrlock_multithreaded   libintl_rwlock_wrlock_multithreaded
-#define glthread_rwlock_wrlock_func            libintl_rwlock_wrlock_func
-#define glthread_rwlock_unlock_multithreaded   libintl_rwlock_unlock_multithreaded
-#define glthread_rwlock_unlock_func            libintl_rwlock_unlock_func
-#define glthread_rwlock_destroy_multithreaded  libintl_rwlock_destroy_multithreaded
-#define glthread_rwlock_destroy_func           libintl_rwlock_destroy_func
-#define glthread_recursive_lock_init_multithreaded     libintl_recursive_lock_init_multithreaded
-#define glthread_recursive_lock_init_func              libintl_recursive_lock_init_func
-#define glthread_recursive_lock_lock_multithreaded     libintl_recursive_lock_lock_multithreaded
-#define glthread_recursive_lock_lock_func              libintl_recursive_lock_lock_func
-#define glthread_recursive_lock_unlock_multithreaded   libintl_recursive_lock_unlock_multithreaded
-#define glthread_recursive_lock_unlock_func            libintl_recursive_lock_unlock_func
-#define glthread_recursive_lock_destroy_multithreaded  libintl_recursive_lock_destroy_multithreaded
-#define glthread_recursive_lock_destroy_func           libintl_recursive_lock_destroy_func
-#define glthread_once_func            libintl_once_func
-#define glthread_once_singlethreaded  libintl_once_singlethreaded
-#define glthread_once_multithreaded   libintl_once_multithreaded
-])
-])
-m4trace:m4/intl.m4:211: -1- AC_DEFUN([gt_INTL_SUBDIR_CORE], [
-  AC_REQUIRE([AC_C_INLINE])dnl
-  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-  AC_REQUIRE([AC_FUNC_MMAP])dnl
-  AC_REQUIRE([gt_INTDIV0])dnl
-  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
-  AC_REQUIRE([gt_INTTYPES_PRI])dnl
-  AC_REQUIRE([gl_LOCK])dnl
-
-  AC_TRY_LINK(
-    [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
-    [],
-    [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
-       [Define to 1 if the compiler understands __builtin_expect.])])
-
-  AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
-  AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
-    stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
-    argz_stringify argz_next __fsetlocking])
-
-  dnl Use the *_unlocked functions only if they are declared.
-  dnl (because some of them were defined without being declared in Solaris
-  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
-  dnl on Solaris 2.5.1 to run on Solaris 2.6).
-  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
-  gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
-  gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
-
-  AM_ICONV
-
-  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
-  dnl because plural.y uses bison specific features. It requires at least
-  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
-  dnl compile.
-  dnl bison is only needed for the maintainer (who touches plural.y). But in
-  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
-  dnl the rule in general Makefile. Now, some people carelessly touch the
-  dnl files or have a broken "make" program, hence the plural.c rule will
-  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
-  dnl present or too old.
-  AC_CHECK_PROGS([INTLBISON], [bison])
-  if test -z "$INTLBISON"; then
-    ac_verc_fail=yes
-  else
-    dnl Found it, now check the version.
-    AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
-    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-    case $ac_prog_version in
-      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
-         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-    esac
-    AC_MSG_RESULT([$ac_prog_version])
-  fi
-  if test $ac_verc_fail = yes; then
-    INTLBISON=:
-  fi
-])
-m4trace:m4/intl.m4:279: -1- AC_DEFUN([gt_CHECK_DECL], [
-  AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
-    [AC_TRY_COMPILE([$2], [
-#ifndef $1
-  char *p = (char *) $1;
-#endif
-], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
-  if test $ac_cv_have_decl_$1 = yes; then
-    gt_value=1
-  else
-    gt_value=0
-  fi
-  AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
-    [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
-])
-m4trace:m4/intlmacosx.m4:18: -1- AC_DEFUN([gt_INTL_MACOSX], [
-  dnl Check for API introduced in MacOS X 10.2.
-  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
-    [gt_cv_func_CFPreferencesCopyAppValue],
-    [gt_save_LIBS="$LIBS"
-     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
-       [CFPreferencesCopyAppValue(NULL, NULL)],
-       [gt_cv_func_CFPreferencesCopyAppValue=yes],
-       [gt_cv_func_CFPreferencesCopyAppValue=no])
-     LIBS="$gt_save_LIBS"])
-  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
-      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
-  fi
-  dnl Check for API introduced in MacOS X 10.3.
-  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
-    [gt_save_LIBS="$LIBS"
-     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
-       [gt_cv_func_CFLocaleCopyCurrent=yes],
-       [gt_cv_func_CFLocaleCopyCurrent=no])
-     LIBS="$gt_save_LIBS"])
-  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
-      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
-  fi
-  INTL_MACOSX_LIBS=
-  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
-  fi
-  AC_SUBST([INTL_MACOSX_LIBS])
-])
-m4trace:m4/intmax.m4:11: -1- AC_DEFUN([gt_TYPE_INTMAX_T], [
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
-    [AC_TRY_COMPILE([
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-],     [intmax_t x = -1;
-        return !x;],
-       [gt_cv_c_intmax_t=yes],
-       [gt_cv_c_intmax_t=no])])
-  if test $gt_cv_c_intmax_t = yes; then
-    AC_DEFINE([HAVE_INTMAX_T], [1],
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
-m4trace:m4/inttypes-pri.m4:14: -1- AC_DEFUN([gt_INTTYPES_PRI], [
-  AC_CHECK_HEADERS([inttypes.h])
-  if test $ac_cv_header_inttypes_h = yes; then
-    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
-      [gt_cv_inttypes_pri_broken],
-      [
-        AC_TRY_COMPILE([#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
-      ])
-  fi
-  if test "$gt_cv_inttypes_pri_broken" = yes; then
-    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
-      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
-    PRI_MACROS_BROKEN=1
-  else
-    PRI_MACROS_BROKEN=0
-  fi
-  AC_SUBST([PRI_MACROS_BROKEN])
-])
-m4trace:m4/inttypes_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [
-  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
-  [AC_TRY_COMPILE(
-    [#include <sys/types.h>
-#include <inttypes.h>],
-    [uintmax_t i = (uintmax_t) -1; return !i;],
-    [gl_cv_header_inttypes_h=yes],
-    [gl_cv_header_inttypes_h=no])])
-  if test $gl_cv_header_inttypes_h = yes; then
-    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
-      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
-m4trace:m4/lcmessage.m4:22: -1- AC_DEFUN([gt_LC_MESSAGES], [
-  AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
-    [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-       [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
-  if test $gt_cv_val_LC_MESSAGES = yes; then
-    AC_DEFINE([HAVE_LC_MESSAGES], [1],
-      [Define if your <locale.h> file defines LC_MESSAGES.])
-  fi
-])
-m4trace:m4/lib-ld.m4:12: -1- AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  acl_cv_prog_gnu_ld=yes ;;
-*)
-  acl_cv_prog_gnu_ld=no ;;
-esac])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-m4trace:m4/lib-ld.m4:25: -1- AC_DEFUN([AC_LIB_PROG_LD], [AC_ARG_WITH([gnu-ld],
-[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# 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=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by GCC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]* | [A-Za-z]:[\\/]*)]
-      [re_direlt='/[^/][^/]*/\.\./']
-      # Canonicalize the path of ld
-      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL([acl_cv_path_LD],
-[if test -z "$LD"; then
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      acl_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
-      *GNU* | *'with BFD'*)
-        test "$with_gnu_ld" != no && break ;;
-      *)
-        test "$with_gnu_ld" != yes && break ;;
-      esac
-    fi
-  done
-  IFS="$ac_save_ifs"
-else
-  acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT([$LD])
-else
-  AC_MSG_RESULT([no])
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
-m4trace:m4/lib-link.m4:17: -1- AC_DEFUN([AC_LIB_LINKFLAGS], [
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-  pushdef([Name],[translit([$1],[./-], [___])])
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-    AC_LIB_LINKFLAGS_BODY([$1], [$2])
-    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
-  ])
-  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-  AC_SUBST([LIB]NAME)
-  AC_SUBST([LTLIB]NAME)
-  AC_SUBST([LIB]NAME[_PREFIX])
-  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-  dnl results of this search when this library appears as a dependency.
-  HAVE_LIB[]NAME=yes
-  popdef([NAME])
-  popdef([Name])
-])
-m4trace:m4/lib-link.m4:57: -1- AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-  pushdef([Name],[translit([$1],[./-], [___])])
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
-  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-  dnl accordingly.
-  AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
-  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-  dnl because if the user has installed lib[]Name and not disabled its use
-  dnl via --without-lib[]Name-prefix, he wants to use it.
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
-  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-    ac_save_LIBS="$LIBS"
-    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
-    dnl because these -l options might require -L options that are present in
-    dnl LIBS. -l options benefit only from the -L options listed before it.
-    dnl Otherwise, add it to the front of LIBS, because it may be a static
-    dnl library that depends on another static library that is present in LIBS.
-    dnl Static libraries benefit only from the static libraries listed after
-    dnl it.
-    case " $LIB[]NAME" in
-      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
-      *)       LIBS="$LIB[]NAME $LIBS" ;;
-    esac
-    AC_TRY_LINK([$3], [$4],
-      [ac_cv_lib[]Name=yes],
-      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
-    LIBS="$ac_save_LIBS"
-  ])
-  if test "$ac_cv_lib[]Name" = yes; then
-    HAVE_LIB[]NAME=yes
-    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
-    AC_MSG_CHECKING([how to link with lib[]$1])
-    AC_MSG_RESULT([$LIB[]NAME])
-  else
-    HAVE_LIB[]NAME=no
-    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-    dnl $INC[]NAME either.
-    CPPFLAGS="$ac_save_CPPFLAGS"
-    LIB[]NAME=
-    LTLIB[]NAME=
-    LIB[]NAME[]_PREFIX=
-  fi
-  AC_SUBST([HAVE_LIB]NAME)
-  AC_SUBST([LIB]NAME)
-  AC_SUBST([LTLIB]NAME)
-  AC_SUBST([LIB]NAME[_PREFIX])
-  popdef([NAME])
-  popdef([Name])
-])
-m4trace:m4/lib-link.m4:122: -1- AC_DEFUN([AC_LIB_RPATH], [
-  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
-  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
-  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
-  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
-  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
-  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
-    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
-    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-    . ./conftest.sh
-    rm -f ./conftest.sh
-    acl_cv_rpath=done
-  ])
-  wl="$acl_cv_wl"
-  acl_libext="$acl_cv_libext"
-  acl_shlibext="$acl_cv_shlibext"
-  acl_libname_spec="$acl_cv_libname_spec"
-  acl_library_names_spec="$acl_cv_library_names_spec"
-  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-  acl_hardcode_direct="$acl_cv_hardcode_direct"
-  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
-  dnl Determine whether the user wants rpath handling at all.
-  AC_ARG_ENABLE([rpath],
-    [  --disable-rpath         do not hardcode runtime library paths],
-    :, enable_rpath=yes)
-])
-m4trace:m4/lib-link.m4:158: -1- AC_DEFUN([AC_LIB_FROMPACKAGE], [
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  define([acl_frompackage_]NAME, [$2])
-  popdef([NAME])
-  pushdef([PACK],[$2])
-  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
-                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  define([acl_libsinpackage_]PACKUP,
-    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
-  popdef([PACKUP])
-  popdef([PACK])
-])
-m4trace:m4/lib-link.m4:178: -1- AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [
-  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
-  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
-                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
-  dnl Autoconf >= 2.61 supports dots in --with options.
-  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
-  dnl By default, look in $includedir and $libdir.
-  use_additional=yes
-  AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-  AC_ARG_WITH(P_A_C_K[-prefix],
-[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
-  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
-[
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-        AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/$acl_libdirstem"
-        if test "$acl_libdirstem2" != "$acl_libdirstem" \
-           && ! test -d "$withval/$acl_libdirstem"; then
-          additional_libdir="$withval/$acl_libdirstem2"
-        fi
-      fi
-    fi
-])
-  dnl Search the library and its dependencies in $additional_libdir and
-  dnl $LDFLAGS. Using breadth-first-seach.
-  LIB[]NAME=
-  LTLIB[]NAME=
-  INC[]NAME=
-  LIB[]NAME[]_PREFIX=
-  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
-  dnl computed. So it has to be reset here.
-  HAVE_LIB[]NAME=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='$1 $2'
-  while test -n "$names_next_round"; do
-    names_this_round="$names_next_round"
-    names_next_round=
-    for name in $names_this_round; do
-      already_handled=
-      for n in $names_already_handled; do
-        if test "$n" = "$name"; then
-          already_handled=yes
-          break
-        fi
-      done
-      if test -z "$already_handled"; then
-        names_already_handled="$names_already_handled $name"
-        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-        dnl or AC_LIB_HAVE_LINKFLAGS call.
-        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-        eval value=\"\$HAVE_LIB$uppername\"
-        if test -n "$value"; then
-          if test "$value" = yes; then
-            eval value=\"\$LIB$uppername\"
-            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
-          else
-            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-            dnl that this library doesn't exist. So just drop it.
-            :
-          fi
-        else
-          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-          dnl and the already constructed $LIBNAME/$LTLIBNAME.
-          found_dir=
-          found_la=
-          found_so=
-          found_a=
-          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
-          if test -n "$acl_shlibext"; then
-            shrext=".$acl_shlibext"             # typically: shrext=.so
-          else
-            shrext=
-          fi
-          if test $use_additional = yes; then
-            dir="$additional_libdir"
-            dnl The same code as in the loop below:
-            dnl First look for a shared library.
-            if test -n "$acl_shlibext"; then
-              if test -f "$dir/$libname$shrext"; then
-                found_dir="$dir"
-                found_so="$dir/$libname$shrext"
-              else
-                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
-                  ver=`(cd "$dir" && \
-                        for f in "$libname$shrext".*; do echo "$f"; done \
-                        | sed -e "s,^$libname$shrext\\\\.,," \
-                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
-                        | sed 1q ) 2>/dev/null`
-                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
-                    found_dir="$dir"
-                    found_so="$dir/$libname$shrext.$ver"
-                  fi
-                else
-                  eval library_names=\"$acl_library_names_spec\"
-                  for f in $library_names; do
-                    if test -f "$dir/$f"; then
-                      found_dir="$dir"
-                      found_so="$dir/$f"
-                      break
-                    fi
-                  done
-                fi
-              fi
-            fi
-            dnl Then look for a static library.
-            if test "X$found_dir" = "X"; then
-              if test -f "$dir/$libname.$acl_libext"; then
-                found_dir="$dir"
-                found_a="$dir/$libname.$acl_libext"
-              fi
-            fi
-            if test "X$found_dir" != "X"; then
-              if test -f "$dir/$libname.la"; then
-                found_la="$dir/$libname.la"
-              fi
-            fi
-          fi
-          if test "X$found_dir" = "X"; then
-            for x in $LDFLAGS $LTLIB[]NAME; do
-              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-              case "$x" in
-                -L*)
-                  dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  dnl First look for a shared library.
-                  if test -n "$acl_shlibext"; then
-                    if test -f "$dir/$libname$shrext"; then
-                      found_dir="$dir"
-                      found_so="$dir/$libname$shrext"
-                    else
-                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
-                        ver=`(cd "$dir" && \
-                              for f in "$libname$shrext".*; do echo "$f"; done \
-                              | sed -e "s,^$libname$shrext\\\\.,," \
-                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
-                              | sed 1q ) 2>/dev/null`
-                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
-                          found_dir="$dir"
-                          found_so="$dir/$libname$shrext.$ver"
-                        fi
-                      else
-                        eval library_names=\"$acl_library_names_spec\"
-                        for f in $library_names; do
-                          if test -f "$dir/$f"; then
-                            found_dir="$dir"
-                            found_so="$dir/$f"
-                            break
-                          fi
-                        done
-                      fi
-                    fi
-                  fi
-                  dnl Then look for a static library.
-                  if test "X$found_dir" = "X"; then
-                    if test -f "$dir/$libname.$acl_libext"; then
-                      found_dir="$dir"
-                      found_a="$dir/$libname.$acl_libext"
-                    fi
-                  fi
-                  if test "X$found_dir" != "X"; then
-                    if test -f "$dir/$libname.la"; then
-                      found_la="$dir/$libname.la"
-                    fi
-                  fi
-                  ;;
-              esac
-              if test "X$found_dir" != "X"; then
-                break
-              fi
-            done
-          fi
-          if test "X$found_dir" != "X"; then
-            dnl Found the library.
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-            if test "X$found_so" != "X"; then
-              dnl Linking with a shared library. We attempt to hardcode its
-              dnl directory into the executable's runpath, unless it's the
-              dnl standard /usr/lib.
-              if test "$enable_rpath" = no \
-                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
-                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
-                dnl No hardcoding is needed.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-              else
-                dnl Use an explicit option to hardcode DIR into the resulting
-                dnl binary.
-                dnl Potentially add DIR to ltrpathdirs.
-                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-                haveit=
-                for x in $ltrpathdirs; do
-                  if test "X$x" = "X$found_dir"; then
-                    haveit=yes
-                    break
-                  fi
-                done
-                if test -z "$haveit"; then
-                  ltrpathdirs="$ltrpathdirs $found_dir"
-                fi
-                dnl The hardcoding into $LIBNAME is system dependent.
-                if test "$acl_hardcode_direct" = yes; then
-                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
-                  dnl resulting binary.
-                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                else
-                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
-                    dnl Use an explicit option to hardcode DIR into the resulting
-                    dnl binary.
-                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                    dnl Potentially add DIR to rpathdirs.
-                    dnl The rpathdirs will be appended to $LIBNAME at the end.
-                    haveit=
-                    for x in $rpathdirs; do
-                      if test "X$x" = "X$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      rpathdirs="$rpathdirs $found_dir"
-                    fi
-                  else
-                    dnl Rely on "-L$found_dir".
-                    dnl But don't add it if it's already contained in the LDFLAGS
-                    dnl or the already constructed $LIBNAME
-                    haveit=
-                    for x in $LDFLAGS $LIB[]NAME; do
-                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                      if test "X$x" = "X-L$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-                    fi
-                    if test "$acl_hardcode_minus_L" != no; then
-                      dnl FIXME: Not sure whether we should use
-                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-                      dnl here.
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                    else
-                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
-                      dnl here, because this doesn't fit in flags passed to the
-                      dnl compiler. So give up. No hardcoding. This affects only
-                      dnl very old systems.
-                      dnl FIXME: Not sure whether we should use
-                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-                      dnl here.
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-                    fi
-                  fi
-                fi
-              fi
-            else
-              if test "X$found_a" != "X"; then
-                dnl Linking with a static library.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-              else
-                dnl We shouldn't come here, but anyway it's good to have a
-                dnl fallback.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-              fi
-            fi
-            dnl Assume the include files are nearby.
-            additional_includedir=
-            case "$found_dir" in
-              */$acl_libdirstem | */$acl_libdirstem/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
-                if test "$name" = '$1'; then
-                  LIB[]NAME[]_PREFIX="$basedir"
-                fi
-                additional_includedir="$basedir/include"
-                ;;
-              */$acl_libdirstem2 | */$acl_libdirstem2/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
-                if test "$name" = '$1'; then
-                  LIB[]NAME[]_PREFIX="$basedir"
-                fi
-                additional_includedir="$basedir/include"
-                ;;
-            esac
-            if test "X$additional_includedir" != "X"; then
-              dnl Potentially add $additional_includedir to $INCNAME.
-              dnl But don't add it
-              dnl   1. if it's the standard /usr/include,
-              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
-              dnl   3. if it's already present in $CPPFLAGS or the already
-              dnl      constructed $INCNAME,
-              dnl   4. if it doesn't exist as a directory.
-              if test "X$additional_includedir" != "X/usr/include"; then
-                haveit=
-                if test "X$additional_includedir" = "X/usr/local/include"; then
-                  if test -n "$GCC"; then
-                    case $host_os in
-                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-                    esac
-                  fi
-                fi
-                if test -z "$haveit"; then
-                  for x in $CPPFLAGS $INC[]NAME; do
-                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                    if test "X$x" = "X-I$additional_includedir"; then
-                      haveit=yes
-                      break
-                    fi
-                  done
-                  if test -z "$haveit"; then
-                    if test -d "$additional_includedir"; then
-                      dnl Really add $additional_includedir to $INCNAME.
-                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
-                    fi
-                  fi
-                fi
-              fi
-            fi
-            dnl Look for dependencies.
-            if test -n "$found_la"; then
-              dnl Read the .la file. It defines the variables
-              dnl dlname, library_names, old_library, dependency_libs, current,
-              dnl age, revision, installed, dlopen, dlpreopen, libdir.
-              save_libdir="$libdir"
-              case "$found_la" in
-                */* | *\\*) . "$found_la" ;;
-                *) . "./$found_la" ;;
-              esac
-              libdir="$save_libdir"
-              dnl We use only dependency_libs.
-              for dep in $dependency_libs; do
-                case "$dep" in
-                  -L*)
-                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
-                    dnl But don't add it
-                    dnl   1. if it's the standard /usr/lib,
-                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
-                    dnl   3. if it's already present in $LDFLAGS or the already
-                    dnl      constructed $LIBNAME,
-                    dnl   4. if it doesn't exist as a directory.
-                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
-                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
-                      haveit=
-                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
-                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
-                        if test -n "$GCC"; then
-                          case $host_os in
-                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-                          esac
-                        fi
-                      fi
-                      if test -z "$haveit"; then
-                        haveit=
-                        for x in $LDFLAGS $LIB[]NAME; do
-                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                            dnl Really add $additional_libdir to $LIBNAME.
-                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
-                          fi
-                        fi
-                        haveit=
-                        for x in $LDFLAGS $LTLIB[]NAME; do
-                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                            dnl Really add $additional_libdir to $LTLIBNAME.
-                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
-                          fi
-                        fi
-                      fi
-                    fi
-                    ;;
-                  -R*)
-                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
-                    if test "$enable_rpath" != no; then
-                      dnl Potentially add DIR to rpathdirs.
-                      dnl The rpathdirs will be appended to $LIBNAME at the end.
-                      haveit=
-                      for x in $rpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        rpathdirs="$rpathdirs $dir"
-                      fi
-                      dnl Potentially add DIR to ltrpathdirs.
-                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-                      haveit=
-                      for x in $ltrpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        ltrpathdirs="$ltrpathdirs $dir"
-                      fi
-                    fi
-                    ;;
-                  -l*)
-                    dnl Handle this in the next round.
-                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-                    ;;
-                  *.la)
-                    dnl Handle this in the next round. Throw away the .la's
-                    dnl directory; it is already contained in a preceding -L
-                    dnl option.
-                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-                    ;;
-                  *)
-                    dnl Most likely an immediate library name.
-                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-                    ;;
-                esac
-              done
-            fi
-          else
-            dnl Didn't find the library; assume it is in the system directories
-            dnl known to the linker and runtime loader. (All the system
-            dnl directories known to the linker should also be known to the
-            dnl runtime loader, otherwise the system is severely misconfigured.)
-            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-          fi
-        fi
-      fi
-    done
-  done
-  if test "X$rpathdirs" != "X"; then
-    if test -n "$acl_hardcode_libdir_separator"; then
-      dnl Weird platform: only the last -rpath option counts, the user must
-      dnl pass all path elements in one option. We can arrange that for a
-      dnl single library, but not when more than one $LIBNAMEs are used.
-      alldirs=
-      for found_dir in $rpathdirs; do
-        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
-      done
-      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
-      acl_save_libdir="$libdir"
-      libdir="$alldirs"
-      eval flag=\"$acl_hardcode_libdir_flag_spec\"
-      libdir="$acl_save_libdir"
-      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-    else
-      dnl The -rpath options are cumulative.
-      for found_dir in $rpathdirs; do
-        acl_save_libdir="$libdir"
-        libdir="$found_dir"
-        eval flag=\"$acl_hardcode_libdir_flag_spec\"
-        libdir="$acl_save_libdir"
-        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-      done
-    fi
-  fi
-  if test "X$ltrpathdirs" != "X"; then
-    dnl When using libtool, the option that works for both libraries and
-    dnl executables is -R. The -R options are cumulative.
-    for found_dir in $ltrpathdirs; do
-      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-    done
-  fi
-  popdef([P_A_C_K])
-  popdef([PACKLIBS])
-  popdef([PACKUP])
-  popdef([PACK])
-  popdef([NAME])
-])
-m4trace:m4/lib-link.m4:681: -1- AC_DEFUN([AC_LIB_APPENDTOVAR], [
-  for element in [$2]; do
-    haveit=
-    for x in $[$1]; do
-      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-      if test "X$x" = "X$element"; then
-        haveit=yes
-        break
-      fi
-    done
-    if test -z "$haveit"; then
-      [$1]="${[$1]}${[$1]:+ }$element"
-    fi
-  done
-])
-m4trace:m4/lib-link.m4:705: -1- AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [
-  AC_REQUIRE([AC_LIB_RPATH])
-  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  $1=
-  if test "$enable_rpath" != no; then
-    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
-      dnl Use an explicit option to hardcode directories into the resulting
-      dnl binary.
-      rpathdirs=
-      next=
-      for opt in $2; do
-        if test -n "$next"; then
-          dir="$next"
-          dnl No need to hardcode the standard /usr/lib.
-          if test "X$dir" != "X/usr/$acl_libdirstem" \
-             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
-            rpathdirs="$rpathdirs $dir"
-          fi
-          next=
-        else
-          case $opt in
-            -L) next=yes ;;
-            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
-                 dnl No need to hardcode the standard /usr/lib.
-                 if test "X$dir" != "X/usr/$acl_libdirstem" \
-                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
-                   rpathdirs="$rpathdirs $dir"
-                 fi
-                 next= ;;
-            *) next= ;;
-          esac
-        fi
-      done
-      if test "X$rpathdirs" != "X"; then
-        if test -n ""$3""; then
-          dnl libtool is used for linking. Use -R options.
-          for dir in $rpathdirs; do
-            $1="${$1}${$1:+ }-R$dir"
-          done
-        else
-          dnl The linker is used for linking directly.
-          if test -n "$acl_hardcode_libdir_separator"; then
-            dnl Weird platform: only the last -rpath option counts, the user
-            dnl must pass all path elements in one option.
-            alldirs=
-            for dir in $rpathdirs; do
-              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
-            done
-            acl_save_libdir="$libdir"
-            libdir="$alldirs"
-            eval flag=\"$acl_hardcode_libdir_flag_spec\"
-            libdir="$acl_save_libdir"
-            $1="$flag"
-          else
-            dnl The -rpath options are cumulative.
-            for dir in $rpathdirs; do
-              acl_save_libdir="$libdir"
-              libdir="$dir"
-              eval flag=\"$acl_hardcode_libdir_flag_spec\"
-              libdir="$acl_save_libdir"
-              $1="${$1}${$1:+ }$flag"
-            done
-          fi
-        fi
-      fi
-    fi
-  fi
-  AC_SUBST([$1])
-])
-m4trace:m4/lib-prefix.m4:12: -1- AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])
-m4trace:m4/lib-prefix.m4:22: -1- AC_DEFUN([AC_LIB_PREFIX], [
-  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  dnl By default, look in $includedir and $libdir.
-  use_additional=yes
-  AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-  AC_LIB_ARG_WITH([lib-prefix],
-[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-  --without-lib-prefix    don't search for libraries in includedir and libdir],
-[
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-        AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/$acl_libdirstem"
-      fi
-    fi
-])
-  if test $use_additional = yes; then
-    dnl Potentially add $additional_includedir to $CPPFLAGS.
-    dnl But don't add it
-    dnl   1. if it's the standard /usr/include,
-    dnl   2. if it's already present in $CPPFLAGS,
-    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
-    dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_includedir" != "X/usr/include"; then
-      haveit=
-      for x in $CPPFLAGS; do
-        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-        if test "X$x" = "X-I$additional_includedir"; then
-          haveit=yes
-          break
-        fi
-      done
-      if test -z "$haveit"; then
-        if test "X$additional_includedir" = "X/usr/local/include"; then
-          if test -n "$GCC"; then
-            case $host_os in
-              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-            esac
-          fi
-        fi
-        if test -z "$haveit"; then
-          if test -d "$additional_includedir"; then
-            dnl Really add $additional_includedir to $CPPFLAGS.
-            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-          fi
-        fi
-      fi
-    fi
-    dnl Potentially add $additional_libdir to $LDFLAGS.
-    dnl But don't add it
-    dnl   1. if it's the standard /usr/lib,
-    dnl   2. if it's already present in $LDFLAGS,
-    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
-    dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
-      haveit=
-      for x in $LDFLAGS; do
-        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-        if test "X$x" = "X-L$additional_libdir"; then
-          haveit=yes
-          break
-        fi
-      done
-      if test -z "$haveit"; then
-        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
-          if test -n "$GCC"; then
-            case $host_os in
-              linux*) haveit=yes;;
-            esac
-          fi
-        fi
-        if test -z "$haveit"; then
-          if test -d "$additional_libdir"; then
-            dnl Really add $additional_libdir to $LDFLAGS.
-            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-          fi
-        fi
-      fi
-    fi
-  fi
-])
-m4trace:m4/lib-prefix.m4:122: -1- AC_DEFUN([AC_LIB_PREPARE_PREFIX], [
-  dnl Unfortunately, prefix and exec_prefix get only finally determined
-  dnl at the end of configure.
-  if test "X$prefix" = "XNONE"; then
-    acl_final_prefix="$ac_default_prefix"
-  else
-    acl_final_prefix="$prefix"
-  fi
-  if test "X$exec_prefix" = "XNONE"; then
-    acl_final_exec_prefix='${prefix}'
-  else
-    acl_final_exec_prefix="$exec_prefix"
-  fi
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-  prefix="$acl_save_prefix"
-])
-m4trace:m4/lib-prefix.m4:145: -1- AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  $1
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-])
-m4trace:m4/lib-prefix.m4:162: -1- AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [
-  dnl There is no formal standard regarding lib and lib64.
-  dnl On glibc systems, the current practice is that on a system supporting
-  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
-  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
-  dnl the compiler's default mode by looking at the compiler's library search
-  dnl path. If at least one of its elements ends in /lib64 or points to a
-  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
-  dnl Otherwise we use the default, namely "lib".
-  dnl On Solaris systems, the current practice is that on a system supporting
-  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
-  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
-  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  acl_libdirstem=lib
-  acl_libdirstem2=
-  case "$host_os" in
-    solaris*)
-      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
-      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
-      dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
-      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
-      dnl symlink is missing, so we set acl_libdirstem2 too.
-      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
-        [AC_EGREP_CPP([sixtyfour bits], [
-#ifdef _LP64
-sixtyfour bits
-#endif
-           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
-        ])
-      if test $gl_cv_solaris_64bit = yes; then
-        acl_libdirstem=lib/64
-        case "$host_cpu" in
-          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
-          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
-        esac
-      fi
-      ;;
-    *)
-      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
-      if test -n "$searchpath"; then
-        acl_save_IFS="${IFS= 	}"; IFS=":"
-        for searchdir in $searchpath; do
-          if test -d "$searchdir"; then
-            case "$searchdir" in
-              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
-              */../ | */.. )
-                # Better ignore directories of this form. They are misleading.
-                ;;
-              *) searchdir=`cd "$searchdir" && pwd`
-                 case "$searchdir" in
-                   */lib64 ) acl_libdirstem=lib64 ;;
-                 esac ;;
-            esac
-          fi
-        done
-        IFS="$acl_save_IFS"
-      fi
-      ;;
-  esac
-  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
-])
-m4trace:m4/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])
-m4trace:m4/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])
-m4trace:m4/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
-m4trace:m4/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Go],			[_LT_LANG(GO)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])
-m4trace:m4/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-m4trace:m4/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(C++)])
-m4trace:m4/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-m4trace:m4/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Fortran 77)])
-m4trace:m4/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-m4trace:m4/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Fortran)])
-m4trace:m4/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-m4trace:m4/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Java)])
-m4trace:m4/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-m4trace:m4/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Windows Resource)])
-m4trace:m4/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-m4trace:m4/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])
-m4trace:m4/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
-m4trace:m4/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
-m4trace:m4/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])
-m4trace:m4/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
-m4trace:m4/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
-m4trace:m4/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-	test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])
-m4trace:m4/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
-m4trace:m4/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
-m4trace:m4/libtool.m4:1858: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])
-m4trace:m4/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
-m4trace:m4/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
-m4trace:m4/libtool.m4:2945: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])
-m4trace:m4/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
-m4trace:m4/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
-m4trace:m4/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])
-m4trace:m4/libtool.m4:3119: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3119: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3120: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3120: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3410: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])
-m4trace:m4/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])
-m4trace:m4/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
-m4trace:m4/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
-m4trace:m4/libtool.m4:7637: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-m4trace:m4/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
-m4trace:m4/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
-m4trace:m4/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
-])
-m4trace:m4/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
-])
-m4trace:m4/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
-m4trace:m4/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
-m4trace:m4/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
-m4trace:m4/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
-m4trace:m4/lock.m4:9: -1- AC_DEFUN([gl_LOCK], [
-  AC_REQUIRE([gl_THREADLIB])
-  if test "$gl_threads_api" = posix; then
-    # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
-    # pthread_rwlock_* functions.
-    AC_CHECK_TYPE([pthread_rwlock_t],
-      [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
-         [Define if the POSIX multithreading library has read/write locks.])],
-      [],
-      [#include <pthread.h>])
-    # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
-    AC_TRY_COMPILE([#include <pthread.h>],
-      [#if __FreeBSD__ == 4
-error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
-#else
-int x = (int)PTHREAD_MUTEX_RECURSIVE;
-return !x;
-#endif],
-      [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
-         [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
-  fi
-  gl_PREREQ_LOCK
-])
-m4trace:m4/lock.m4:35: -1- AC_DEFUN([gl_PREREQ_LOCK], [
-  AC_REQUIRE([AC_C_INLINE])
-])
-m4trace:m4/longlong.m4:17: -1- AC_DEFUN([AC_TYPE_LONG_LONG_INT], [
-  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
-    [AC_LINK_IFELSE(
-       [_AC_TYPE_LONG_LONG_SNIPPET],
-       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
-        dnl If cross compiling, assume the bug isn't important, since
-        dnl nobody cross compiles for this platform as far as we know.
-        AC_RUN_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[@%:@include <limits.h>
-               @%:@ifndef LLONG_MAX
-               @%:@ define HALF \
-                        (1LL << (sizeof (long long int) * CHAR_BIT - 2))
-               @%:@ define LLONG_MAX (HALF - 1 + HALF)
-               @%:@endif]],
-             [[long long int n = 1;
-               int i;
-               for (i = 0; ; i++)
-                 {
-                   long long int m = n << i;
-                   if (m >> i != n)
-                     return 1;
-                   if (LLONG_MAX / 2 < m)
-                     break;
-                 }
-               return 0;]])],
-          [ac_cv_type_long_long_int=yes],
-          [ac_cv_type_long_long_int=no],
-          [ac_cv_type_long_long_int=yes])],
-       [ac_cv_type_long_long_int=no])])
-  if test $ac_cv_type_long_long_int = yes; then
-    AC_DEFINE([HAVE_LONG_LONG_INT], [1],
-      [Define to 1 if the system has the type `long long int'.])
-  fi
-])
-m4trace:m4/longlong.m4:63: -1- AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [
-  AC_CACHE_CHECK([for unsigned long long int],
-    [ac_cv_type_unsigned_long_long_int],
-    [AC_LINK_IFELSE(
-       [_AC_TYPE_LONG_LONG_SNIPPET],
-       [ac_cv_type_unsigned_long_long_int=yes],
-       [ac_cv_type_unsigned_long_long_int=no])])
-  if test $ac_cv_type_unsigned_long_long_int = yes; then
-    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
-      [Define to 1 if the system has the type `unsigned long long int'.])
-  fi
-])
-m4trace:m4/longlong.m4:82: -1- AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [
-  AC_LANG_PROGRAM(
-    [[/* For now, do not test the preprocessor; as of 2007 there are too many
-         implementations with broken preprocessors.  Perhaps this can
-         be revisited in 2012.  In the meantime, code should not expect
-         #if to work with literals wider than 32 bits.  */
-      /* Test literals.  */
-      long long int ll = 9223372036854775807ll;
-      long long int nll = -9223372036854775807LL;
-      unsigned long long int ull = 18446744073709551615ULL;
-      /* Test constant expressions.   */
-      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
-                     ? 1 : -1)];
-      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
-                     ? 1 : -1)];
-      int i = 63;]],
-    [[/* Test availability of runtime routines for shift and division.  */
-      long long int llmax = 9223372036854775807ll;
-      unsigned long long int ullmax = 18446744073709551615ull;
-      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
-              | (llmax / ll) | (llmax % ll)
-              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
-              | (ullmax / ull) | (ullmax % ull));]])
-])
-m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-m4trace:m4/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
-You should run autoupdate.])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-m4trace:m4/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-m4trace:m4/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
-You should run autoupdate.])dnl
-AC_ENABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
-You should run autoupdate.])dnl
-AC_DISABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-m4trace:m4/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-m4trace:m4/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
-You should run autoupdate.])dnl
-AC_ENABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
-You should run autoupdate.])dnl
-AC_DISABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
-m4trace:m4/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-m4trace:m4/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
-m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
-m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
-m4trace:m4/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
-m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
-m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
-m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
-m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
-m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
-m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
-m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
-m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
-m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
-m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
-m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
-m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
-m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
-m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
-m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
-m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
-m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
-m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
-m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
-m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
-m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
-m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
-m4trace:m4/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
-m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
-m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
-m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
-m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
-m4trace:m4/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
-m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
-m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
-m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
-m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
-m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
-m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
-m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
-m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
-m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
-m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
-m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
-m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
-m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
-m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
-m4trace:m4/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
-m4trace:m4/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
-m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
-m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
-m4trace:m4/nls.m4:23: -1- AC_DEFUN([AM_NLS], [
-  AC_MSG_CHECKING([whether NLS is requested])
-  dnl Default is enabled NLS
-  AC_ARG_ENABLE([nls],
-    [  --disable-nls           do not use Native Language Support],
-    USE_NLS=$enableval, USE_NLS=yes)
-  AC_MSG_RESULT([$USE_NLS])
-  AC_SUBST([USE_NLS])
-])
-m4trace:m4/po.m4:23: -1- AC_DEFUN([AM_PO_SUBDIRS], [
-  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
-  AC_REQUIRE([AM_NLS])dnl
-
-  dnl Release version of the gettext macros. This is used to ensure that
-  dnl the gettext macros and po/Makefile.in.in are in sync.
-  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
-
-  dnl Perform the following tests also if --disable-nls has been given,
-  dnl because they are needed for "make dist" to work.
-
-  dnl Search for GNU msgfmt in the PATH.
-  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
-  dnl The second test excludes FreeBSD msgfmt.
-  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
-     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
-    :)
-  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
-
-  dnl Test whether it is GNU msgfmt >= 0.15.
-changequote(,)dnl
-  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
-    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
-    *) MSGFMT_015=$MSGFMT ;;
-  esac
-changequote([,])dnl
-  AC_SUBST([MSGFMT_015])
-changequote(,)dnl
-  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
-    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
-    *) GMSGFMT_015=$GMSGFMT ;;
-  esac
-changequote([,])dnl
-  AC_SUBST([GMSGFMT_015])
-
-  dnl Search for GNU xgettext 0.12 or newer in the PATH.
-  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
-  dnl The second test excludes FreeBSD xgettext.
-  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
-     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
-    :)
-  dnl Remove leftover from FreeBSD xgettext call.
-  rm -f messages.po
-
-  dnl Test whether it is GNU xgettext >= 0.15.
-changequote(,)dnl
-  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
-    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
-    *) XGETTEXT_015=$XGETTEXT ;;
-  esac
-changequote([,])dnl
-  AC_SUBST([XGETTEXT_015])
-
-  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
-  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
-    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
-
-  dnl Installation directories.
-  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
-  dnl have to define it here, so that it can be used in po/Makefile.
-  test -n "$localedir" || localedir='${datadir}/locale'
-  AC_SUBST([localedir])
-
-  dnl Support for AM_XGETTEXT_OPTION.
-  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
-  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
-
-  AC_CONFIG_COMMANDS([po-directories], [[
-    for ac_file in $CONFIG_FILES; do
-      # Support "outfile[:infile[:infile...]]"
-      case "$ac_file" in
-        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-      esac
-      # PO directories have a Makefile.in generated from Makefile.in.in.
-      case "$ac_file" in */Makefile.in)
-        # Adjust a relative srcdir.
-        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
-        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
-        # In autoconf-2.13 it is called $ac_given_srcdir.
-        # In autoconf-2.50 it is called $srcdir.
-        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-        case "$ac_given_srcdir" in
-          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-          /*) top_srcdir="$ac_given_srcdir" ;;
-          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
-        esac
-        # Treat a directory as a PO directory if and only if it has a
-        # POTFILES.in file. This allows packages to have multiple PO
-        # directories under different names or in different locations.
-        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
-          rm -f "$ac_dir/POTFILES"
-          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
-          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ 	]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
-          POMAKEFILEDEPS="POTFILES.in"
-          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
-          # on $ac_dir but don't depend on user-specified configuration
-          # parameters.
-          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-            # The LINGUAS file contains the set of available languages.
-            if test -n "$OBSOLETE_ALL_LINGUAS"; then
-              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
-            fi
-            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-            # Hide the ALL_LINGUAS assigment from automake < 1.5.
-            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
-            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
-          else
-            # The set of available languages was given in configure.in.
-            # Hide the ALL_LINGUAS assigment from automake < 1.5.
-            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
-          fi
-          # Compute POFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
-          # Compute UPDATEPOFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
-          # Compute DUMMYPOFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
-          # Compute GMOFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
-          case "$ac_given_srcdir" in
-            .) srcdirpre= ;;
-            *) srcdirpre='$(srcdir)/' ;;
-          esac
-          POFILES=
-          UPDATEPOFILES=
-          DUMMYPOFILES=
-          GMOFILES=
-          for lang in $ALL_LINGUAS; do
-            POFILES="$POFILES $srcdirpre$lang.po"
-            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-          done
-          # CATALOGS depends on both $ac_dir and the user's LINGUAS
-          # environment variable.
-          INST_LINGUAS=
-          if test -n "$ALL_LINGUAS"; then
-            for presentlang in $ALL_LINGUAS; do
-              useit=no
-              if test "%UNSET%" != "$LINGUAS"; then
-                desiredlanguages="$LINGUAS"
-              else
-                desiredlanguages="$ALL_LINGUAS"
-              fi
-              for desiredlang in $desiredlanguages; do
-                # Use the presentlang catalog if desiredlang is
-                #   a. equal to presentlang, or
-                #   b. a variant of presentlang (because in this case,
-                #      presentlang can be used as a fallback for messages
-                #      which are not translated in the desiredlang catalog).
-                case "$desiredlang" in
-                  "$presentlang"*) useit=yes;;
-                esac
-              done
-              if test $useit = yes; then
-                INST_LINGUAS="$INST_LINGUAS $presentlang"
-              fi
-            done
-          fi
-          CATALOGS=
-          if test -n "$INST_LINGUAS"; then
-            for lang in $INST_LINGUAS; do
-              CATALOGS="$CATALOGS $lang.gmo"
-            done
-          fi
-          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
-          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
-          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
-            if test -f "$f"; then
-              case "$f" in
-                *.orig | *.bak | *~) ;;
-                *) cat "$f" >> "$ac_dir/Makefile" ;;
-              esac
-            fi
-          done
-        fi
-        ;;
-      esac
-    done]],
-   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
-    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
-    # from automake < 1.5.
-    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
-    # Capture the value of LINGUAS because we need it to compute CATALOGS.
-    LINGUAS="${LINGUAS-%UNSET%}"
-   ])
-])
-m4trace:m4/po.m4:218: -1- AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [
-  # When this code is run, in config.status, two variables have already been
-  # set:
-  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
-  # - LINGUAS is the value of the environment variable LINGUAS at configure
-  #   time.
-
-changequote(,)dnl
-  # Adjust a relative srcdir.
-  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
-  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
-  # In autoconf-2.13 it is called $ac_given_srcdir.
-  # In autoconf-2.50 it is called $srcdir.
-  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-  case "$ac_given_srcdir" in
-    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-    /*) top_srcdir="$ac_given_srcdir" ;;
-    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  # Find a way to echo strings without interpreting backslash.
-  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
-    gt_echo='echo'
-  else
-    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
-      gt_echo='printf %s\n'
-    else
-      echo_func () {
-        cat <<EOT
-$*
-EOT
-      }
-      gt_echo='echo_func'
-    fi
-  fi
-
-  # A sed script that extracts the value of VARIABLE from a Makefile.
-  sed_x_variable='
-# Test if the hold space is empty.
-x
-s/P/P/
-x
-ta
-# Yes it was empty. Look if we have the expected variable definition.
-/^[	 ]*VARIABLE[	 ]*=/{
-  # Seen the first line of the variable definition.
-  s/^[	 ]*VARIABLE[	 ]*=//
-  ba
-}
-bd
-:a
-# Here we are processing a line from the variable definition.
-# Remove comment, more precisely replace it with a space.
-s/#.*$/ /
-# See if the line ends in a backslash.
-tb
-:b
-s/\\$//
-# Print the line, without the trailing backslash.
-p
-tc
-# There was no trailing backslash. The end of the variable definition is
-# reached. Clear the hold space.
-s/^.*$//
-x
-bd
-:c
-# A trailing backslash means that the variable definition continues in the
-# next line. Put a nonempty string into the hold space to indicate this.
-s/^.*$/P/
-x
-:d
-'
-changequote([,])dnl
-
-  # Set POTFILES to the value of the Makefile variable POTFILES.
-  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
-  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
-  # Compute POTFILES_DEPS as
-  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
-  POTFILES_DEPS=
-  for file in $POTFILES; do
-    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
-  done
-  POMAKEFILEDEPS=""
-
-  if test -n "$OBSOLETE_ALL_LINGUAS"; then
-    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
-  fi
-  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-    # The LINGUAS file contains the set of available languages.
-    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
-  else
-    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
-    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
-    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
-  fi
-  # Hide the ALL_LINGUAS assigment from automake < 1.5.
-  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
-  # Compute POFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
-  # Compute UPDATEPOFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
-  # Compute DUMMYPOFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
-  # Compute GMOFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
-  # Compute PROPERTIESFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
-  # Compute CLASSFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
-  # Compute QMFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
-  # Compute MSGFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
-  # Compute RESOURCESDLLFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
-  case "$ac_given_srcdir" in
-    .) srcdirpre= ;;
-    *) srcdirpre='$(srcdir)/' ;;
-  esac
-  POFILES=
-  UPDATEPOFILES=
-  DUMMYPOFILES=
-  GMOFILES=
-  PROPERTIESFILES=
-  CLASSFILES=
-  QMFILES=
-  MSGFILES=
-  RESOURCESDLLFILES=
-  for lang in $ALL_LINGUAS; do
-    POFILES="$POFILES $srcdirpre$lang.po"
-    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
-    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
-    QMFILES="$QMFILES $srcdirpre$lang.qm"
-    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
-    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
-    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
-  done
-  # CATALOGS depends on both $ac_dir and the user's LINGUAS
-  # environment variable.
-  INST_LINGUAS=
-  if test -n "$ALL_LINGUAS"; then
-    for presentlang in $ALL_LINGUAS; do
-      useit=no
-      if test "%UNSET%" != "$LINGUAS"; then
-        desiredlanguages="$LINGUAS"
-      else
-        desiredlanguages="$ALL_LINGUAS"
-      fi
-      for desiredlang in $desiredlanguages; do
-        # Use the presentlang catalog if desiredlang is
-        #   a. equal to presentlang, or
-        #   b. a variant of presentlang (because in this case,
-        #      presentlang can be used as a fallback for messages
-        #      which are not translated in the desiredlang catalog).
-        case "$desiredlang" in
-          "$presentlang"*) useit=yes;;
-        esac
-      done
-      if test $useit = yes; then
-        INST_LINGUAS="$INST_LINGUAS $presentlang"
-      fi
-    done
-  fi
-  CATALOGS=
-  JAVACATALOGS=
-  QTCATALOGS=
-  TCLCATALOGS=
-  CSHARPCATALOGS=
-  if test -n "$INST_LINGUAS"; then
-    for lang in $INST_LINGUAS; do
-      CATALOGS="$CATALOGS $lang.gmo"
-      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
-      QTCATALOGS="$QTCATALOGS $lang.qm"
-      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
-      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
-      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
-    done
-  fi
-
-  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
-  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
-    # Add dependencies that cannot be formulated as a simple suffix rule.
-    for lang in $ALL_LINGUAS; do
-      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-      cat >> "$ac_file.tmp" <<EOF
-$frobbedlang.msg: $lang.po
-	@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
-	\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
-    done
-  fi
-  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
-    # Add dependencies that cannot be formulated as a simple suffix rule.
-    for lang in $ALL_LINGUAS; do
-      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
-      cat >> "$ac_file.tmp" <<EOF
-$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
-	@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
-	\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
-    done
-  fi
-  if test -n "$POMAKEFILEDEPS"; then
-    cat >> "$ac_file.tmp" <<EOF
-Makefile: $POMAKEFILEDEPS
-EOF
-  fi
-  mv "$ac_file.tmp" "$ac_file"
-])
-m4trace:m4/po.m4:439: -1- AC_DEFUN([AM_XGETTEXT_OPTION_INIT], [
-  XGETTEXT_EXTRA_OPTIONS=
-])
-m4trace:m4/po.m4:445: -1- AC_DEFUN([AM_XGETTEXT_OPTION], [
-  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
-  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
-])
-m4trace:m4/posix-shell.m4:15: -1- AC_DEFUN([gl_POSIX_SHELL], [
-  AC_CACHE_CHECK([for a shell that conforms to POSIX], [gl_cv_posix_shell],
-    [gl_test_posix_shell_script='
-       func_return () {
-	 (exit [$]1)
-       }
-       func_success () {
-	 func_return 0
-       }
-       func_failure () {
-	 func_return 1
-       }
-       func_ret_success () {
-	 return 0
-       }
-       func_ret_failure () {
-	 return 1
-       }
-       subshell_umask_sanity () {
-	 (umask 22; (umask 0); test $(umask) -eq 22)
-       }
-       test "[$](echo foo)" = foo &&
-       func_success &&
-       ! func_failure &&
-       func_ret_success &&
-       ! func_ret_failure &&
-       (set x && func_ret_success y && test x = "[$]1") &&
-       subshell_umask_sanity
-     '
-     for gl_cv_posix_shell in \
-	 "$CONFIG_SHELL" "$SHELL" /bin/sh /bin/bash /bin/ksh /bin/sh5 no; do
-       case $gl_cv_posix_shell in
-         /*)
-	   "$gl_cv_posix_shell" -c "$gl_test_posix_shell_script" 2>/dev/null \
-	     && break;;
-       esac
-     done])
-
-  if test "$gl_cv_posix_shell" != no; then
-    POSIX_SHELL=$gl_cv_posix_shell
-    PREFERABLY_POSIX_SHELL=$POSIX_SHELL
-  else
-    POSIX_SHELL=
-    PREFERABLY_POSIX_SHELL=/bin/sh
-  fi
-  AC_SUBST([POSIX_SHELL])
-  AC_SUBST([PREFERABLY_POSIX_SHELL])
-])
-m4trace:m4/printf-posix.m4:11: -1- AC_DEFUN([gt_PRINTF_POSIX], [
-  AC_REQUIRE([AC_PROG_CC])
-  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
-    gt_cv_func_printf_posix,
-    [
-      AC_TRY_RUN([
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
-   dollar expansion (possibly an autoconf bug).  */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
-  sprintf (buf, format, 33, 55);
-  return (strcmp (buf, "55 33") != 0);
-}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
-      [
-        AC_EGREP_CPP([notposix], [
-#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
-  notposix
-#endif
-          ],
-          [gt_cv_func_printf_posix="guessing no"],
-          [gt_cv_func_printf_posix="guessing yes"])
-      ])
-    ])
-  case $gt_cv_func_printf_posix in
-    *yes)
-      AC_DEFINE([HAVE_POSIX_PRINTF], [1],
-        [Define if your printf() function supports format strings with positions.])
-      ;;
-  esac
-])
-m4trace:m4/progtest.m4:25: -1- AC_DEFUN([AM_PATH_PROG_WITH_TEST], [
-# Prepare PATH_SEPARATOR.
-# 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=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
-  ac_executable_p="test -x"
-else
-  ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL([ac_cv_path_$1],
-[case "[$]$1" in
-  [[\\/]]* | ?:[[\\/]]*)
-    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
-    ;;
-  *)
-    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in ifelse([$5], , $PATH, [$5]); do
-      IFS="$ac_save_IFS"
-      test -z "$ac_dir" && ac_dir=.
-      for ac_exec_ext in '' $ac_executable_extensions; do
-        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
-          if [$3]; then
-            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
-            break 2
-          fi
-        fi
-      done
-    done
-    IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
-    ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
-  AC_MSG_RESULT([$][$1])
-else
-  AC_MSG_RESULT([no])
-fi
-AC_SUBST([$1])dnl
-])
-m4trace:m4/size_max.m4:9: -1- AC_DEFUN([gl_SIZE_MAX], [
-  AC_CHECK_HEADERS([stdint.h])
-  dnl First test whether the system already has SIZE_MAX.
-  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
-    gl_cv_size_max=
-    AC_EGREP_CPP([Found it], [
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-], [gl_cv_size_max=yes])
-    if test -z "$gl_cv_size_max"; then
-      dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
-      dnl than the type 'unsigned long'. Try hard to find a definition that can
-      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
-      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
-        [#include <stddef.h>
-#include <limits.h>], [size_t_bits_minus_1=])
-      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
-        [#include <stddef.h>], [fits_in_uint=])
-      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
-        if test $fits_in_uint = 1; then
-          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
-          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
-          AC_TRY_COMPILE([#include <stddef.h>
-            extern size_t foo;
-            extern unsigned long foo;
-            ], [], [fits_in_uint=0])
-        fi
-        dnl We cannot use 'expr' to simplify this expression, because 'expr'
-        dnl works only with 'long' integers in the host environment, while we
-        dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
-        if test $fits_in_uint = 1; then
-          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
-        else
-          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
-        fi
-      else
-        dnl Shouldn't happen, but who knows...
-        gl_cv_size_max='((size_t)~(size_t)0)'
-      fi
-    fi
-  ])
-  if test "$gl_cv_size_max" != yes; then
-    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
-      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
-  fi
-  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
-  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
-  dnl #define by AC_DEFINE_UNQUOTED.
-  AH_VERBATIM([SIZE_MAX],
-[/* Define as the maximum value of type 'size_t', if the system doesn't define
-   it. */
-#ifndef SIZE_MAX
-# undef SIZE_MAX
-#endif])
-])
-m4trace:m4/stdint_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_STDINT_H], [
-  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
-  [AC_TRY_COMPILE(
-    [#include <sys/types.h>
-#include <stdint.h>],
-    [uintmax_t i = (uintmax_t) -1; return !i;],
-    [gl_cv_header_stdint_h=yes],
-    [gl_cv_header_stdint_h=no])])
-  if test $gl_cv_header_stdint_h = yes; then
-    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
-      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
-m4trace:m4/threadlib.m4:24: -1- AC_DEFUN([gl_THREADLIB_EARLY], [
-  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
-])
-m4trace:m4/threadlib.m4:31: -1- AC_DEFUN([gl_THREADLIB_EARLY_BODY], [
-  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
-  dnl influences the result of the autoconf tests that test for *_unlocked
-  dnl declarations, on AIX 5 at least. Therefore it must come early.
-  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
-  AC_BEFORE([$0], [gl_ARGP])dnl
-
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
-  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
-  dnl AC_GNU_SOURCE.
-  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
-    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
-    [AC_REQUIRE([AC_GNU_SOURCE])])
-  dnl Check for multithreading.
-  m4_divert_text([DEFAULTS], [gl_use_threads_default=])
-  AC_ARG_ENABLE([threads],
-AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
-AC_HELP_STRING([--disable-threads], [build without multithread safety]),
-    [gl_use_threads=$enableval],
-    [if test -n "$gl_use_threads_default"; then
-       gl_use_threads="$gl_use_threads_default"
-     else
-changequote(,)dnl
-       case "$host_os" in
-         dnl Disable multithreading by default on OSF/1, because it interferes
-         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
-         dnl child process gets an endless segmentation fault inside execvp().
-         dnl Disable multithreading by default on Cygwin 1.5.x, because it has
-         dnl bugs that lead to endless loops or crashes. See
-         dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
-         osf*) gl_use_threads=no ;;
-         cygwin*)
-               case `uname -r` in
-                 1.[0-5].*) gl_use_threads=no ;;
-                 *)         gl_use_threads=yes ;;
-               esac
-               ;;
-         *)    gl_use_threads=yes ;;
-       esac
-changequote([,])dnl
-     fi
-    ])
-  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
-    # For using <pthread.h>:
-    case "$host_os" in
-      osf*)
-        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
-        # groks <pthread.h>. cc also understands the flag -pthread, but
-        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
-        # 2. putting a flag into CPPFLAGS that has an effect on the linker
-        # causes the AC_TRY_LINK test below to succeed unexpectedly,
-        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
-        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
-        ;;
-    esac
-    # Some systems optimize for single-threaded programs by default, and
-    # need special flags to disable these optimizations. For example, the
-    # definition of 'errno' in <errno.h>.
-    case "$host_os" in
-      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
-      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
-    esac
-  fi
-])
-m4trace:m4/threadlib.m4:100: -1- AC_DEFUN([gl_THREADLIB_BODY], [
-  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
-  gl_threads_api=none
-  LIBTHREAD=
-  LTLIBTHREAD=
-  LIBMULTITHREAD=
-  LTLIBMULTITHREAD=
-  if test "$gl_use_threads" != no; then
-    dnl Check whether the compiler and linker support weak declarations.
-    AC_CACHE_CHECK([whether imported symbols can be declared weak],
-      [gl_cv_have_weak],
-      [gl_cv_have_weak=no
-       dnl First, test whether the compiler accepts it syntactically.
-       AC_TRY_LINK([extern void xyzzy ();
-#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
-       if test $gl_cv_have_weak = maybe; then
-         dnl Second, test whether it actually works. On Cygwin 1.7.2, with
-         dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
-         AC_TRY_RUN([
-#include <stdio.h>
-#pragma weak fputs
-int main ()
-{
-  return (fputs == NULL);
-}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
-           [dnl When cross-compiling, assume that only ELF platforms support
-            dnl weak symbols.
-            AC_EGREP_CPP([Extensible Linking Format],
-              [#ifdef __ELF__
-               Extensible Linking Format
-               #endif
-              ],
-              [gl_cv_have_weak="guessing yes"],
-              [gl_cv_have_weak="guessing no"])
-           ])
-       fi
-      ])
-    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
-      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
-      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
-      AC_CHECK_HEADER([pthread.h],
-        [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
-      if test "$gl_have_pthread_h" = yes; then
-        # Other possible tests:
-        #   -lpthreads (FSU threads, PCthreads)
-        #   -lgthreads
-        gl_have_pthread=
-        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
-        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
-        # the second one only in libpthread, and lock.c needs it.
-        AC_TRY_LINK([#include <pthread.h>],
-          [pthread_mutex_lock((pthread_mutex_t*)0);
-           pthread_mutexattr_init((pthread_mutexattr_t*)0);],
-          [gl_have_pthread=yes])
-        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
-        # since it is defined as a macro on OSF/1.)
-        if test -n "$gl_have_pthread"; then
-          # The program links fine without libpthread. But it may actually
-          # need to link with libpthread in order to create multiple threads.
-          AC_CHECK_LIB([pthread], [pthread_kill],
-            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
-             # On Solaris and HP-UX, most pthread functions exist also in libc.
-             # Therefore pthread_in_use() needs to actually try to create a
-             # thread: pthread_create from libc will fail, whereas
-             # pthread_create will actually create a thread.
-             case "$host_os" in
-               solaris* | hpux*)
-                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
-                   [Define if the pthread_in_use() detection is hard.])
-             esac
-            ])
-        else
-          # Some library is needed. Try libpthread and libc_r.
-          AC_CHECK_LIB([pthread], [pthread_kill],
-            [gl_have_pthread=yes
-             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
-             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
-          if test -z "$gl_have_pthread"; then
-            # For FreeBSD 4.
-            AC_CHECK_LIB([c_r], [pthread_kill],
-              [gl_have_pthread=yes
-               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
-               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
-          fi
-        fi
-        if test -n "$gl_have_pthread"; then
-          gl_threads_api=posix
-          AC_DEFINE([USE_POSIX_THREADS], [1],
-            [Define if the POSIX multithreading library can be used.])
-          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
-            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-              AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
-                [Define if references to the POSIX multithreading library should be made weak.])
-              LIBTHREAD=
-              LTLIBTHREAD=
-            fi
-          fi
-        fi
-      fi
-    fi
-    if test -z "$gl_have_pthread"; then
-      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
-        gl_have_solaristhread=
-        gl_save_LIBS="$LIBS"
-        LIBS="$LIBS -lthread"
-        AC_TRY_LINK([#include <thread.h>
-#include <synch.h>],
-          [thr_self();],
-          [gl_have_solaristhread=yes])
-        LIBS="$gl_save_LIBS"
-        if test -n "$gl_have_solaristhread"; then
-          gl_threads_api=solaris
-          LIBTHREAD=-lthread
-          LTLIBTHREAD=-lthread
-          LIBMULTITHREAD="$LIBTHREAD"
-          LTLIBMULTITHREAD="$LTLIBTHREAD"
-          AC_DEFINE([USE_SOLARIS_THREADS], [1],
-            [Define if the old Solaris multithreading library can be used.])
-          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
-              [Define if references to the old Solaris multithreading library should be made weak.])
-            LIBTHREAD=
-            LTLIBTHREAD=
-          fi
-        fi
-      fi
-    fi
-    if test "$gl_use_threads" = pth; then
-      gl_save_CPPFLAGS="$CPPFLAGS"
-      AC_LIB_LINKFLAGS([pth])
-      gl_have_pth=
-      gl_save_LIBS="$LIBS"
-      LIBS="$LIBS -lpth"
-      AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
-      LIBS="$gl_save_LIBS"
-      if test -n "$gl_have_pth"; then
-        gl_threads_api=pth
-        LIBTHREAD="$LIBPTH"
-        LTLIBTHREAD="$LTLIBPTH"
-        LIBMULTITHREAD="$LIBTHREAD"
-        LTLIBMULTITHREAD="$LTLIBTHREAD"
-        AC_DEFINE([USE_PTH_THREADS], [1],
-          [Define if the GNU Pth multithreading library can be used.])
-        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
-          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-            AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
-              [Define if references to the GNU Pth multithreading library should be made weak.])
-            LIBTHREAD=
-            LTLIBTHREAD=
-          fi
-        fi
-      else
-        CPPFLAGS="$gl_save_CPPFLAGS"
-      fi
-    fi
-    if test -z "$gl_have_pthread"; then
-      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
-        if { case "$host_os" in
-               mingw*) true;;
-               *) false;;
-             esac
-           }; then
-          gl_threads_api=win32
-          AC_DEFINE([USE_WIN32_THREADS], [1],
-            [Define if the Win32 multithreading API can be used.])
-        fi
-      fi
-    fi
-  fi
-  AC_MSG_CHECKING([for multithread API to use])
-  AC_MSG_RESULT([$gl_threads_api])
-  AC_SUBST([LIBTHREAD])
-  AC_SUBST([LTLIBTHREAD])
-  AC_SUBST([LIBMULTITHREAD])
-  AC_SUBST([LTLIBMULTITHREAD])
-])
-m4trace:m4/threadlib.m4:278: -1- AC_DEFUN([gl_THREADLIB], [
-  AC_REQUIRE([gl_THREADLIB_EARLY])
-  AC_REQUIRE([gl_THREADLIB_BODY])
-])
-m4trace:m4/threadlib.m4:291: -1- AC_DEFUN([gl_DISABLE_THREADS], [
-  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
-])
-m4trace:m4/tuklib_common.m4:18: -1- AC_DEFUN_ONCE([TUKLIB_COMMON], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-AC_REQUIRE([AC_PROG_CC_C99])
-AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-])
-m4trace:m4/tuklib_cpucores.m4:26: -1- AC_DEFUN_ONCE([TUKLIB_CPUCORES], [
-AC_REQUIRE([TUKLIB_COMMON])
-
-# sys/param.h might be needed by sys/sysctl.h.
-AC_CHECK_HEADERS([sys/param.h])
-
-AC_CACHE_CHECK([how to detect the number of available CPU cores],
-	[tuklib_cv_cpucores_method], [
-
-# Maybe checking $host_os would be enough but this matches what
-# tuklib_cpucores.c does.
-#
-# NOTE: IRIX has a compiler that doesn't error out with #error, so use
-# a non-compilable text instead of #error to generate an error.
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#if defined(_WIN32) || defined(__CYGWIN__)
-int main(void) { return 0; }
-#else
-compile error
-#endif
-]])], [tuklib_cv_cpucores_method=special], [
-
-# FreeBSD has both cpuset and sysctl. Look for cpuset first because
-# it's a better approach.
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/param.h>
-#include <sys/cpuset.h>
-
-int
-main(void)
-{
-	cpuset_t set;
-	cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1,
-			sizeof(set), &set);
-	return 0;
-}
-]])], [tuklib_cv_cpucores_method=cpuset], [
-
-# On OS/2, both sysconf() and sysctl() pass the tests in this file,
-# but only sysctl() works. On QNX it's the opposite: only sysconf() works
-# (although it assumes that _POSIX_SOURCE, _XOPEN_SOURCE, and _POSIX_C_SOURCE
-# are undefined or alternatively _QNX_SOURCE is defined).
-#
-# We test sysctl() first and intentionally break the sysctl() test on QNX
-# so that sysctl() is never used on QNX.
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#ifdef __QNX__
-compile error
-#endif
-#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#	include <sys/param.h>
-#endif
-#include <sys/sysctl.h>
-int
-main(void)
-{
-	int name[2] = { CTL_HW, HW_NCPU };
-	int cpus;
-	size_t cpus_size = sizeof(cpus);
-	sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
-	return 0;
-}
-]])], [tuklib_cv_cpucores_method=sysctl], [
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <unistd.h>
-int
-main(void)
-{
-	long i;
-#ifdef _SC_NPROCESSORS_ONLN
-	/* Many systems using sysconf() */
-	i = sysconf(_SC_NPROCESSORS_ONLN);
-#else
-	/* IRIX */
-	i = sysconf(_SC_NPROC_ONLN);
-#endif
-	return 0;
-}
-]])], [tuklib_cv_cpucores_method=sysconf], [
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/param.h>
-#include <sys/pstat.h>
-
-int
-main(void)
-{
-	struct pst_dynamic pst;
-	pstat_getdynamic(&pst, sizeof(pst), 1, 0);
-	(void)pst.psd_proc_cnt;
-	return 0;
-}
-]])], [tuklib_cv_cpucores_method=pstat_getdynamic], [
-
-	tuklib_cv_cpucores_method=unknown
-])])])])])])
-
-case $tuklib_cv_cpucores_method in
-	cpuset)
-		AC_DEFINE([TUKLIB_CPUCORES_CPUSET], [1],
-			[Define to 1 if the number of available CPU cores
-			can be detected with cpuset(2).])
-		;;
-	sysctl)
-		AC_DEFINE([TUKLIB_CPUCORES_SYSCTL], [1],
-			[Define to 1 if the number of available CPU cores
-			can be detected with sysctl().])
-		;;
-	sysconf)
-		AC_DEFINE([TUKLIB_CPUCORES_SYSCONF], [1],
-			[Define to 1 if the number of available CPU cores
-			can be detected with sysconf(_SC_NPROCESSORS_ONLN)
-			or sysconf(_SC_NPROC_ONLN).])
-		;;
-	pstat_getdynamic)
-		AC_DEFINE([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC], [1],
-			[Define to 1 if the number of available CPU cores
-			can be detected with pstat_getdynamic().])
-		;;
-esac
-])
-m4trace:m4/tuklib_integer.m4:22: -1- AC_DEFUN_ONCE([TUKLIB_INTEGER], [
-AC_REQUIRE([TUKLIB_COMMON])
-AC_REQUIRE([AC_C_BIGENDIAN])
-AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break])
-
-# Even if we have byteswap.h, we may lack the specific macros/functions.
-if test x$ac_cv_header_byteswap_h = xyes ; then
-	m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [
-		AC_MSG_CHECKING([if FUNC is available])
-		AC_LINK_IFELSE([AC_LANG_SOURCE([
-#include <byteswap.h>
-int
-main(void)
-{
-	FUNC[](42);
-	return 0;
-}
-		])], [
-			AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1],
-					[Define to 1 if] FUNC [is available.])
-			AC_MSG_RESULT([yes])
-		], [AC_MSG_RESULT([no])])
-
-	])dnl
-fi
-
-AC_MSG_CHECKING([if unaligned memory access should be used])
-AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access],
-		[Enable if the system supports *fast* unaligned memory access
-		with 16-bit and 32-bit integers. By default, this is enabled
-		only on x86, x86_64, and big endian PowerPC.]),
-	[], [enable_unaligned_access=auto])
-if test "x$enable_unaligned_access" = xauto ; then
-	# TODO: There may be other architectures, on which unaligned access
-	# is OK.
-	case $host_cpu in
-		i?86|x86_64|powerpc|powerpc64)
-			enable_unaligned_access=yes
-			;;
-		*)
-			enable_unaligned_access=no
-			;;
-	esac
-fi
-if test "x$enable_unaligned_access" = xyes ; then
-	AC_DEFINE([TUKLIB_FAST_UNALIGNED_ACCESS], [1], [Define to 1 if
-		the system supports fast unaligned access to 16-bit and
-		32-bit integers.])
-	AC_MSG_RESULT([yes])
-else
-	AC_MSG_RESULT([no])
-fi
-])
-m4trace:m4/tuklib_mbstr.m4:26: -1- AC_DEFUN_ONCE([TUKLIB_MBSTR], [
-AC_REQUIRE([TUKLIB_COMMON])
-AC_FUNC_MBRTOWC
-AC_CHECK_FUNCS([wcwidth])
-])
-m4trace:m4/tuklib_physmem.m4:40: -1- AC_DEFUN_ONCE([TUKLIB_PHYSMEM], [
-AC_REQUIRE([TUKLIB_COMMON])
-
-# sys/param.h might be needed by sys/sysctl.h.
-AC_CHECK_HEADERS([sys/param.h])
-
-AC_CACHE_CHECK([how to detect the amount of physical memory],
-	[tuklib_cv_physmem_method], [
-
-# Maybe checking $host_os would be enough but this matches what
-# tuklib_physmem.c does.
-#
-# NOTE: IRIX has a compiler that doesn't error out with #error, so use
-# a non-compilable text instead of #error to generate an error.
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(__OS2__) \
-		|| defined(__DJGPP__) || defined(__VMS) \
-		|| defined(AMIGA) || defined(__AROS__) || defined(__QNX__)
-int main(void) { return 0; }
-#else
-compile error
-#endif
-]])], [tuklib_cv_physmem_method=special], [
-
-# Look for AIX-specific solution before sysconf(), because the test
-# for sysconf() will pass on AIX but won't actually work
-# (sysconf(_SC_PHYS_PAGES) compiles but always returns -1 on AIX).
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/systemcfg.h>
-
-int
-main(void)
-{
-	(void)_system_configuration.physmem;
-	return 0;
-}
-]])], [tuklib_cv_physmem_method=aix], [
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <unistd.h>
-int
-main(void)
-{
-	long i;
-	i = sysconf(_SC_PAGESIZE);
-	i = sysconf(_SC_PHYS_PAGES);
-	return 0;
-}
-]])], [tuklib_cv_physmem_method=sysconf], [
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#	include <sys/param.h>
-#endif
-#include <sys/sysctl.h>
-int
-main(void)
-{
-	int name[2] = { CTL_HW, HW_PHYSMEM };
-	unsigned long mem;
-	size_t mem_ptr_size = sizeof(mem);
-	sysctl(name, 2, &mem, &mem_ptr_size, NULL, 0);
-	return 0;
-}
-]])], [tuklib_cv_physmem_method=sysctl], [
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/sysinfo.h>
-#include <machine/hal_sysinfo.h>
-
-int
-main(void)
-{
-	int memkb;
-	int start = 0;
-	getsysinfo(GSI_PHYSMEM, (caddr_t)&memkb, sizeof(memkb), &start);
-	return 0;
-}
-]])], [tuklib_cv_physmem_method=getsysinfo],[
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/param.h>
-#include <sys/pstat.h>
-
-int
-main(void)
-{
-	struct pst_static pst;
-	pstat_getstatic(&pst, sizeof(pst), 1, 0);
-	(void)pst.physical_memory;
-	(void)pst.page_size;
-	return 0;
-}
-]])], [tuklib_cv_physmem_method=pstat_getstatic],[
-
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <invent.h>
-int
-main(void)
-{
-	inv_state_t *st = NULL;
-	setinvent_r(&st);
-	getinvent_r(st);
-	endinvent_r(st);
-	return 0;
-}
-]])], [tuklib_cv_physmem_method=getinvent_r], [
-
-# This version of sysinfo() is Linux-specific. Some non-Linux systems have
-# different sysinfo() so we must check $host_os.
-case $host_os in
-	linux*)
-		AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <sys/sysinfo.h>
-int
-main(void)
-{
-	struct sysinfo si;
-	sysinfo(&si);
-	return 0;
-}
-		]])], [
-			tuklib_cv_physmem_method=sysinfo
-		], [
-			tuklib_cv_physmem_method=unknown
-		])
-		;;
-	*)
-		tuklib_cv_physmem_method=unknown
-		;;
-esac
-])])])])])])])])
-
-case $tuklib_cv_physmem_method in
-	aix)
-		AC_DEFINE([TUKLIB_PHYSMEM_AIX], [1],
-			[Define to 1 if the amount of physical memory
-			can be detected with _system_configuration.physmem.])
-		;;
-	sysconf)
-		AC_DEFINE([TUKLIB_PHYSMEM_SYSCONF], [1],
-			[Define to 1 if the amount of physical memory can
-			be detected with sysconf(_SC_PAGESIZE) and
-			sysconf(_SC_PHYS_PAGES).])
-		;;
-	sysctl)
-		AC_DEFINE([TUKLIB_PHYSMEM_SYSCTL], [1],
-			[Define to 1 if the amount of physical memory can
-			be detected with sysctl().])
-		;;
-	getsysinfo)
-		AC_DEFINE([TUKLIB_PHYSMEM_GETSYSINFO], [1],
-			[Define to 1 if the amount of physical memory can
-			be detected with getsysinfo().])
-		;;
-	pstat_getstatic)
-		AC_DEFINE([TUKLIB_PHYSMEM_PSTAT_GETSTATIC], [1],
-			[Define to 1 if the amount of physical memory can
-			be detected with pstat_getstatic().])
-		;;
-	getinvent_r)
-		AC_DEFINE([TUKLIB_PHYSMEM_GETINVENT_R], [1],
-			[Define to 1 if the amount of physical memory
-			can be detected with getinvent_r().])
-		;;
-	sysinfo)
-		AC_DEFINE([TUKLIB_PHYSMEM_SYSINFO], [1],
-			[Define to 1 if the amount of physical memory
-			can be detected with Linux sysinfo().])
-		;;
-esac
-])
-m4trace:m4/tuklib_progname.m4:22: -1- AC_DEFUN_ONCE([TUKLIB_PROGNAME], [
-AC_REQUIRE([TUKLIB_COMMON])
-AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
-])
-m4trace:m4/uintmax_t.m4:14: -1- AC_DEFUN([gl_AC_TYPE_UINTMAX_T], [
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
-    AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
-    test $ac_cv_type_unsigned_long_long_int = yes \
-      && ac_type='unsigned long long' \
-      || ac_type='unsigned long'
-    AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
-      [Define to unsigned long or unsigned long long
-       if <stdint.h> and <inttypes.h> don't define.])
-  else
-    AC_DEFINE([HAVE_UINTMAX_T], [1],
-      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
-m4trace:m4/visibility.m4:23: -1- AC_DEFUN([gl_VISIBILITY], [
-  AC_REQUIRE([AC_PROG_CC])
-  CFLAG_VISIBILITY=
-  HAVE_VISIBILITY=0
-  if test -n "$GCC"; then
-    dnl First, check whether -Werror can be added to the command line, or
-    dnl whether it leads to an error because of some other option that the
-    dnl user has put into $CC $CFLAGS $CPPFLAGS.
-    AC_MSG_CHECKING([whether the -Werror option is usable])
-    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
-      gl_save_CFLAGS="$CFLAGS"
-      CFLAGS="$CFLAGS -Werror"
-      AC_TRY_COMPILE([], [],
-        [gl_cv_cc_vis_werror=yes],
-        [gl_cv_cc_vis_werror=no])
-      CFLAGS="$gl_save_CFLAGS"])
-    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
-    dnl Now check whether visibility declarations are supported.
-    AC_MSG_CHECKING([for simple visibility declarations])
-    AC_CACHE_VAL([gl_cv_cc_visibility], [
-      gl_save_CFLAGS="$CFLAGS"
-      CFLAGS="$CFLAGS -fvisibility=hidden"
-      dnl We use the option -Werror and a function dummyfunc, because on some
-      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
-      dnl "visibility attribute not supported in this configuration; ignored"
-      dnl at the first function definition in every compilation unit, and we
-      dnl don't want to use the option in this case.
-      if test $gl_cv_cc_vis_werror = yes; then
-        CFLAGS="$CFLAGS -Werror"
-      fi
-      AC_TRY_COMPILE(
-        [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
-         extern __attribute__((__visibility__("default"))) int exportedvar;
-         extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
-         extern __attribute__((__visibility__("default"))) int exportedfunc (void);
-         void dummyfunc (void) {}],
-        [],
-        [gl_cv_cc_visibility=yes],
-        [gl_cv_cc_visibility=no])
-      CFLAGS="$gl_save_CFLAGS"])
-    AC_MSG_RESULT([$gl_cv_cc_visibility])
-    if test $gl_cv_cc_visibility = yes; then
-      CFLAG_VISIBILITY="-fvisibility=hidden"
-      HAVE_VISIBILITY=1
-    fi
-  fi
-  AC_SUBST([CFLAG_VISIBILITY])
-  AC_SUBST([HAVE_VISIBILITY])
-  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
-    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
-])
-m4trace:m4/wchar_t.m4:11: -1- AC_DEFUN([gt_TYPE_WCHAR_T], [
-  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
-    [AC_TRY_COMPILE([#include <stddef.h>
-       wchar_t foo = (wchar_t)'\0';], ,
-       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
-  if test $gt_cv_c_wchar_t = yes; then
-    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
-  fi
-])
-m4trace:m4/wint_t.m4:11: -1- AC_DEFUN([gt_TYPE_WINT_T], [
-  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
-    [AC_TRY_COMPILE([
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
-   before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-       wint_t foo = (wchar_t)'\0';], ,
-       [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
-  if test $gt_cv_c_wint_t = yes; then
-    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
-  fi
-])
-m4trace:m4/xsize.m4:7: -1- AC_DEFUN([gl_XSIZE], [
-  dnl Prerequisites of lib/xsize.h.
-  AC_REQUIRE([gl_SIZE_MAX])
-  AC_REQUIRE([AC_C_INLINE])
-  AC_CHECK_HEADERS([stdint.h])
-])
+m4trace:aclocal.m4:735: -1- AC_SUBST([am__quote])
+m4trace:aclocal.m4:735: -1- AC_SUBST_TRACE([am__quote])
+m4trace:aclocal.m4:735: -1- m4_pattern_allow([^am__quote$])
+m4trace:aclocal.m4:1224: -1- m4_include([m4/ax_check_capsicum.m4])
+m4trace:aclocal.m4:1225: -1- m4_include([m4/ax_pthread.m4])
+m4trace:aclocal.m4:1226: -1- m4_include([m4/getopt.m4])
+m4trace:aclocal.m4:1227: -1- m4_include([m4/gettext.m4])
+m4trace:aclocal.m4:1228: -1- m4_include([m4/iconv.m4])
+m4trace:aclocal.m4:1229: -1- m4_include([m4/intlmacosx.m4])
+m4trace:aclocal.m4:1230: -1- m4_include([m4/lib-ld.m4])
+m4trace:aclocal.m4:1231: -1- m4_include([m4/lib-link.m4])
+m4trace:aclocal.m4:1232: -1- m4_include([m4/lib-prefix.m4])
+m4trace:aclocal.m4:1233: -1- m4_include([m4/libtool.m4])
+m4trace:aclocal.m4:1234: -1- m4_include([m4/ltoptions.m4])
+m4trace:aclocal.m4:1235: -1- m4_include([m4/ltsugar.m4])
+m4trace:aclocal.m4:1236: -1- m4_include([m4/ltversion.m4])
+m4trace:aclocal.m4:1237: -1- m4_include([m4/lt~obsolete.m4])
+m4trace:aclocal.m4:1238: -1- m4_include([m4/nls.m4])
+m4trace:aclocal.m4:1239: -1- m4_include([m4/po.m4])
+m4trace:aclocal.m4:1240: -1- m4_include([m4/posix-shell.m4])
+m4trace:aclocal.m4:1241: -1- m4_include([m4/progtest.m4])
+m4trace:aclocal.m4:1242: -1- m4_include([m4/tuklib_common.m4])
+m4trace:aclocal.m4:1243: -1- m4_include([m4/tuklib_cpucores.m4])
+m4trace:aclocal.m4:1244: -1- m4_include([m4/tuklib_integer.m4])
+m4trace:aclocal.m4:1245: -1- m4_include([m4/tuklib_mbstr.m4])
+m4trace:aclocal.m4:1246: -1- m4_include([m4/tuklib_physmem.m4])
+m4trace:aclocal.m4:1247: -1- m4_include([m4/tuklib_progname.m4])
+m4trace:aclocal.m4:1248: -1- m4_include([m4/visibility.m4])
+m4trace:configure.ac:20: -1- AC_INIT([XZ Utils], [5.2.3], [lasse.collin@tukaani.org], [xz], [http://tukaani.org/xz/])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
@@ -6140,857 +34,1789 @@
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?m4_])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^dnl$])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:20: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([SHELL])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:20: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_NAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_STRING])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_URL])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:20: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([exec_prefix])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:20: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([prefix])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:20: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([program_transform_name])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:20: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([bindir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:20: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([sbindir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:20: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([libexecdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([datarootdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([datadir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:20: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([sysconfdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([sharedstatedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:20: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([localstatedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:20: -1- AC_SUBST([runstatedir], ['${localstatedir}/run'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([runstatedir])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^runstatedir$])
+m4trace:configure.ac:20: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([includedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:20: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([oldincludedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:20: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+				     ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([docdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([infodir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:20: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([htmldir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:20: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([dvidir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:20: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([pdfdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([psdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([libdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:20: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([localedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:20: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([mandir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:20: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([DEFS])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:20: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([ECHO_C])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:20: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([ECHO_N])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:20: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([ECHO_T])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:20: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([LIBS])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:20: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([build_alias])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:20: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([host_alias])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:20: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([target_alias])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:24: -1- AC_CONFIG_MACRO_DIR([m4])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:40: -1- AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^COND_W32_TRUE$])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^COND_W32_FALSE$])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([COND_W32_TRUE])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([COND_W32_FALSE])
-m4trace:configure.ac:56: -1- m4_pattern_allow([^LN_EXEEXT$])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^NDEBUG$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA1$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA2$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_DELTA$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_X86$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_POWERPC$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_IA64$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_ARM$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_ARMTHUMB$])
-m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_ENCODER_SPARC$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_LZMA1$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_LZMA2$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_DELTA$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_X86$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_POWERPC$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_IA64$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_ARM$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_ARMTHUMB$])
-m4trace:configure.ac:131: -1- m4_pattern_allow([^HAVE_DECODER_SPARC$])
-m4trace:configure.ac:157: -1- AM_CONDITIONAL([COND_MAIN_ENCODER], [test "x$enable_encoders" != xno && test "x$enable_encoders" != x])
-m4trace:configure.ac:157: -1- m4_pattern_allow([^COND_MAIN_ENCODER_TRUE$])
-m4trace:configure.ac:157: -1- m4_pattern_allow([^COND_MAIN_ENCODER_FALSE$])
-m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_TRUE])
-m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_FALSE])
-m4trace:configure.ac:158: -1- AM_CONDITIONAL([COND_MAIN_DECODER], [test "x$enable_decoders" != xno && test "x$enable_decoders" != x])
-m4trace:configure.ac:158: -1- m4_pattern_allow([^COND_MAIN_DECODER_TRUE$])
-m4trace:configure.ac:158: -1- m4_pattern_allow([^COND_MAIN_DECODER_FALSE$])
-m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_TRUE])
-m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_LZMA1], [test "x$enable_filter_lzma1" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_LZMA1_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_LZMA1_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_LZMA1], [test "x$enable_encoder_lzma1" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_LZMA1], [test "x$enable_decoder_lzma1" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_LZMA1_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_LZMA1_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_LZMA2], [test "x$enable_filter_lzma2" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_LZMA2_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_LZMA2_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_LZMA2], [test "x$enable_encoder_lzma2" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_LZMA2], [test "x$enable_decoder_lzma2" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_LZMA2_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_LZMA2_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_DELTA], [test "x$enable_filter_delta" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_DELTA_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_DELTA_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_DELTA], [test "x$enable_encoder_delta" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_DELTA_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_DELTA_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_DELTA], [test "x$enable_decoder_delta" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_DELTA_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_DELTA_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_X86], [test "x$enable_filter_x86" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_X86_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_X86_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_X86], [test "x$enable_encoder_x86" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_X86_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_X86_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_X86], [test "x$enable_decoder_x86" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_X86_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_X86_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_POWERPC], [test "x$enable_filter_powerpc" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_POWERPC_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_POWERPC_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_POWERPC], [test "x$enable_encoder_powerpc" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_POWERPC], [test "x$enable_decoder_powerpc" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_POWERPC_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_POWERPC_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_IA64], [test "x$enable_filter_ia64" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_IA64_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_IA64_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_IA64], [test "x$enable_encoder_ia64" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_IA64_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_IA64_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_IA64], [test "x$enable_decoder_ia64" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_IA64_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_IA64_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_ARM], [test "x$enable_filter_arm" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_ARM_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_ARM_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_ARM], [test "x$enable_encoder_arm" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_ARM_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_ARM_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_ARM], [test "x$enable_decoder_arm" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_ARM_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_ARM_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_ARMTHUMB], [test "x$enable_filter_armthumb" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_ARMTHUMB], [test "x$enable_encoder_armthumb" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_ARMTHUMB], [test "x$enable_decoder_armthumb" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_FILTER_SPARC], [test "x$enable_filter_sparc" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_SPARC_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_FILTER_SPARC_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_ENCODER_SPARC], [test "x$enable_encoder_sparc" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_SPARC_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_ENCODER_SPARC_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_FALSE])
-m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_DECODER_SPARC], [test "x$enable_decoder_sparc" = xyes])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_SPARC_TRUE$])
-m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_DECODER_SPARC_FALSE$])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_TRUE])
-m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_FALSE])
-m4trace:configure.ac:175: -1- AM_CONDITIONAL([COND_FILTER_SIMPLE], [test "x$enable_filter_simple" = xyes])
-m4trace:configure.ac:175: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_TRUE$])
-m4trace:configure.ac:175: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_FALSE$])
-m4trace:configure.ac:175: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_TRUE])
-m4trace:configure.ac:175: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_FALSE])
-m4trace:configure.ac:176: -1- AM_CONDITIONAL([COND_ENCODER_SIMPLE], [test "x$enable_encoder_simple" = xyes])
-m4trace:configure.ac:176: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_TRUE$])
-m4trace:configure.ac:176: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_FALSE$])
-m4trace:configure.ac:176: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_TRUE])
-m4trace:configure.ac:176: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_FALSE])
-m4trace:configure.ac:177: -1- AM_CONDITIONAL([COND_DECODER_SIMPLE], [test "x$enable_decoder_simple" = xyes])
-m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_TRUE$])
-m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_FALSE$])
-m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_TRUE])
-m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_FALSE])
-m4trace:configure.ac:188: -1- AM_CONDITIONAL([COND_FILTER_LZ], [test "x$enable_filter_lz" = xyes])
-m4trace:configure.ac:188: -1- m4_pattern_allow([^COND_FILTER_LZ_TRUE$])
-m4trace:configure.ac:188: -1- m4_pattern_allow([^COND_FILTER_LZ_FALSE$])
-m4trace:configure.ac:188: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_TRUE])
-m4trace:configure.ac:188: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_FALSE])
-m4trace:configure.ac:189: -1- AM_CONDITIONAL([COND_ENCODER_LZ], [test "x$enable_encoder_lz" = xyes])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^COND_ENCODER_LZ_TRUE$])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^COND_ENCODER_LZ_FALSE$])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_TRUE])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_FALSE])
-m4trace:configure.ac:190: -1- AM_CONDITIONAL([COND_DECODER_LZ], [test "x$enable_decoder_lz" = xyes])
-m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_DECODER_LZ_TRUE$])
-m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_DECODER_LZ_FALSE$])
-m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_TRUE])
-m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_FALSE])
-m4trace:configure.ac:214: -1- m4_pattern_allow([^HAVE_MF_HC3$])
-m4trace:configure.ac:214: -1- m4_pattern_allow([^HAVE_MF_HC4$])
-m4trace:configure.ac:214: -1- m4_pattern_allow([^HAVE_MF_BT2$])
-m4trace:configure.ac:214: -1- m4_pattern_allow([^HAVE_MF_BT3$])
-m4trace:configure.ac:214: -1- m4_pattern_allow([^HAVE_MF_BT4$])
-m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_CHECK_CRC32$])
-m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_CHECK_CRC64$])
-m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_CHECK_SHA256$])
-m4trace:configure.ac:273: -1- AM_CONDITIONAL([COND_CHECK_CRC32], [test "x$enable_check_crc32" = xyes])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^COND_CHECK_CRC32_TRUE$])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^COND_CHECK_CRC32_FALSE$])
-m4trace:configure.ac:273: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_TRUE])
-m4trace:configure.ac:273: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_FALSE])
-m4trace:configure.ac:273: -1- AM_CONDITIONAL([COND_CHECK_CRC64], [test "x$enable_check_crc64" = xyes])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^COND_CHECK_CRC64_TRUE$])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^COND_CHECK_CRC64_FALSE$])
-m4trace:configure.ac:273: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_TRUE])
-m4trace:configure.ac:273: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_FALSE])
-m4trace:configure.ac:273: -1- AM_CONDITIONAL([COND_CHECK_SHA256], [test "x$enable_check_sha256" = xyes])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^COND_CHECK_SHA256_TRUE$])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^COND_CHECK_SHA256_FALSE$])
-m4trace:configure.ac:273: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_TRUE])
-m4trace:configure.ac:273: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_FALSE])
-m4trace:configure.ac:309: -1- AM_CONDITIONAL([COND_ASM_X86], [test "x$enable_assembler" = xx86])
-m4trace:configure.ac:309: -1- m4_pattern_allow([^COND_ASM_X86_TRUE$])
-m4trace:configure.ac:309: -1- m4_pattern_allow([^COND_ASM_X86_FALSE$])
-m4trace:configure.ac:309: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_TRUE])
-m4trace:configure.ac:309: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_FALSE])
-m4trace:configure.ac:310: -1- AM_CONDITIONAL([COND_ASM_X86_64], [test "x$enable_assembler" = xx86_64])
-m4trace:configure.ac:310: -1- m4_pattern_allow([^COND_ASM_X86_64_TRUE$])
-m4trace:configure.ac:310: -1- m4_pattern_allow([^COND_ASM_X86_64_FALSE$])
-m4trace:configure.ac:310: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_TRUE])
-m4trace:configure.ac:310: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_FALSE])
-m4trace:configure.ac:323: -1- m4_pattern_allow([^HAVE_SMALL$])
-m4trace:configure.ac:329: -1- AM_CONDITIONAL([COND_SMALL], [test "x$enable_small" = xyes])
-m4trace:configure.ac:329: -1- m4_pattern_allow([^COND_SMALL_TRUE$])
-m4trace:configure.ac:329: -1- m4_pattern_allow([^COND_SMALL_FALSE$])
-m4trace:configure.ac:329: -1- _AM_SUBST_NOTMAKE([COND_SMALL_TRUE])
-m4trace:configure.ac:329: -1- _AM_SUBST_NOTMAKE([COND_SMALL_FALSE])
-m4trace:configure.ac:401: -1- m4_pattern_allow([^ASSUME_RAM$])
-m4trace:configure.ac:413: -1- AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
-m4trace:configure.ac:413: -1- m4_pattern_allow([^COND_XZ_TRUE$])
-m4trace:configure.ac:413: -1- m4_pattern_allow([^COND_XZ_FALSE$])
-m4trace:configure.ac:413: -1- _AM_SUBST_NOTMAKE([COND_XZ_TRUE])
-m4trace:configure.ac:413: -1- _AM_SUBST_NOTMAKE([COND_XZ_FALSE])
-m4trace:configure.ac:418: -1- AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
-m4trace:configure.ac:418: -1- m4_pattern_allow([^COND_XZDEC_TRUE$])
-m4trace:configure.ac:418: -1- m4_pattern_allow([^COND_XZDEC_FALSE$])
-m4trace:configure.ac:418: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_TRUE])
-m4trace:configure.ac:418: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_FALSE])
-m4trace:configure.ac:424: -1- AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
-m4trace:configure.ac:424: -1- m4_pattern_allow([^COND_LZMADEC_TRUE$])
-m4trace:configure.ac:424: -1- m4_pattern_allow([^COND_LZMADEC_FALSE$])
-m4trace:configure.ac:424: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_TRUE])
-m4trace:configure.ac:424: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_FALSE])
-m4trace:configure.ac:430: -1- AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
-m4trace:configure.ac:430: -1- m4_pattern_allow([^COND_LZMAINFO_TRUE$])
-m4trace:configure.ac:430: -1- m4_pattern_allow([^COND_LZMAINFO_FALSE$])
-m4trace:configure.ac:430: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_TRUE])
-m4trace:configure.ac:430: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_FALSE])
-m4trace:configure.ac:435: -1- AM_CONDITIONAL([COND_LZMALINKS], [test x$enable_lzma_links != xno])
-m4trace:configure.ac:435: -1- m4_pattern_allow([^COND_LZMALINKS_TRUE$])
-m4trace:configure.ac:435: -1- m4_pattern_allow([^COND_LZMALINKS_FALSE$])
-m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_TRUE])
-m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_FALSE])
-m4trace:configure.ac:441: -1- AM_CONDITIONAL([COND_SCRIPTS], [test x$enable_scripts != xno])
-m4trace:configure.ac:441: -1- m4_pattern_allow([^COND_SCRIPTS_TRUE$])
-m4trace:configure.ac:441: -1- m4_pattern_allow([^COND_SCRIPTS_FALSE$])
-m4trace:configure.ac:441: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_TRUE])
-m4trace:configure.ac:441: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_FALSE])
-m4trace:configure.ac:447: -1- AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
-m4trace:configure.ac:447: -1- m4_pattern_allow([^COND_DOC_TRUE$])
-m4trace:configure.ac:447: -1- m4_pattern_allow([^COND_DOC_FALSE$])
-m4trace:configure.ac:447: -1- _AM_SUBST_NOTMAKE([COND_DOC_TRUE])
-m4trace:configure.ac:447: -1- _AM_SUBST_NOTMAKE([COND_DOC_FALSE])
-m4trace:configure.ac:474: -1- AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
-m4trace:configure.ac:474: -1- m4_pattern_allow([^COND_SYMVERS_TRUE$])
-m4trace:configure.ac:474: -1- m4_pattern_allow([^COND_SYMVERS_FALSE$])
-m4trace:configure.ac:474: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_TRUE])
-m4trace:configure.ac:474: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_FALSE])
-m4trace:configure.ac:482: -1- gl_POSIX_SHELL
-m4trace:configure.ac:482: -1- m4_pattern_allow([^POSIX_SHELL$])
-m4trace:configure.ac:482: -1- m4_pattern_allow([^PREFERABLY_POSIX_SHELL$])
-m4trace:configure.ac:495: -1- AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:495: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
-m4trace:configure.ac:495: -1- AM_AUTOMAKE_VERSION([1.14.1])
-m4trace:configure.ac:495: -1- _AM_AUTOCONF_VERSION([2.69])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:495: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:495: -1- _AM_SET_OPTIONS([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
-m4trace:configure.ac:495: -1- _AM_SET_OPTION([1.12])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([1.12])
-m4trace:configure.ac:495: -1- _AM_SET_OPTION([foreign])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([foreign])
-m4trace:configure.ac:495: -1- _AM_SET_OPTION([tar-v7])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([tar-v7])
-m4trace:configure.ac:495: -1- _AM_SET_OPTION([filename-length-max=99])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([filename-length-max=99])
-m4trace:configure.ac:495: -1- _AM_SET_OPTION([serial-tests])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([serial-tests])
-m4trace:configure.ac:495: -1- _AM_SET_OPTION([-Wno-unsupported])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([-Wno-unsupported])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:495: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([no-define])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:495: -1- AM_SANITY_CHECK
-m4trace:configure.ac:495: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-m4trace:configure.ac:495: -1- AM_MISSING_HAS_RUN
-m4trace:configure.ac:495: -1- AM_AUX_DIR_EXPAND
-m4trace:configure.ac:495: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:495: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:495: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:495: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:495: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:495: -1- AM_PROG_INSTALL_SH
-m4trace:configure.ac:495: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:495: -1- AM_PROG_INSTALL_STRIP
-m4trace:configure.ac:495: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:495: -1- AM_SET_LEADING_DOT
-m4trace:configure.ac:495: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:495: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([tar-ustar])
-m4trace:configure.ac:495: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([tar-pax])
-m4trace:configure.ac:495: -1- _AM_PROG_TAR([v7])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:495: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-m4trace:configure.ac:495: -2- _AM_MANGLE_OPTION([no-dependencies])
-m4trace:configure.ac:495: -1- AM_SILENT_RULES
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AM_V$])
-m4trace:configure.ac:495: -1- AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:495: -1- _AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AM_DEFAULT_V$])
-m4trace:configure.ac:495: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:495: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
-m4trace:configure.ac:495: -1- m4_pattern_allow([^AM_BACKSLASH$])
-m4trace:configure.ac:495: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
-m4trace:configure.ac:496: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:498: -1- _AM_PROG_CC_C_O
-m4trace:configure.ac:498: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
-m4trace:configure.ac:498: -1- _AM_DEPENDENCIES([CC])
-m4trace:configure.ac:498: -1- AM_SET_DEPDIR
-m4trace:configure.ac:498: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:498: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
-m4trace:configure.ac:498: -1- AM_MAKE_INCLUDE
-m4trace:configure.ac:498: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:498: -1- AM_DEP_TRACK
-m4trace:configure.ac:498: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:498: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:498: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:498: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:498: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:498: -1- AM_CONDITIONAL([am__fastdepCC], [
+m4trace:configure.ac:23: -1- AC_CONFIG_AUX_DIR([build-aux])
+m4trace:configure.ac:25: -1- AC_CONFIG_HEADERS([config.h])
+m4trace:configure.ac:26: -1- AM_MAINTAINER_MODE
+m4trace:configure.ac:26: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:26: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:26: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:26: -1- AC_SUBST([MAINT])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([MAINT])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:34: -1- AC_CANONICAL_HOST
+m4trace:configure.ac:34: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:34: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.ac:34: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.ac:34: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([build])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:34: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:34: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:34: -1- AC_SUBST([build_os])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:34: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([host])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:34: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:34: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:34: -1- AC_SUBST([host_os])
+m4trace:configure.ac:34: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:41: -1- AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
+m4trace:configure.ac:41: -1- AC_SUBST([COND_W32_TRUE])
+m4trace:configure.ac:41: -1- AC_SUBST_TRACE([COND_W32_TRUE])
+m4trace:configure.ac:41: -1- m4_pattern_allow([^COND_W32_TRUE$])
+m4trace:configure.ac:41: -1- AC_SUBST([COND_W32_FALSE])
+m4trace:configure.ac:41: -1- AC_SUBST_TRACE([COND_W32_FALSE])
+m4trace:configure.ac:41: -1- m4_pattern_allow([^COND_W32_FALSE$])
+m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([COND_W32_TRUE])
+m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([COND_W32_FALSE])
+m4trace:configure.ac:57: -1- AC_SUBST([LN_EXEEXT])
+m4trace:configure.ac:57: -1- AC_SUBST_TRACE([LN_EXEEXT])
+m4trace:configure.ac:57: -1- m4_pattern_allow([^LN_EXEEXT$])
+m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([NDEBUG])
+m4trace:configure.ac:74: -1- m4_pattern_allow([^NDEBUG$])
+m4trace:configure.ac:74: -1- AH_OUTPUT([NDEBUG], [/* Define to 1 to disable debugging code. */
+@%:@undef NDEBUG])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_LZMA1])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA1$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_LZMA1], [/* Define to 1 if lzma1 encoder is enabled. */
+@%:@undef HAVE_ENCODER_LZMA1])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_LZMA2])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA2$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_LZMA2], [/* Define to 1 if lzma2 encoder is enabled. */
+@%:@undef HAVE_ENCODER_LZMA2])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_DELTA])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_DELTA$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_DELTA], [/* Define to 1 if delta encoder is enabled. */
+@%:@undef HAVE_ENCODER_DELTA])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_X86])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_X86$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_X86], [/* Define to 1 if x86 encoder is enabled. */
+@%:@undef HAVE_ENCODER_X86])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_POWERPC])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_POWERPC$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_POWERPC], [/* Define to 1 if powerpc encoder is enabled. */
+@%:@undef HAVE_ENCODER_POWERPC])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_IA64])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_IA64$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_IA64], [/* Define to 1 if ia64 encoder is enabled. */
+@%:@undef HAVE_ENCODER_IA64])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_ARM])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_ARM$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_ARM], [/* Define to 1 if arm encoder is enabled. */
+@%:@undef HAVE_ENCODER_ARM])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_ARMTHUMB])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_ARMTHUMB$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_ARMTHUMB], [/* Define to 1 if armthumb encoder is enabled. */
+@%:@undef HAVE_ENCODER_ARMTHUMB])
+m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_SPARC])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_SPARC$])
+m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_ENCODER_SPARC], [/* Define to 1 if sparc encoder is enabled. */
+@%:@undef HAVE_ENCODER_SPARC])
+m4trace:configure.ac:119: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODERS])
+m4trace:configure.ac:119: -1- m4_pattern_allow([^HAVE_ENCODERS$])
+m4trace:configure.ac:119: -1- AH_OUTPUT([HAVE_ENCODERS], [/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */
+@%:@undef HAVE_ENCODERS])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_LZMA1])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_LZMA1$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_LZMA1], [/* Define to 1 if lzma1 decoder is enabled. */
+@%:@undef HAVE_DECODER_LZMA1])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_LZMA2])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_LZMA2$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_LZMA2], [/* Define to 1 if lzma2 decoder is enabled. */
+@%:@undef HAVE_DECODER_LZMA2])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_DELTA])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_DELTA$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_DELTA], [/* Define to 1 if delta decoder is enabled. */
+@%:@undef HAVE_DECODER_DELTA])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_X86])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_X86$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_X86], [/* Define to 1 if x86 decoder is enabled. */
+@%:@undef HAVE_DECODER_X86])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_POWERPC])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_POWERPC$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_POWERPC], [/* Define to 1 if powerpc decoder is enabled. */
+@%:@undef HAVE_DECODER_POWERPC])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_IA64])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_IA64$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_IA64], [/* Define to 1 if ia64 decoder is enabled. */
+@%:@undef HAVE_DECODER_IA64])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_ARM])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_ARM$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_ARM], [/* Define to 1 if arm decoder is enabled. */
+@%:@undef HAVE_DECODER_ARM])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_ARMTHUMB])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_ARMTHUMB$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_ARMTHUMB], [/* Define to 1 if armthumb decoder is enabled. */
+@%:@undef HAVE_DECODER_ARMTHUMB])
+m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_SPARC])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_SPARC$])
+m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_DECODER_SPARC], [/* Define to 1 if sparc decoder is enabled. */
+@%:@undef HAVE_DECODER_SPARC])
+m4trace:configure.ac:149: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODERS])
+m4trace:configure.ac:149: -1- m4_pattern_allow([^HAVE_DECODERS$])
+m4trace:configure.ac:149: -1- AH_OUTPUT([HAVE_DECODERS], [/* Define to 1 if any of HAVE_DECODER_foo have been defined. */
+@%:@undef HAVE_DECODERS])
+m4trace:configure.ac:159: -1- AM_CONDITIONAL([COND_MAIN_ENCODER], [test "x$enable_encoders" != xno])
+m4trace:configure.ac:159: -1- AC_SUBST([COND_MAIN_ENCODER_TRUE])
+m4trace:configure.ac:159: -1- AC_SUBST_TRACE([COND_MAIN_ENCODER_TRUE])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^COND_MAIN_ENCODER_TRUE$])
+m4trace:configure.ac:159: -1- AC_SUBST([COND_MAIN_ENCODER_FALSE])
+m4trace:configure.ac:159: -1- AC_SUBST_TRACE([COND_MAIN_ENCODER_FALSE])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^COND_MAIN_ENCODER_FALSE$])
+m4trace:configure.ac:159: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_TRUE])
+m4trace:configure.ac:159: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_FALSE])
+m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_MAIN_DECODER], [test "x$enable_decoders" != xno])
+m4trace:configure.ac:160: -1- AC_SUBST([COND_MAIN_DECODER_TRUE])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([COND_MAIN_DECODER_TRUE])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_MAIN_DECODER_TRUE$])
+m4trace:configure.ac:160: -1- AC_SUBST([COND_MAIN_DECODER_FALSE])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([COND_MAIN_DECODER_FALSE])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_MAIN_DECODER_FALSE$])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_TRUE])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_LZMA1], [test "x$enable_filter_lzma1" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA1_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA1_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_LZMA1], [test "x$enable_encoder_lzma1" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_LZMA1], [test "x$enable_decoder_lzma1" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA1_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA1_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_LZMA2], [test "x$enable_filter_lzma2" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA2_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA2_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_LZMA2], [test "x$enable_encoder_lzma2" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_LZMA2], [test "x$enable_decoder_lzma2" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA2_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA2_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_DELTA], [test "x$enable_filter_delta" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_DELTA_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_DELTA_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_DELTA], [test "x$enable_encoder_delta" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_DELTA_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_DELTA_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_DELTA], [test "x$enable_decoder_delta" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_DELTA_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_DELTA_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_X86], [test "x$enable_filter_x86" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_X86_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_X86_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_X86_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_X86_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_X86_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_X86_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_X86], [test "x$enable_encoder_x86" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_X86_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_X86_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_X86_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_X86_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_X86_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_X86_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_X86], [test "x$enable_decoder_x86" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_X86_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_X86_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_X86_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_X86_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_X86_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_X86_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_POWERPC], [test "x$enable_filter_powerpc" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_POWERPC_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_POWERPC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_POWERPC], [test "x$enable_encoder_powerpc" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_POWERPC], [test "x$enable_decoder_powerpc" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_POWERPC_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_POWERPC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_IA64], [test "x$enable_filter_ia64" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_IA64_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_IA64_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_IA64_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_IA64_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_IA64_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_IA64], [test "x$enable_encoder_ia64" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_IA64_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_IA64_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_IA64], [test "x$enable_decoder_ia64" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_IA64_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_IA64_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_ARM], [test "x$enable_filter_arm" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_ARM_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_ARM_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARM_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_ARM_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARM_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_ARM], [test "x$enable_encoder_arm" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARM_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARM_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_ARM], [test "x$enable_decoder_arm" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARM_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARM_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_ARMTHUMB], [test "x$enable_filter_armthumb" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_ARMTHUMB], [test "x$enable_encoder_armthumb" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_ARMTHUMB], [test "x$enable_decoder_armthumb" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_SPARC], [test "x$enable_filter_sparc" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_SPARC_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_FILTER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_FILTER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_SPARC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_SPARC], [test "x$enable_encoder_sparc" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_SPARC_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_ENCODER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_ENCODER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_SPARC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_SPARC], [test "x$enable_decoder_sparc" = xyes])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_SPARC_TRUE$])
+m4trace:configure.ac:162: -1- AC_SUBST([COND_DECODER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([COND_DECODER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_SPARC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_FALSE])
+m4trace:configure.ac:177: -1- AM_CONDITIONAL([COND_FILTER_SIMPLE], [test "x$enable_filter_simple" = xyes])
+m4trace:configure.ac:177: -1- AC_SUBST([COND_FILTER_SIMPLE_TRUE])
+m4trace:configure.ac:177: -1- AC_SUBST_TRACE([COND_FILTER_SIMPLE_TRUE])
+m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_TRUE$])
+m4trace:configure.ac:177: -1- AC_SUBST([COND_FILTER_SIMPLE_FALSE])
+m4trace:configure.ac:177: -1- AC_SUBST_TRACE([COND_FILTER_SIMPLE_FALSE])
+m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_FALSE$])
+m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_TRUE])
+m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_FALSE])
+m4trace:configure.ac:178: -1- AM_CONDITIONAL([COND_ENCODER_SIMPLE], [test "x$enable_encoder_simple" = xyes])
+m4trace:configure.ac:178: -1- AC_SUBST([COND_ENCODER_SIMPLE_TRUE])
+m4trace:configure.ac:178: -1- AC_SUBST_TRACE([COND_ENCODER_SIMPLE_TRUE])
+m4trace:configure.ac:178: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_TRUE$])
+m4trace:configure.ac:178: -1- AC_SUBST([COND_ENCODER_SIMPLE_FALSE])
+m4trace:configure.ac:178: -1- AC_SUBST_TRACE([COND_ENCODER_SIMPLE_FALSE])
+m4trace:configure.ac:178: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_FALSE$])
+m4trace:configure.ac:178: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_TRUE])
+m4trace:configure.ac:178: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_FALSE])
+m4trace:configure.ac:179: -1- AM_CONDITIONAL([COND_DECODER_SIMPLE], [test "x$enable_decoder_simple" = xyes])
+m4trace:configure.ac:179: -1- AC_SUBST([COND_DECODER_SIMPLE_TRUE])
+m4trace:configure.ac:179: -1- AC_SUBST_TRACE([COND_DECODER_SIMPLE_TRUE])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_TRUE$])
+m4trace:configure.ac:179: -1- AC_SUBST([COND_DECODER_SIMPLE_FALSE])
+m4trace:configure.ac:179: -1- AC_SUBST_TRACE([COND_DECODER_SIMPLE_FALSE])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_FALSE$])
+m4trace:configure.ac:179: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_TRUE])
+m4trace:configure.ac:179: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_FALSE])
+m4trace:configure.ac:190: -1- AM_CONDITIONAL([COND_FILTER_LZ], [test "x$enable_filter_lz" = xyes])
+m4trace:configure.ac:190: -1- AC_SUBST([COND_FILTER_LZ_TRUE])
+m4trace:configure.ac:190: -1- AC_SUBST_TRACE([COND_FILTER_LZ_TRUE])
+m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_FILTER_LZ_TRUE$])
+m4trace:configure.ac:190: -1- AC_SUBST([COND_FILTER_LZ_FALSE])
+m4trace:configure.ac:190: -1- AC_SUBST_TRACE([COND_FILTER_LZ_FALSE])
+m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_FILTER_LZ_FALSE$])
+m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_TRUE])
+m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_FALSE])
+m4trace:configure.ac:191: -1- AM_CONDITIONAL([COND_ENCODER_LZ], [test "x$enable_encoder_lz" = xyes])
+m4trace:configure.ac:191: -1- AC_SUBST([COND_ENCODER_LZ_TRUE])
+m4trace:configure.ac:191: -1- AC_SUBST_TRACE([COND_ENCODER_LZ_TRUE])
+m4trace:configure.ac:191: -1- m4_pattern_allow([^COND_ENCODER_LZ_TRUE$])
+m4trace:configure.ac:191: -1- AC_SUBST([COND_ENCODER_LZ_FALSE])
+m4trace:configure.ac:191: -1- AC_SUBST_TRACE([COND_ENCODER_LZ_FALSE])
+m4trace:configure.ac:191: -1- m4_pattern_allow([^COND_ENCODER_LZ_FALSE$])
+m4trace:configure.ac:191: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_TRUE])
+m4trace:configure.ac:191: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_FALSE])
+m4trace:configure.ac:192: -1- AM_CONDITIONAL([COND_DECODER_LZ], [test "x$enable_decoder_lz" = xyes])
+m4trace:configure.ac:192: -1- AC_SUBST([COND_DECODER_LZ_TRUE])
+m4trace:configure.ac:192: -1- AC_SUBST_TRACE([COND_DECODER_LZ_TRUE])
+m4trace:configure.ac:192: -1- m4_pattern_allow([^COND_DECODER_LZ_TRUE$])
+m4trace:configure.ac:192: -1- AC_SUBST([COND_DECODER_LZ_FALSE])
+m4trace:configure.ac:192: -1- AC_SUBST_TRACE([COND_DECODER_LZ_FALSE])
+m4trace:configure.ac:192: -1- m4_pattern_allow([^COND_DECODER_LZ_FALSE$])
+m4trace:configure.ac:192: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_TRUE])
+m4trace:configure.ac:192: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_FALSE])
+m4trace:configure.ac:216: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_HC3])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_HC3$])
+m4trace:configure.ac:216: -1- AH_OUTPUT([HAVE_MF_HC3], [/* Define to 1 to enable hc3 match finder. */
+@%:@undef HAVE_MF_HC3])
+m4trace:configure.ac:216: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_HC4])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_HC4$])
+m4trace:configure.ac:216: -1- AH_OUTPUT([HAVE_MF_HC4], [/* Define to 1 to enable hc4 match finder. */
+@%:@undef HAVE_MF_HC4])
+m4trace:configure.ac:216: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_BT2])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_BT2$])
+m4trace:configure.ac:216: -1- AH_OUTPUT([HAVE_MF_BT2], [/* Define to 1 to enable bt2 match finder. */
+@%:@undef HAVE_MF_BT2])
+m4trace:configure.ac:216: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_BT3])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_BT3$])
+m4trace:configure.ac:216: -1- AH_OUTPUT([HAVE_MF_BT3], [/* Define to 1 to enable bt3 match finder. */
+@%:@undef HAVE_MF_BT3])
+m4trace:configure.ac:216: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_BT4])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_BT4$])
+m4trace:configure.ac:216: -1- AH_OUTPUT([HAVE_MF_BT4], [/* Define to 1 to enable bt4 match finder. */
+@%:@undef HAVE_MF_BT4])
+m4trace:configure.ac:256: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CHECK_CRC32])
+m4trace:configure.ac:256: -1- m4_pattern_allow([^HAVE_CHECK_CRC32$])
+m4trace:configure.ac:256: -1- AH_OUTPUT([HAVE_CHECK_CRC32], [/* Define to 1 if crc32 integrity check is enabled. */
+@%:@undef HAVE_CHECK_CRC32])
+m4trace:configure.ac:256: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CHECK_CRC64])
+m4trace:configure.ac:256: -1- m4_pattern_allow([^HAVE_CHECK_CRC64$])
+m4trace:configure.ac:256: -1- AH_OUTPUT([HAVE_CHECK_CRC64], [/* Define to 1 if crc64 integrity check is enabled. */
+@%:@undef HAVE_CHECK_CRC64])
+m4trace:configure.ac:256: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CHECK_SHA256])
+m4trace:configure.ac:256: -1- m4_pattern_allow([^HAVE_CHECK_SHA256$])
+m4trace:configure.ac:256: -1- AH_OUTPUT([HAVE_CHECK_SHA256], [/* Define to 1 if sha256 integrity check is enabled. */
+@%:@undef HAVE_CHECK_SHA256])
+m4trace:configure.ac:275: -1- AM_CONDITIONAL([COND_CHECK_CRC32], [test "x$enable_check_crc32" = xyes])
+m4trace:configure.ac:275: -1- AC_SUBST([COND_CHECK_CRC32_TRUE])
+m4trace:configure.ac:275: -1- AC_SUBST_TRACE([COND_CHECK_CRC32_TRUE])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC32_TRUE$])
+m4trace:configure.ac:275: -1- AC_SUBST([COND_CHECK_CRC32_FALSE])
+m4trace:configure.ac:275: -1- AC_SUBST_TRACE([COND_CHECK_CRC32_FALSE])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC32_FALSE$])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_TRUE])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_FALSE])
+m4trace:configure.ac:275: -1- AM_CONDITIONAL([COND_CHECK_CRC64], [test "x$enable_check_crc64" = xyes])
+m4trace:configure.ac:275: -1- AC_SUBST([COND_CHECK_CRC64_TRUE])
+m4trace:configure.ac:275: -1- AC_SUBST_TRACE([COND_CHECK_CRC64_TRUE])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC64_TRUE$])
+m4trace:configure.ac:275: -1- AC_SUBST([COND_CHECK_CRC64_FALSE])
+m4trace:configure.ac:275: -1- AC_SUBST_TRACE([COND_CHECK_CRC64_FALSE])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC64_FALSE$])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_TRUE])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_FALSE])
+m4trace:configure.ac:275: -1- AM_CONDITIONAL([COND_CHECK_SHA256], [test "x$enable_check_sha256" = xyes])
+m4trace:configure.ac:275: -1- AC_SUBST([COND_CHECK_SHA256_TRUE])
+m4trace:configure.ac:275: -1- AC_SUBST_TRACE([COND_CHECK_SHA256_TRUE])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_SHA256_TRUE$])
+m4trace:configure.ac:275: -1- AC_SUBST([COND_CHECK_SHA256_FALSE])
+m4trace:configure.ac:275: -1- AC_SUBST_TRACE([COND_CHECK_SHA256_FALSE])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_SHA256_FALSE$])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_TRUE])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_FALSE])
+m4trace:configure.ac:325: -1- AM_CONDITIONAL([COND_ASM_X86], [test "x$enable_assembler" = xx86])
+m4trace:configure.ac:325: -1- AC_SUBST([COND_ASM_X86_TRUE])
+m4trace:configure.ac:325: -1- AC_SUBST_TRACE([COND_ASM_X86_TRUE])
+m4trace:configure.ac:325: -1- m4_pattern_allow([^COND_ASM_X86_TRUE$])
+m4trace:configure.ac:325: -1- AC_SUBST([COND_ASM_X86_FALSE])
+m4trace:configure.ac:325: -1- AC_SUBST_TRACE([COND_ASM_X86_FALSE])
+m4trace:configure.ac:325: -1- m4_pattern_allow([^COND_ASM_X86_FALSE$])
+m4trace:configure.ac:325: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_TRUE])
+m4trace:configure.ac:325: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_FALSE])
+m4trace:configure.ac:326: -1- AM_CONDITIONAL([COND_ASM_X86_64], [test "x$enable_assembler" = xx86_64])
+m4trace:configure.ac:326: -1- AC_SUBST([COND_ASM_X86_64_TRUE])
+m4trace:configure.ac:326: -1- AC_SUBST_TRACE([COND_ASM_X86_64_TRUE])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^COND_ASM_X86_64_TRUE$])
+m4trace:configure.ac:326: -1- AC_SUBST([COND_ASM_X86_64_FALSE])
+m4trace:configure.ac:326: -1- AC_SUBST_TRACE([COND_ASM_X86_64_FALSE])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^COND_ASM_X86_64_FALSE$])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_TRUE])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_FALSE])
+m4trace:configure.ac:339: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SMALL])
+m4trace:configure.ac:339: -1- m4_pattern_allow([^HAVE_SMALL$])
+m4trace:configure.ac:339: -1- AH_OUTPUT([HAVE_SMALL], [/* Define to 1 if optimizing for size. */
+@%:@undef HAVE_SMALL])
+m4trace:configure.ac:345: -1- AM_CONDITIONAL([COND_SMALL], [test "x$enable_small" = xyes])
+m4trace:configure.ac:345: -1- AC_SUBST([COND_SMALL_TRUE])
+m4trace:configure.ac:345: -1- AC_SUBST_TRACE([COND_SMALL_TRUE])
+m4trace:configure.ac:345: -1- m4_pattern_allow([^COND_SMALL_TRUE$])
+m4trace:configure.ac:345: -1- AC_SUBST([COND_SMALL_FALSE])
+m4trace:configure.ac:345: -1- AC_SUBST_TRACE([COND_SMALL_FALSE])
+m4trace:configure.ac:345: -1- m4_pattern_allow([^COND_SMALL_FALSE$])
+m4trace:configure.ac:345: -1- _AM_SUBST_NOTMAKE([COND_SMALL_TRUE])
+m4trace:configure.ac:345: -1- _AM_SUBST_NOTMAKE([COND_SMALL_FALSE])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([ASSUME_RAM])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^ASSUME_RAM$])
+m4trace:configure.ac:417: -1- AH_OUTPUT([ASSUME_RAM], [/* How many MiB of RAM to assume if the real amount cannot be determined. */
+@%:@undef ASSUME_RAM])
+m4trace:configure.ac:429: -1- AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
+m4trace:configure.ac:429: -1- AC_SUBST([COND_XZ_TRUE])
+m4trace:configure.ac:429: -1- AC_SUBST_TRACE([COND_XZ_TRUE])
+m4trace:configure.ac:429: -1- m4_pattern_allow([^COND_XZ_TRUE$])
+m4trace:configure.ac:429: -1- AC_SUBST([COND_XZ_FALSE])
+m4trace:configure.ac:429: -1- AC_SUBST_TRACE([COND_XZ_FALSE])
+m4trace:configure.ac:429: -1- m4_pattern_allow([^COND_XZ_FALSE$])
+m4trace:configure.ac:429: -1- _AM_SUBST_NOTMAKE([COND_XZ_TRUE])
+m4trace:configure.ac:429: -1- _AM_SUBST_NOTMAKE([COND_XZ_FALSE])
+m4trace:configure.ac:435: -1- AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
+m4trace:configure.ac:435: -1- AC_SUBST([COND_XZDEC_TRUE])
+m4trace:configure.ac:435: -1- AC_SUBST_TRACE([COND_XZDEC_TRUE])
+m4trace:configure.ac:435: -1- m4_pattern_allow([^COND_XZDEC_TRUE$])
+m4trace:configure.ac:435: -1- AC_SUBST([COND_XZDEC_FALSE])
+m4trace:configure.ac:435: -1- AC_SUBST_TRACE([COND_XZDEC_FALSE])
+m4trace:configure.ac:435: -1- m4_pattern_allow([^COND_XZDEC_FALSE$])
+m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_TRUE])
+m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_FALSE])
+m4trace:configure.ac:442: -1- AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
+m4trace:configure.ac:442: -1- AC_SUBST([COND_LZMADEC_TRUE])
+m4trace:configure.ac:442: -1- AC_SUBST_TRACE([COND_LZMADEC_TRUE])
+m4trace:configure.ac:442: -1- m4_pattern_allow([^COND_LZMADEC_TRUE$])
+m4trace:configure.ac:442: -1- AC_SUBST([COND_LZMADEC_FALSE])
+m4trace:configure.ac:442: -1- AC_SUBST_TRACE([COND_LZMADEC_FALSE])
+m4trace:configure.ac:442: -1- m4_pattern_allow([^COND_LZMADEC_FALSE$])
+m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_TRUE])
+m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_FALSE])
+m4trace:configure.ac:449: -1- AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
+m4trace:configure.ac:449: -1- AC_SUBST([COND_LZMAINFO_TRUE])
+m4trace:configure.ac:449: -1- AC_SUBST_TRACE([COND_LZMAINFO_TRUE])
+m4trace:configure.ac:449: -1- m4_pattern_allow([^COND_LZMAINFO_TRUE$])
+m4trace:configure.ac:449: -1- AC_SUBST([COND_LZMAINFO_FALSE])
+m4trace:configure.ac:449: -1- AC_SUBST_TRACE([COND_LZMAINFO_FALSE])
+m4trace:configure.ac:449: -1- m4_pattern_allow([^COND_LZMAINFO_FALSE$])
+m4trace:configure.ac:449: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_TRUE])
+m4trace:configure.ac:449: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_FALSE])
+m4trace:configure.ac:454: -1- AM_CONDITIONAL([COND_LZMALINKS], [test x$enable_lzma_links != xno])
+m4trace:configure.ac:454: -1- AC_SUBST([COND_LZMALINKS_TRUE])
+m4trace:configure.ac:454: -1- AC_SUBST_TRACE([COND_LZMALINKS_TRUE])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^COND_LZMALINKS_TRUE$])
+m4trace:configure.ac:454: -1- AC_SUBST([COND_LZMALINKS_FALSE])
+m4trace:configure.ac:454: -1- AC_SUBST_TRACE([COND_LZMALINKS_FALSE])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^COND_LZMALINKS_FALSE$])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_TRUE])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_FALSE])
+m4trace:configure.ac:460: -1- AM_CONDITIONAL([COND_SCRIPTS], [test x$enable_scripts != xno])
+m4trace:configure.ac:460: -1- AC_SUBST([COND_SCRIPTS_TRUE])
+m4trace:configure.ac:460: -1- AC_SUBST_TRACE([COND_SCRIPTS_TRUE])
+m4trace:configure.ac:460: -1- m4_pattern_allow([^COND_SCRIPTS_TRUE$])
+m4trace:configure.ac:460: -1- AC_SUBST([COND_SCRIPTS_FALSE])
+m4trace:configure.ac:460: -1- AC_SUBST_TRACE([COND_SCRIPTS_FALSE])
+m4trace:configure.ac:460: -1- m4_pattern_allow([^COND_SCRIPTS_FALSE$])
+m4trace:configure.ac:460: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_TRUE])
+m4trace:configure.ac:460: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_FALSE])
+m4trace:configure.ac:466: -1- AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
+m4trace:configure.ac:466: -1- AC_SUBST([COND_DOC_TRUE])
+m4trace:configure.ac:466: -1- AC_SUBST_TRACE([COND_DOC_TRUE])
+m4trace:configure.ac:466: -1- m4_pattern_allow([^COND_DOC_TRUE$])
+m4trace:configure.ac:466: -1- AC_SUBST([COND_DOC_FALSE])
+m4trace:configure.ac:466: -1- AC_SUBST_TRACE([COND_DOC_FALSE])
+m4trace:configure.ac:466: -1- m4_pattern_allow([^COND_DOC_FALSE$])
+m4trace:configure.ac:466: -1- _AM_SUBST_NOTMAKE([COND_DOC_TRUE])
+m4trace:configure.ac:466: -1- _AM_SUBST_NOTMAKE([COND_DOC_FALSE])
+m4trace:configure.ac:493: -1- AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
+m4trace:configure.ac:493: -1- AC_SUBST([COND_SYMVERS_TRUE])
+m4trace:configure.ac:493: -1- AC_SUBST_TRACE([COND_SYMVERS_TRUE])
+m4trace:configure.ac:493: -1- m4_pattern_allow([^COND_SYMVERS_TRUE$])
+m4trace:configure.ac:493: -1- AC_SUBST([COND_SYMVERS_FALSE])
+m4trace:configure.ac:493: -1- AC_SUBST_TRACE([COND_SYMVERS_FALSE])
+m4trace:configure.ac:493: -1- m4_pattern_allow([^COND_SYMVERS_FALSE$])
+m4trace:configure.ac:493: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_TRUE])
+m4trace:configure.ac:493: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_FALSE])
+m4trace:configure.ac:525: -1- AC_SUBST([POSIX_SHELL])
+m4trace:configure.ac:525: -1- AC_SUBST_TRACE([POSIX_SHELL])
+m4trace:configure.ac:525: -1- m4_pattern_allow([^POSIX_SHELL$])
+m4trace:configure.ac:525: -1- AC_SUBST([PREFERABLY_POSIX_SHELL])
+m4trace:configure.ac:525: -1- AC_SUBST_TRACE([PREFERABLY_POSIX_SHELL])
+m4trace:configure.ac:525: -1- m4_pattern_allow([^PREFERABLY_POSIX_SHELL$])
+m4trace:configure.ac:538: -1- AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:538: -1- AM_AUTOMAKE_VERSION([1.16.1])
+m4trace:configure.ac:538: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:538: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:538: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:538: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:538: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([am__isrc])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:538: -1- AC_SUBST([CYGPATH_W])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([CYGPATH_W])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:538: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([PACKAGE])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:538: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([VERSION])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:538: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:538: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
+@%:@undef PACKAGE])
+m4trace:configure.ac:538: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:538: -1- AH_OUTPUT([VERSION], [/* Version number of package */
+@%:@undef VERSION])
+m4trace:configure.ac:538: -1- AC_REQUIRE_AUX_FILE([missing])
+m4trace:configure.ac:538: -1- AC_SUBST([ACLOCAL])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([ACLOCAL])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:538: -1- AC_SUBST([AUTOCONF])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AUTOCONF])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:538: -1- AC_SUBST([AUTOMAKE])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AUTOMAKE])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:538: -1- AC_SUBST([AUTOHEADER])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AUTOHEADER])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:538: -1- AC_SUBST([MAKEINFO])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([MAKEINFO])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:538: -1- AC_SUBST([install_sh])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([install_sh])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:538: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:538: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:538: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:538: -1- AC_SUBST([MKDIR_P])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:538: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([mkdir_p])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:538: -1- AC_SUBST([AWK])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AWK])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:538: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:538: -1- AC_SUBST([am__leading_dot])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([am__leading_dot])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:538: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AMTAR])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:538: -1- AC_SUBST([am__tar])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([am__tar])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:538: -1- AC_SUBST([am__untar])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([am__untar])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:538: -1- AM_SILENT_RULES
+m4trace:configure.ac:538: -1- AC_SUBST([AM_V])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AM_V])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:538: -1- AC_SUBST([AM_DEFAULT_V])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:538: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:538: -1- AC_SUBST([AM_BACKSLASH])
+m4trace:configure.ac:538: -1- AC_SUBST_TRACE([AM_BACKSLASH])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:539: -1- AC_SUBST([LN_S], [$as_ln_s])
+m4trace:configure.ac:539: -1- AC_SUBST_TRACE([LN_S])
+m4trace:configure.ac:539: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:541: -1- AC_SUBST([CC])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:541: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:541: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:541: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:541: -1- AC_SUBST([CC])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- AC_SUBST([CC])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- AC_SUBST([CC])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- AC_SUBST([CC])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:541: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:541: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:541: -1- AC_REQUIRE_AUX_FILE([compile])
+m4trace:configure.ac:541: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([DEPDIR])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:541: -1- AC_SUBST([am__include])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([am__include])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:541: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:541: -1- AC_SUBST([AMDEP_TRUE])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([AMDEP_TRUE])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:541: -1- AC_SUBST([AMDEP_FALSE])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([AMDEP_FALSE])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:541: -1- AC_SUBST([AMDEPBACKSLASH])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:541: -1- AC_SUBST([am__nodep])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([am__nodep])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:541: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:541: -1- AM_CONDITIONAL([am__fastdepCC], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:498: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:498: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:498: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:503: -1- AM_PROG_CC_C_O
-m4trace:configure.ac:504: -1- AM_PROG_AS
-m4trace:configure.ac:504: -1- m4_pattern_allow([^CCAS$])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^CCASFLAGS$])
-m4trace:configure.ac:504: -1- _AM_IF_OPTION([no-dependencies], [], [_AM_DEPENDENCIES([CCAS])])
-m4trace:configure.ac:504: -2- _AM_MANGLE_OPTION([no-dependencies])
-m4trace:configure.ac:504: -1- _AM_DEPENDENCIES([CCAS])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^CCASDEPMODE$])
-m4trace:configure.ac:504: -1- AM_CONDITIONAL([am__fastdepCCAS], [
+m4trace:configure.ac:541: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:541: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.ac:541: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:546: -1- AM_PROG_CC_C_O
+m4trace:configure.ac:547: -1- AC_SUBST([CCAS])
+m4trace:configure.ac:547: -1- AC_SUBST_TRACE([CCAS])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^CCAS$])
+m4trace:configure.ac:547: -1- AC_SUBST([CCASFLAGS])
+m4trace:configure.ac:547: -1- AC_SUBST_TRACE([CCASFLAGS])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^CCASFLAGS$])
+m4trace:configure.ac:547: -1- AC_SUBST([CCASDEPMODE], [depmode=$am_cv_CCAS_dependencies_compiler_type])
+m4trace:configure.ac:547: -1- AC_SUBST_TRACE([CCASDEPMODE])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^CCASDEPMODE$])
+m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__fastdepCCAS], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
-m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:505: -1- AC_PROG_EGREP
-m4trace:configure.ac:505: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_POSIX_SOURCE$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_MINIX$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^__EXTENSIONS__$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_ALL_SOURCE$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_GNU_SOURCE$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
-m4trace:configure.ac:505: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
-m4trace:configure.ac:511: -1- AX_PTHREAD([:])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^ax_pthread_config$])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^PTHREAD_CREATE_JOINABLE$])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^HAVE_PTHREAD_PRIO_INHERIT$])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^PTHREAD_CC$])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^PTHREAD_LIBS$])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^PTHREAD_CFLAGS$])
-m4trace:configure.ac:511: -1- m4_pattern_allow([^PTHREAD_CC$])
-m4trace:configure.ac:520: -1- m4_pattern_allow([^MYTHREAD_POSIX$])
-m4trace:configure.ac:534: -1- m4_pattern_allow([^HAVE_DECL_CLOCK_MONOTONIC$])
-m4trace:configure.ac:538: -1- m4_pattern_allow([^MYTHREAD_WIN95$])
-m4trace:configure.ac:544: -1- m4_pattern_allow([^MYTHREAD_VISTA$])
-m4trace:configure.ac:549: -1- AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
-m4trace:configure.ac:549: -1- m4_pattern_allow([^COND_THREADS_TRUE$])
-m4trace:configure.ac:549: -1- m4_pattern_allow([^COND_THREADS_FALSE$])
-m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([COND_THREADS_TRUE])
-m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([COND_THREADS_FALSE])
-m4trace:configure.ac:554: -1- LT_INIT([win32-dll])
-m4trace:configure.ac:554: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:554: -1- LTOPTIONS_VERSION
-m4trace:configure.ac:554: -1- LTSUGAR_VERSION
-m4trace:configure.ac:554: -1- LTVERSION_VERSION
-m4trace:configure.ac:554: -1- LTOBSOLETE_VERSION
-m4trace:configure.ac:554: -1- _LT_PROG_LTMAIN
-m4trace:configure.ac:554: -1- m4_pattern_allow([^AS$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:554: -1- _LT_PREPARE_SED_QUOTE_VARS
-m4trace:configure.ac:554: -1- _LT_PROG_ECHO_BACKSLASH
-m4trace:configure.ac:554: -1- LT_PATH_LD
-m4trace:configure.ac:554: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:554: -1- LT_PATH_NM
-m4trace:configure.ac:554: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:554: -1- LT_CMD_MAX_LEN
-m4trace:configure.ac:554: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^ac_ct_AR$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:554: -1- _LT_WITH_SYSROOT
-m4trace:configure.ac:554: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:554: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:554: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
-m4trace:configure.ac:554: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
-m4trace:configure.ac:554: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:554: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:554: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:554: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
-m4trace:configure.ac:554: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
-     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
-m4trace:configure.ac:554: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^MANIFEST_TOOL$])
-m4trace:configure.ac:554: -1- _LT_REQUIRED_DARWIN_CHECKS
-m4trace:configure.ac:554: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:554: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:554: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
-m4trace:configure.ac:554: -1- LT_SYS_DLOPEN_SELF
-m4trace:configure.ac:554: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
-m4trace:configure.ac:555: -1- LT_LANG([Windows Resource])
-m4trace:configure.ac:555: -1- LT_SUPPORTED_TAG([RC])
-m4trace:configure.ac:555: -1- LT_PROG_RC
-m4trace:configure.ac:555: -1- m4_pattern_allow([^RC$])
-m4trace:configure.ac:555: -1- LT_LANG([RC])
-m4trace:configure.ac:555: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
+m4trace:configure.ac:547: -1- AC_SUBST([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
+m4trace:configure.ac:547: -1- AC_SUBST([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
+m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:548: -1- AC_SUBST([CPP])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:548: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:548: -1- AC_SUBST([CPP])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:548: -1- AC_SUBST([GREP])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:548: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:548: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:548: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_POSIX_SOURCE$])
+m4trace:configure.ac:548: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
+@%:@undef _POSIX_SOURCE])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
+m4trace:configure.ac:548: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+@%:@undef _POSIX_1_SOURCE])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_MINIX$])
+m4trace:configure.ac:548: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
+@%:@undef _MINIX])
+m4trace:configure.ac:548: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^__EXTENSIONS__$])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_ALL_SOURCE$])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_GNU_SOURCE$])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
+m4trace:configure.ac:548: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
+m4trace:configure.ac:554: -1- AC_SUBST([ax_pthread_config])
+m4trace:configure.ac:554: -1- AC_SUBST_TRACE([ax_pthread_config])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^ax_pthread_config$])
+m4trace:configure.ac:554: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_CREATE_JOINABLE])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CREATE_JOINABLE$])
+m4trace:configure.ac:554: -1- AH_OUTPUT([PTHREAD_CREATE_JOINABLE], [/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+@%:@undef PTHREAD_CREATE_JOINABLE])
+m4trace:configure.ac:554: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTHREAD_PRIO_INHERIT])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^HAVE_PTHREAD_PRIO_INHERIT$])
+m4trace:configure.ac:554: -1- AH_OUTPUT([HAVE_PTHREAD_PRIO_INHERIT], [/* Have PTHREAD_PRIO_INHERIT. */
+@%:@undef HAVE_PTHREAD_PRIO_INHERIT])
+m4trace:configure.ac:554: -1- AC_SUBST([PTHREAD_CC])
+m4trace:configure.ac:554: -1- AC_SUBST_TRACE([PTHREAD_CC])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CC$])
+m4trace:configure.ac:554: -1- AC_SUBST([PTHREAD_LIBS])
+m4trace:configure.ac:554: -1- AC_SUBST_TRACE([PTHREAD_LIBS])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_LIBS$])
+m4trace:configure.ac:554: -1- AC_SUBST([PTHREAD_CFLAGS])
+m4trace:configure.ac:554: -1- AC_SUBST_TRACE([PTHREAD_CFLAGS])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CFLAGS$])
+m4trace:configure.ac:554: -1- AC_SUBST([PTHREAD_CC])
+m4trace:configure.ac:554: -1- AC_SUBST_TRACE([PTHREAD_CC])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CC$])
+m4trace:configure.ac:563: -1- AC_DEFINE_TRACE_LITERAL([MYTHREAD_POSIX])
+m4trace:configure.ac:563: -1- m4_pattern_allow([^MYTHREAD_POSIX$])
+m4trace:configure.ac:563: -1- AH_OUTPUT([MYTHREAD_POSIX], [/* Define to 1 when using POSIX threads (pthreads). */
+@%:@undef MYTHREAD_POSIX])
+m4trace:configure.ac:576: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the `clock_gettime\' function. */
+@%:@undef HAVE_CLOCK_GETTIME])
+m4trace:configure.ac:576: -1- AH_OUTPUT([HAVE_PTHREAD_CONDATTR_SETCLOCK], [/* Define to 1 if you have the `pthread_condattr_setclock\' function. */
+@%:@undef HAVE_PTHREAD_CONDATTR_SETCLOCK])
+m4trace:configure.ac:577: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CLOCK_MONOTONIC])
+m4trace:configure.ac:577: -1- m4_pattern_allow([^HAVE_DECL_CLOCK_MONOTONIC$])
+m4trace:configure.ac:577: -1- AH_OUTPUT([HAVE_DECL_CLOCK_MONOTONIC], [/* Define to 1 if you have the declaration of `CLOCK_MONOTONIC\', and to 0 if
+   you don\'t. */
+@%:@undef HAVE_DECL_CLOCK_MONOTONIC])
+m4trace:configure.ac:581: -1- AC_DEFINE_TRACE_LITERAL([MYTHREAD_WIN95])
+m4trace:configure.ac:581: -1- m4_pattern_allow([^MYTHREAD_WIN95$])
+m4trace:configure.ac:581: -1- AH_OUTPUT([MYTHREAD_WIN95], [/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This
+   avoids use of features that were added in Windows Vista. */
+@%:@undef MYTHREAD_WIN95])
+m4trace:configure.ac:587: -1- AC_DEFINE_TRACE_LITERAL([MYTHREAD_VISTA])
+m4trace:configure.ac:587: -1- m4_pattern_allow([^MYTHREAD_VISTA$])
+m4trace:configure.ac:587: -1- AH_OUTPUT([MYTHREAD_VISTA], [/* Define to 1 when using Windows Vista compatible threads. This uses features
+   that are not available on Windows XP. */
+@%:@undef MYTHREAD_VISTA])
+m4trace:configure.ac:592: -1- AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
+m4trace:configure.ac:592: -1- AC_SUBST([COND_THREADS_TRUE])
+m4trace:configure.ac:592: -1- AC_SUBST_TRACE([COND_THREADS_TRUE])
+m4trace:configure.ac:592: -1- m4_pattern_allow([^COND_THREADS_TRUE$])
+m4trace:configure.ac:592: -1- AC_SUBST([COND_THREADS_FALSE])
+m4trace:configure.ac:592: -1- AC_SUBST_TRACE([COND_THREADS_FALSE])
+m4trace:configure.ac:592: -1- m4_pattern_allow([^COND_THREADS_FALSE$])
+m4trace:configure.ac:592: -1- _AM_SUBST_NOTMAKE([COND_THREADS_TRUE])
+m4trace:configure.ac:592: -1- _AM_SUBST_NOTMAKE([COND_THREADS_FALSE])
+m4trace:configure.ac:597: -1- LT_INIT([win32-dll])
+m4trace:configure.ac:597: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:597: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+m4trace:configure.ac:597: -1- AC_SUBST([AS])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([AS])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^AS$])
+m4trace:configure.ac:597: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:597: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:597: -1- AC_SUBST([LIBTOOL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([LIBTOOL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:597: -1- AC_SUBST([SED])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([SED])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:597: -1- AC_SUBST([FGREP])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([FGREP])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:597: -1- AC_SUBST([GREP])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:597: -1- AC_SUBST([LD])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:597: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:597: -1- AC_SUBST([ac_ct_DUMPBIN])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:597: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:597: -1- AC_SUBST([NM])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:597: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:597: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:597: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:597: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:597: -1- AC_SUBST([AR])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:597: -1- AC_SUBST([ac_ct_AR])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([ac_ct_AR])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:597: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:597: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:597: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:597: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+@%:@undef LT_OBJDIR])
+m4trace:configure.ac:597: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:597: -1- AC_SUBST([MANIFEST_TOOL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:597: -1- AC_SUBST([DSYMUTIL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([DSYMUTIL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:597: -1- AC_SUBST([NMEDIT])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([NMEDIT])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:597: -1- AC_SUBST([LIPO])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([LIPO])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:597: -1- AC_SUBST([OTOOL])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([OTOOL])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:597: -1- AC_SUBST([OTOOL64])
+m4trace:configure.ac:597: -1- AC_SUBST_TRACE([OTOOL64])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:597: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+@%:@undef HAVE_DLFCN_H])
+m4trace:configure.ac:597: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:598: -1- LT_SUPPORTED_TAG([RC])
+m4trace:configure.ac:598: -1- AC_SUBST([RC])
+m4trace:configure.ac:598: -1- AC_SUBST_TRACE([RC])
+m4trace:configure.ac:598: -1- m4_pattern_allow([^RC$])
+m4trace:configure.ac:598: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/lang.m4:125: AC_LANG_SAVE is expanded from...
 m4/libtool.m4:7587: _LT_LANG_RC_CONFIG is expanded from...
 m4/libtool.m4:819: _LT_LANG is expanded from...
 m4/libtool.m4:801: LT_LANG is expanded from...
-configure.ac:555: the top level])
-m4trace:configure.ac:555: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:555: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:555: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:555: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
+configure.ac:598: the top level])
+m4trace:configure.ac:598: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/lang.m4:134: AC_LANG_RESTORE is expanded from...
 m4/libtool.m4:7587: _LT_LANG_RC_CONFIG is expanded from...
 m4/libtool.m4:819: _LT_LANG is expanded from...
 m4/libtool.m4:801: LT_LANG is expanded from...
-configure.ac:555: the top level])
-m4trace:configure.ac:561: -1- AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
-m4trace:configure.ac:561: -1- m4_pattern_allow([^COND_SHARED_TRUE$])
-m4trace:configure.ac:561: -1- m4_pattern_allow([^COND_SHARED_FALSE$])
-m4trace:configure.ac:561: -1- _AM_SUBST_NOTMAKE([COND_SHARED_TRUE])
-m4trace:configure.ac:561: -1- _AM_SUBST_NOTMAKE([COND_SHARED_FALSE])
-m4trace:configure.ac:570: -1- AM_GNU_GETTEXT_VERSION([0.18])
-m4trace:configure.ac:571: -1- AM_GNU_GETTEXT([external])
-m4trace:configure.ac:571: -1- AM_GNU_GETTEXT_NEED([])
-m4trace:configure.ac:571: -1- AM_PO_SUBDIRS
-m4trace:configure.ac:571: -1- AM_PROG_MKDIR_P
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [AM_PROG_MKDIR_P: this macro is deprecated, and will soon be removed.
+configure.ac:598: the top level])
+m4trace:configure.ac:604: -1- AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
+m4trace:configure.ac:604: -1- AC_SUBST([COND_SHARED_TRUE])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([COND_SHARED_TRUE])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^COND_SHARED_TRUE$])
+m4trace:configure.ac:604: -1- AC_SUBST([COND_SHARED_FALSE])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([COND_SHARED_FALSE])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^COND_SHARED_FALSE$])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([COND_SHARED_TRUE])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([COND_SHARED_FALSE])
+m4trace:configure.ac:614: -1- AM_GNU_GETTEXT([external])
+m4trace:configure.ac:614: -1- AM_PROG_MKDIR_P
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [AM_PROG_MKDIR_P: this macro is deprecated, and will soon be removed.
 You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
-and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.], [/usr/share/aclocal-1.14/mkdirp.m4:11: AM_PROG_MKDIR_P is expanded from...
+and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.], [aclocal.m4:785: AM_PROG_MKDIR_P is expanded from...
 m4/po.m4:23: AM_PO_SUBDIRS is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:571: -1- AM_NLS
-m4trace:configure.ac:571: -1- m4_pattern_allow([^USE_NLS$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$])
-m4trace:configure.ac:571: -1- AM_PATH_PROG_WITH_TEST([MSGFMT], [msgfmt], [$ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
-     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^MSGFMT$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^GMSGFMT$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^MSGFMT_015$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^GMSGFMT_015$])
-m4trace:configure.ac:571: -1- AM_PATH_PROG_WITH_TEST([XGETTEXT], [xgettext], [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
-     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^XGETTEXT$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^XGETTEXT_015$])
-m4trace:configure.ac:571: -1- AM_PATH_PROG_WITH_TEST([MSGMERGE], [msgmerge], [$ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1], [:])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^MSGMERGE$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$])
-m4trace:configure.ac:571: -1- AC_LIB_PREPARE_PREFIX
-m4trace:configure.ac:571: -1- AC_LIB_RPATH
-m4trace:configure.ac:571: -1- AC_LIB_PROG_LD
-m4trace:configure.ac:571: -1- AC_LIB_PROG_LD_GNU
-m4trace:configure.ac:571: -1- AM_ICONV_LINKFLAGS_BODY
-m4trace:configure.ac:571: -1- AC_LIB_LINKFLAGS_BODY([iconv])
-m4trace:configure.ac:571: -1- AC_LIB_PREPARE_MULTILIB
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- gt_INTL_MACOSX
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([mkdir_p])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:614: -1- AM_NLS
+m4trace:configure.ac:614: -1- AC_SUBST([USE_NLS])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([USE_NLS])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^USE_NLS$])
+m4trace:configure.ac:614: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$])
+m4trace:configure.ac:614: -1- AC_SUBST([MSGFMT])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([MSGFMT])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^MSGFMT$])
+m4trace:configure.ac:614: -1- AC_SUBST([GMSGFMT])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([GMSGFMT])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^GMSGFMT$])
+m4trace:configure.ac:614: -1- AC_SUBST([MSGFMT_015])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([MSGFMT_015])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^MSGFMT_015$])
+m4trace:configure.ac:614: -1- AC_SUBST([GMSGFMT_015])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([GMSGFMT_015])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^GMSGFMT_015$])
+m4trace:configure.ac:614: -1- AC_SUBST([XGETTEXT])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([XGETTEXT])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^XGETTEXT$])
+m4trace:configure.ac:614: -1- AC_SUBST([XGETTEXT_015])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([XGETTEXT_015])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^XGETTEXT_015$])
+m4trace:configure.ac:614: -1- AC_SUBST([MSGMERGE])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([MSGMERGE])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^MSGMERGE$])
+m4trace:configure.ac:614: -1- AC_SUBST([localedir])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:614: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$])
+m4trace:configure.ac:614: -1- AC_REQUIRE_AUX_FILE([config.rpath])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$])
+m4trace:configure.ac:614: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$])
+m4trace:configure.ac:614: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+@%:@undef HAVE_CFLOCALECOPYCURRENT])
+m4trace:configure.ac:614: -1- AC_SUBST([INTL_MACOSX_LIBS])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- AM_ICONV_LINK
-m4trace:configure.ac:571: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/iconv.m4:20: AM_ICONV_LINK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/iconv.m4:20: AM_ICONV_LINK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2775: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/iconv.m4:20: AM_ICONV_LINK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^HAVE_ICONV$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^LIBICONV$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^LTLIBICONV$])
-m4trace:configure.ac:571: -1- AC_LIB_LINKFLAGS_BODY([intl])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_ICONV$])
+m4trace:configure.ac:614: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */
+@%:@undef HAVE_ICONV])
+m4trace:configure.ac:614: -1- AC_SUBST([LIBICONV])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([LIBICONV])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LIBICONV$])
+m4trace:configure.ac:614: -1- AC_SUBST([LTLIBICONV])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([LTLIBICONV])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LTLIBICONV$])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:571: the top level])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^ENABLE_NLS$])
-m4trace:configure.ac:571: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
-m4trace:configure.ac:571: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^HAVE_GETTEXT$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^INTLLIBS$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^LIBINTL$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^LTLIBINTL$])
-m4trace:configure.ac:571: -1- m4_pattern_allow([^POSUB$])
-m4trace:configure.ac:588: -1- m4_pattern_allow([^HAVE_IMMINTRIN_H$])
-m4trace:configure.ac:599: -1- m4_pattern_allow([^HAVE__BOOL$])
-m4trace:configure.ac:599: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
-m4trace:configure.ac:601: -1- m4_pattern_allow([^_UINT8_T$])
-m4trace:configure.ac:601: -1- m4_pattern_allow([^uint8_t$])
-m4trace:configure.ac:602: -1- m4_pattern_allow([^uint16_t$])
-m4trace:configure.ac:603: -1- m4_pattern_allow([^int32_t$])
-m4trace:configure.ac:604: -1- m4_pattern_allow([^_UINT32_T$])
-m4trace:configure.ac:604: -1- m4_pattern_allow([^uint32_t$])
-m4trace:configure.ac:605: -1- m4_pattern_allow([^int64_t$])
-m4trace:configure.ac:606: -1- m4_pattern_allow([^_UINT64_T$])
-m4trace:configure.ac:606: -1- m4_pattern_allow([^uint64_t$])
-m4trace:configure.ac:607: -1- m4_pattern_allow([^HAVE_UINTPTR_T$])
-m4trace:configure.ac:607: -1- m4_pattern_allow([^uintptr_t$])
-m4trace:configure.ac:609: -1- AC_COMPUTE_INT([AS_TR_SH([ac_cv_sizeof_size_t])], [(long int) (sizeof (size_t))], [AC_INCLUDES_DEFAULT([])], [if test "$AS_TR_SH([ac_cv_type_size_t])" = yes; then
-     AC_MSG_FAILURE([cannot compute sizeof (size_t)], 77)
-   else
-     AS_TR_SH([ac_cv_sizeof_size_t])=0
-   fi])
-m4trace:configure.ac:609: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
-m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
-m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
-m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
-m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_UATIME$])
-m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
-m4trace:configure.ac:621: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.ac:621: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.ac:622: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
-m4trace:configure.ac:622: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
-m4trace:configure.ac:630: -1- gl_GETOPT
-m4trace:configure.ac:630: -1- gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])
-m4trace:configure.ac:630: -1- gl_GETOPT_CHECK_HEADERS
-m4trace:configure.ac:630: -1- m4_pattern_allow([^HAVE_GETOPT_H$])
-m4trace:configure.ac:630: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
-m4trace:configure.ac:630: -1- m4_pattern_allow([^HAVE_OPTRESET$])
-m4trace:configure.ac:630: -1- gl_GETOPT_SUBSTITUTE
-m4trace:configure.ac:630: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:630: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:630: -1- gl_GETOPT_SUBSTITUTE_HEADER
-m4trace:configure.ac:630: -1- m4_pattern_allow([^__GETOPT_PREFIX$])
-m4trace:configure.ac:630: -1- m4_pattern_allow([^GETOPT_H$])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^HAVE_POSIX_FADVISE$])
-m4trace:configure.ac:638: -1- TUKLIB_PROGNAME
-m4trace:configure.ac:638: -1- TUKLIB_COMMON
-m4trace:configure.ac:638: -1- m4_pattern_allow([^HAVE_DECL_PROGRAM_INVOCATION_NAME$])
-m4trace:configure.ac:639: -1- TUKLIB_INTEGER
-m4trace:configure.ac:639: -1- m4_pattern_allow([^HAVE_BSWAP_16$])
-m4trace:configure.ac:639: -1- m4_pattern_allow([^HAVE_BSWAP_32$])
-m4trace:configure.ac:639: -1- m4_pattern_allow([^HAVE_BSWAP_64$])
-m4trace:configure.ac:639: -1- m4_pattern_allow([^TUKLIB_FAST_UNALIGNED_ACCESS$])
-m4trace:configure.ac:640: -1- TUKLIB_PHYSMEM
-m4trace:configure.ac:640: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_AIX$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCONF$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCTL$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETSYSINFO$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_PSTAT_GETSTATIC$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETINVENT_R$])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSINFO$])
-m4trace:configure.ac:641: -1- TUKLIB_CPUCORES
-m4trace:configure.ac:641: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
-m4trace:configure.ac:641: -1- m4_pattern_allow([^TUKLIB_CPUCORES_CPUSET$])
-m4trace:configure.ac:641: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCTL$])
-m4trace:configure.ac:641: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCONF$])
-m4trace:configure.ac:641: -1- m4_pattern_allow([^TUKLIB_CPUCORES_PSTAT_GETDYNAMIC$])
-m4trace:configure.ac:642: -1- TUKLIB_MBSTR
-m4trace:configure.ac:642: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
-m4trace:configure.ac:642: -1- m4_pattern_allow([^HAVE_WCWIDTH$])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^HAVE_CC_SHA256_CTX$])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^HAVE_SHA256_CTX$])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^HAVE_SHA2_CTX$])
-m4trace:configure.ac:693: -1- AM_CONDITIONAL([COND_INTERNAL_SHA256], [test "x$ac_cv_func_SHA256_Init" != xyes \
-		&& test "x$ac_cv_func_SHA256Init" != xyes \
-		&& test "x$ac_cv_func_CC_SHA256_Init" != xyes])
-m4trace:configure.ac:693: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_TRUE$])
-m4trace:configure.ac:693: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_FALSE$])
-m4trace:configure.ac:693: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_TRUE])
-m4trace:configure.ac:693: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_FALSE])
-m4trace:configure.ac:699: -1- m4_pattern_allow([^HAVE__MM_MOVEMASK_EPI8$])
-m4trace:configure.ac:719: -1- gl_VISIBILITY
-m4trace:configure.ac:719: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^ENABLE_NLS$])
+m4trace:configure.ac:614: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
+   language is requested. */
+@%:@undef ENABLE_NLS])
+m4trace:configure.ac:614: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_GETTEXT$])
+m4trace:configure.ac:614: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
+@%:@undef HAVE_GETTEXT])
+m4trace:configure.ac:614: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
+m4trace:configure.ac:614: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+@%:@undef HAVE_DCGETTEXT])
+m4trace:configure.ac:614: -1- AC_SUBST([INTLLIBS])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([INTLLIBS])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^INTLLIBS$])
+m4trace:configure.ac:614: -1- AC_SUBST([LIBINTL])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([LIBINTL])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LIBINTL$])
+m4trace:configure.ac:614: -1- AC_SUBST([LTLIBINTL])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([LTLIBINTL])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LTLIBINTL$])
+m4trace:configure.ac:614: -1- AC_SUBST([POSUB])
+m4trace:configure.ac:614: -1- AC_SUBST_TRACE([POSUB])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^POSUB$])
+m4trace:configure.ac:626: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
+@%:@undef HAVE_FCNTL_H])
+m4trace:configure.ac:626: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+@%:@undef HAVE_LIMITS_H])
+m4trace:configure.ac:626: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+@%:@undef HAVE_SYS_TIME_H])
+m4trace:configure.ac:631: -1- AH_OUTPUT([HAVE_IMMINTRIN_H], [/* Define to 1 if you have the <immintrin.h> header file. */
+@%:@undef HAVE_IMMINTRIN_H])
+m4trace:configure.ac:631: -1- AC_DEFINE_TRACE_LITERAL([HAVE_IMMINTRIN_H])
+m4trace:configure.ac:631: -1- m4_pattern_allow([^HAVE_IMMINTRIN_H$])
+m4trace:configure.ac:642: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
+m4trace:configure.ac:642: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:642: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
+@%:@undef HAVE__BOOL])
+m4trace:configure.ac:642: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
+m4trace:configure.ac:642: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:642: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
+@%:@undef HAVE_STDBOOL_H])
+m4trace:configure.ac:644: -1- AC_DEFINE_TRACE_LITERAL([_UINT8_T])
+m4trace:configure.ac:644: -1- m4_pattern_allow([^_UINT8_T$])
+m4trace:configure.ac:644: -1- AH_OUTPUT([_UINT8_T], [/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   @%:@define below would cause a syntax error. */
+@%:@undef _UINT8_T])
+m4trace:configure.ac:644: -1- AC_DEFINE_TRACE_LITERAL([uint8_t])
+m4trace:configure.ac:644: -1- m4_pattern_allow([^uint8_t$])
+m4trace:configure.ac:644: -1- AH_OUTPUT([uint8_t], [/* Define to the type of an unsigned integer type of width exactly 8 bits if
+   such a type exists and the standard includes do not define it. */
+@%:@undef uint8_t])
+m4trace:configure.ac:645: -1- AC_DEFINE_TRACE_LITERAL([uint16_t])
+m4trace:configure.ac:645: -1- m4_pattern_allow([^uint16_t$])
+m4trace:configure.ac:645: -1- AH_OUTPUT([uint16_t], [/* Define to the type of an unsigned integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+@%:@undef uint16_t])
+m4trace:configure.ac:646: -1- AC_DEFINE_TRACE_LITERAL([int32_t])
+m4trace:configure.ac:646: -1- m4_pattern_allow([^int32_t$])
+m4trace:configure.ac:646: -1- AH_OUTPUT([int32_t], [/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+@%:@undef int32_t])
+m4trace:configure.ac:647: -1- AC_DEFINE_TRACE_LITERAL([_UINT32_T])
+m4trace:configure.ac:647: -1- m4_pattern_allow([^_UINT32_T$])
+m4trace:configure.ac:647: -1- AH_OUTPUT([_UINT32_T], [/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   @%:@define below would cause a syntax error. */
+@%:@undef _UINT32_T])
+m4trace:configure.ac:647: -1- AC_DEFINE_TRACE_LITERAL([uint32_t])
+m4trace:configure.ac:647: -1- m4_pattern_allow([^uint32_t$])
+m4trace:configure.ac:647: -1- AH_OUTPUT([uint32_t], [/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+@%:@undef uint32_t])
+m4trace:configure.ac:648: -1- AC_DEFINE_TRACE_LITERAL([int64_t])
+m4trace:configure.ac:648: -1- m4_pattern_allow([^int64_t$])
+m4trace:configure.ac:648: -1- AH_OUTPUT([int64_t], [/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+@%:@undef int64_t])
+m4trace:configure.ac:649: -1- AC_DEFINE_TRACE_LITERAL([_UINT64_T])
+m4trace:configure.ac:649: -1- m4_pattern_allow([^_UINT64_T$])
+m4trace:configure.ac:649: -1- AH_OUTPUT([_UINT64_T], [/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   @%:@define below would cause a syntax error. */
+@%:@undef _UINT64_T])
+m4trace:configure.ac:649: -1- AC_DEFINE_TRACE_LITERAL([uint64_t])
+m4trace:configure.ac:649: -1- m4_pattern_allow([^uint64_t$])
+m4trace:configure.ac:649: -1- AH_OUTPUT([uint64_t], [/* Define to the type of an unsigned integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+@%:@undef uint64_t])
+m4trace:configure.ac:650: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTPTR_T])
+m4trace:configure.ac:650: -1- m4_pattern_allow([^HAVE_UINTPTR_T$])
+m4trace:configure.ac:650: -1- AH_OUTPUT([HAVE_UINTPTR_T], [/* Define to 1 if the system has the type `uintptr_t\'. */
+@%:@undef HAVE_UINTPTR_T])
+m4trace:configure.ac:650: -1- AC_DEFINE_TRACE_LITERAL([uintptr_t])
+m4trace:configure.ac:650: -1- m4_pattern_allow([^uintptr_t$])
+m4trace:configure.ac:650: -1- AH_OUTPUT([uintptr_t], [/* Define to the type of an unsigned integer type wide enough to hold a
+   pointer, if such a type exists, and if the system does not define it. */
+@%:@undef uintptr_t])
+m4trace:configure.ac:652: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SIZE_T])
+m4trace:configure.ac:652: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
+m4trace:configure.ac:652: -1- AH_OUTPUT([SIZEOF_SIZE_T], [/* The size of `size_t\', as computed by sizeof. */
+@%:@undef SIZEOF_SIZE_T])
+m4trace:configure.ac:657: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
+m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is a member of `struct stat\'. */
+@%:@undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
+m4trace:configure.ac:657: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
+m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is a member of `struct stat\'. */
+@%:@undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
+m4trace:configure.ac:657: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
+m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is a member of `struct stat\'. */
+@%:@undef HAVE_STRUCT_STAT_ST_ATIMENSEC])
+m4trace:configure.ac:657: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_UATIME])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_UATIME$])
+m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_UATIME], [/* Define to 1 if `st_uatime\' is a member of `struct stat\'. */
+@%:@undef HAVE_STRUCT_STAT_ST_UATIME])
+m4trace:configure.ac:657: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
+m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is a member of `struct stat\'. */
+@%:@undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
+m4trace:configure.ac:664: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
+m4trace:configure.ac:664: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:664: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
+@%:@undef _FILE_OFFSET_BITS])
+m4trace:configure.ac:664: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
+m4trace:configure.ac:664: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:664: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
+@%:@undef _LARGE_FILES])
+m4trace:configure.ac:664: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif])
+m4trace:configure.ac:665: -1- AH_OUTPUT([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])
+m4trace:configure.ac:665: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
+m4trace:configure.ac:665: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
+m4trace:configure.ac:665: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
+m4trace:configure.ac:665: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
+m4trace:configure.ac:665: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
+@%:@undef AC_APPLE_UNIVERSAL_BUILD])
+m4trace:configure.ac:673: -1- AH_OUTPUT([HAVE_GETOPT_H], [/* Define to 1 if you have the <getopt.h> header file. */
+@%:@undef HAVE_GETOPT_H])
+m4trace:configure.ac:673: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETOPT_H])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^HAVE_GETOPT_H$])
+m4trace:configure.ac:673: -1- AH_OUTPUT([HAVE_GETOPT_LONG], [/* Define to 1 if you have the `getopt_long\' function. */
+@%:@undef HAVE_GETOPT_LONG])
+m4trace:configure.ac:673: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETOPT_LONG])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
+m4trace:configure.ac:673: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OPTRESET])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^HAVE_OPTRESET$])
+m4trace:configure.ac:673: -1- AH_OUTPUT([HAVE_OPTRESET], [/* Define to 1 if getopt.h declares extern int optreset. */
+@%:@undef HAVE_OPTRESET])
+m4trace:configure.ac:673: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getopt.$ac_objext"])
+m4trace:configure.ac:673: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:673: -1- AC_LIBSOURCE([getopt.c])
+m4trace:configure.ac:673: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getopt1.$ac_objext"])
+m4trace:configure.ac:673: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:673: -1- AC_LIBSOURCE([getopt1.c])
+m4trace:configure.ac:673: -1- AC_DEFINE_TRACE_LITERAL([__GETOPT_PREFIX])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^__GETOPT_PREFIX$])
+m4trace:configure.ac:673: -1- AH_OUTPUT([__GETOPT_PREFIX], [/* Define to rpl_ if the getopt replacement functions and variables should be
+   used. */
+@%:@undef __GETOPT_PREFIX])
+m4trace:configure.ac:673: -1- AC_SUBST([GETOPT_H])
+m4trace:configure.ac:673: -1- AC_SUBST_TRACE([GETOPT_H])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^GETOPT_H$])
+m4trace:configure.ac:676: -1- AH_OUTPUT([HAVE_FUTIMENS], [/* Define to 1 if you have the `futimens\' function. */
+@%:@undef HAVE_FUTIMENS])
+m4trace:configure.ac:676: -1- AH_OUTPUT([HAVE_FUTIMES], [/* Define to 1 if you have the `futimes\' function. */
+@%:@undef HAVE_FUTIMES])
+m4trace:configure.ac:676: -1- AH_OUTPUT([HAVE_FUTIMESAT], [/* Define to 1 if you have the `futimesat\' function. */
+@%:@undef HAVE_FUTIMESAT])
+m4trace:configure.ac:676: -1- AH_OUTPUT([HAVE_UTIMES], [/* Define to 1 if you have the `utimes\' function. */
+@%:@undef HAVE_UTIMES])
+m4trace:configure.ac:676: -1- AH_OUTPUT([HAVE__FUTIME], [/* Define to 1 if you have the `_futime\' function. */
+@%:@undef HAVE__FUTIME])
+m4trace:configure.ac:676: -1- AH_OUTPUT([HAVE_UTIME], [/* Define to 1 if you have the `utime\' function. */
+@%:@undef HAVE_UTIME])
+m4trace:configure.ac:679: -1- AH_OUTPUT([HAVE_POSIX_FADVISE], [/* Define to 1 if you have the `posix_fadvise\' function. */
+@%:@undef HAVE_POSIX_FADVISE])
+m4trace:configure.ac:679: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_FADVISE])
+m4trace:configure.ac:679: -1- m4_pattern_allow([^HAVE_POSIX_FADVISE$])
+m4trace:configure.ac:681: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PROGRAM_INVOCATION_NAME])
+m4trace:configure.ac:681: -1- m4_pattern_allow([^HAVE_DECL_PROGRAM_INVOCATION_NAME$])
+m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_DECL_PROGRAM_INVOCATION_NAME], [/* Define to 1 if you have the declaration of `program_invocation_name\', and
+   to 0 if you don\'t. */
+@%:@undef HAVE_DECL_PROGRAM_INVOCATION_NAME])
+m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_BYTESWAP_H], [/* Define to 1 if you have the <byteswap.h> header file. */
+@%:@undef HAVE_BYTESWAP_H])
+m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_SYS_ENDIAN_H], [/* Define to 1 if you have the <sys/endian.h> header file. */
+@%:@undef HAVE_SYS_ENDIAN_H])
+m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_SYS_BYTEORDER_H], [/* Define to 1 if you have the <sys/byteorder.h> header file. */
+@%:@undef HAVE_SYS_BYTEORDER_H])
+m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSWAP_16])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_BSWAP_16$])
+m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_BSWAP_16], [/* Define to 1 if bswap_16 is available. */
+@%:@undef HAVE_BSWAP_16])
+m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSWAP_32])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_BSWAP_32$])
+m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_BSWAP_32], [/* Define to 1 if bswap_32 is available. */
+@%:@undef HAVE_BSWAP_32])
+m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSWAP_64])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_BSWAP_64$])
+m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_BSWAP_64], [/* Define to 1 if bswap_64 is available. */
+@%:@undef HAVE_BSWAP_64])
+m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_FAST_UNALIGNED_ACCESS])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_FAST_UNALIGNED_ACCESS$])
+m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_FAST_UNALIGNED_ACCESS], [/* Define to 1 if the system supports fast unaligned access to 16-bit and
+   32-bit integers. */
+@%:@undef TUKLIB_FAST_UNALIGNED_ACCESS])
+m4trace:configure.ac:683: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+@%:@undef HAVE_SYS_PARAM_H])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_AIX])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_AIX$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_AIX], [/* Define to 1 if the amount of physical memory can be detected with
+   _system_configuration.physmem. */
+@%:@undef TUKLIB_PHYSMEM_AIX])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_SYSCONF])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCONF$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_SYSCONF], [/* Define to 1 if the amount of physical memory can be detected with
+   sysconf(_SC_PAGESIZE) and sysconf(_SC_PHYS_PAGES). */
+@%:@undef TUKLIB_PHYSMEM_SYSCONF])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_SYSCTL])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCTL$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_SYSCTL], [/* Define to 1 if the amount of physical memory can be detected with sysctl().
+   */
+@%:@undef TUKLIB_PHYSMEM_SYSCTL])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_GETSYSINFO])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETSYSINFO$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_GETSYSINFO], [/* Define to 1 if the amount of physical memory can be detected with
+   getsysinfo(). */
+@%:@undef TUKLIB_PHYSMEM_GETSYSINFO])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_PSTAT_GETSTATIC])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_PSTAT_GETSTATIC$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_PSTAT_GETSTATIC], [/* Define to 1 if the amount of physical memory can be detected with
+   pstat_getstatic(). */
+@%:@undef TUKLIB_PHYSMEM_PSTAT_GETSTATIC])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_GETINVENT_R])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETINVENT_R$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_GETINVENT_R], [/* Define to 1 if the amount of physical memory can be detected with
+   getinvent_r(). */
+@%:@undef TUKLIB_PHYSMEM_GETINVENT_R])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_SYSINFO])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSINFO$])
+m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_PHYSMEM_SYSINFO], [/* Define to 1 if the amount of physical memory can be detected with Linux
+   sysinfo(). */
+@%:@undef TUKLIB_PHYSMEM_SYSINFO])
+m4trace:configure.ac:684: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+@%:@undef HAVE_SYS_PARAM_H])
+m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
+m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_SCHED_GETAFFINITY])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SCHED_GETAFFINITY$])
+m4trace:configure.ac:684: -1- AH_OUTPUT([TUKLIB_CPUCORES_SCHED_GETAFFINITY], [/* Define to 1 if the number of available CPU cores can be detected with
+   sched_getaffinity() */
+@%:@undef TUKLIB_CPUCORES_SCHED_GETAFFINITY])
+m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_CPUSET])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_CPUSET$])
+m4trace:configure.ac:684: -1- AH_OUTPUT([TUKLIB_CPUCORES_CPUSET], [/* Define to 1 if the number of available CPU cores can be detected with
+   cpuset(2). */
+@%:@undef TUKLIB_CPUCORES_CPUSET])
+m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_SYSCTL])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCTL$])
+m4trace:configure.ac:684: -1- AH_OUTPUT([TUKLIB_CPUCORES_SYSCTL], [/* Define to 1 if the number of available CPU cores can be detected with
+   sysctl(). */
+@%:@undef TUKLIB_CPUCORES_SYSCTL])
+m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_SYSCONF])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCONF$])
+m4trace:configure.ac:684: -1- AH_OUTPUT([TUKLIB_CPUCORES_SYSCONF], [/* Define to 1 if the number of available CPU cores can be detected with
+   sysconf(_SC_NPROCESSORS_ONLN) or sysconf(_SC_NPROC_ONLN). */
+@%:@undef TUKLIB_CPUCORES_SYSCONF])
+m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_PSTAT_GETDYNAMIC$])
+m4trace:configure.ac:684: -1- AH_OUTPUT([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC], [/* Define to 1 if the number of available CPU cores can be detected with
+   pstat_getdynamic(). */
+@%:@undef TUKLIB_CPUCORES_PSTAT_GETDYNAMIC])
+m4trace:configure.ac:685: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
+m4trace:configure.ac:685: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
+m4trace:configure.ac:685: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+@%:@undef HAVE_MBRTOWC])
+m4trace:configure.ac:685: -1- AH_OUTPUT([HAVE_WCWIDTH], [/* Define to 1 if you have the `wcwidth\' function. */
+@%:@undef HAVE_WCWIDTH])
+m4trace:configure.ac:685: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
+m4trace:configure.ac:685: -1- m4_pattern_allow([^HAVE_WCWIDTH$])
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_COMMONCRYPTO_COMMONDIGEST_H], [/* Define to 1 if you have the <CommonCrypto/CommonDigest.h> header file. */
+@%:@undef HAVE_COMMONCRYPTO_COMMONDIGEST_H])
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SHA256_H], [/* Define to 1 if you have the <sha256.h> header file. */
+@%:@undef HAVE_SHA256_H])
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SHA2_H], [/* Define to 1 if you have the <sha2.h> header file. */
+@%:@undef HAVE_SHA2_H])
+m4trace:configure.ac:713: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CC_SHA256_CTX])
+m4trace:configure.ac:713: -1- m4_pattern_allow([^HAVE_CC_SHA256_CTX$])
+m4trace:configure.ac:713: -1- AH_OUTPUT([HAVE_CC_SHA256_CTX], [/* Define to 1 if the system has the type `CC_SHA256_CTX\'. */
+@%:@undef HAVE_CC_SHA256_CTX])
+m4trace:configure.ac:713: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHA256_CTX])
+m4trace:configure.ac:713: -1- m4_pattern_allow([^HAVE_SHA256_CTX$])
+m4trace:configure.ac:713: -1- AH_OUTPUT([HAVE_SHA256_CTX], [/* Define to 1 if the system has the type `SHA256_CTX\'. */
+@%:@undef HAVE_SHA256_CTX])
+m4trace:configure.ac:713: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHA2_CTX])
+m4trace:configure.ac:713: -1- m4_pattern_allow([^HAVE_SHA2_CTX$])
+m4trace:configure.ac:713: -1- AH_OUTPUT([HAVE_SHA2_CTX], [/* Define to 1 if the system has the type `SHA2_CTX\'. */
+@%:@undef HAVE_SHA2_CTX])
+m4trace:configure.ac:730: -1- AH_OUTPUT([HAVE_CC_SHA256_INIT], [/* Define to 1 if you have the `CC_SHA256_Init\' function. */
+@%:@undef HAVE_CC_SHA256_INIT])
+m4trace:configure.ac:730: -1- AH_OUTPUT([HAVE_SHA256INIT], [/* Define to 1 if you have the `SHA256Init\' function. */
+@%:@undef HAVE_SHA256INIT])
+m4trace:configure.ac:730: -1- AH_OUTPUT([HAVE_SHA256_INIT], [/* Define to 1 if you have the `SHA256_Init\' function. */
+@%:@undef HAVE_SHA256_INIT])
+m4trace:configure.ac:735: -1- AM_CONDITIONAL([COND_INTERNAL_SHA256], [test "x$sha256_func_found" = xno])
+m4trace:configure.ac:735: -1- AC_SUBST([COND_INTERNAL_SHA256_TRUE])
+m4trace:configure.ac:735: -1- AC_SUBST_TRACE([COND_INTERNAL_SHA256_TRUE])
+m4trace:configure.ac:735: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_TRUE$])
+m4trace:configure.ac:735: -1- AC_SUBST([COND_INTERNAL_SHA256_FALSE])
+m4trace:configure.ac:735: -1- AC_SUBST_TRACE([COND_INTERNAL_SHA256_FALSE])
+m4trace:configure.ac:735: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_FALSE$])
+m4trace:configure.ac:735: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_TRUE])
+m4trace:configure.ac:735: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_FALSE])
+m4trace:configure.ac:741: -1- AC_DEFINE_TRACE_LITERAL([HAVE__MM_MOVEMASK_EPI8])
+m4trace:configure.ac:741: -1- m4_pattern_allow([^HAVE__MM_MOVEMASK_EPI8$])
+m4trace:configure.ac:741: -1- AH_OUTPUT([HAVE__MM_MOVEMASK_EPI8], [/* Define to 1 if _mm_movemask_epi8 is available. */
+@%:@undef HAVE__MM_MOVEMASK_EPI8])
+m4trace:configure.ac:752: -1- AH_OUTPUT([HAVE_SYS_CAPSICUM_H], [/* Define to 1 if you have the <sys/capsicum.h> header file. */
+@%:@undef HAVE_SYS_CAPSICUM_H])
+m4trace:configure.ac:752: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_CAPSICUM_H])
+m4trace:configure.ac:752: -1- m4_pattern_allow([^HAVE_SYS_CAPSICUM_H$])
+m4trace:configure.ac:752: -1- AC_SUBST([CAPSICUM_LIB])
+m4trace:configure.ac:752: -1- AC_SUBST_TRACE([CAPSICUM_LIB])
+m4trace:configure.ac:752: -1- m4_pattern_allow([^CAPSICUM_LIB$])
+m4trace:configure.ac:752: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CAPSICUM])
+m4trace:configure.ac:752: -1- m4_pattern_allow([^HAVE_CAPSICUM$])
+m4trace:configure.ac:752: -1- AH_OUTPUT([HAVE_CAPSICUM], [/* Define to 1 if Capsicum is available. */
+@%:@undef HAVE_CAPSICUM])
+m4trace:configure.ac:778: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2625: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
 m4/visibility.m4:23: gl_VISIBILITY is expanded from...
-configure.ac:719: the top level])
-m4trace:configure.ac:719: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+configure.ac:778: the top level])
+m4trace:configure.ac:778: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2625: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
 m4/visibility.m4:23: gl_VISIBILITY is expanded from...
-configure.ac:719: the top level])
-m4trace:configure.ac:719: -1- m4_pattern_allow([^CFLAG_VISIBILITY$])
-m4trace:configure.ac:719: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
-m4trace:configure.ac:719: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
-m4trace:configure.ac:791: -1- AM_CONDITIONAL([COND_GNULIB], [test -n "$LIBOBJS"])
-m4trace:configure.ac:791: -1- m4_pattern_allow([^COND_GNULIB_TRUE$])
-m4trace:configure.ac:791: -1- m4_pattern_allow([^COND_GNULIB_FALSE$])
-m4trace:configure.ac:791: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_TRUE])
-m4trace:configure.ac:791: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_FALSE])
-m4trace:configure.ac:794: -1- m4_pattern_allow([^AM_CFLAGS$])
-m4trace:configure.ac:798: -1- m4_pattern_allow([^xz$])
-m4trace:configure.ac:820: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:820: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:820: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:820: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:820: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:820: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:820: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:820: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
-m4trace:configure.ac:820: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
-m4trace:configure.ac:820: -1- _LT_PROG_LTMAIN
+configure.ac:778: the top level])
+m4trace:configure.ac:778: -1- AC_SUBST([CFLAG_VISIBILITY])
+m4trace:configure.ac:778: -1- AC_SUBST_TRACE([CFLAG_VISIBILITY])
+m4trace:configure.ac:778: -1- m4_pattern_allow([^CFLAG_VISIBILITY$])
+m4trace:configure.ac:778: -1- AC_SUBST([HAVE_VISIBILITY])
+m4trace:configure.ac:778: -1- AC_SUBST_TRACE([HAVE_VISIBILITY])
+m4trace:configure.ac:778: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
+m4trace:configure.ac:778: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VISIBILITY])
+m4trace:configure.ac:778: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
+m4trace:configure.ac:778: -1- AH_OUTPUT([HAVE_VISIBILITY], [/* Define to 1 or 0, depending whether the compiler supports simple visibility
+   declarations. */
+@%:@undef HAVE_VISIBILITY])
+m4trace:configure.ac:850: -1- AM_CONDITIONAL([COND_GNULIB], [test -n "$LIBOBJS"])
+m4trace:configure.ac:850: -1- AC_SUBST([COND_GNULIB_TRUE])
+m4trace:configure.ac:850: -1- AC_SUBST_TRACE([COND_GNULIB_TRUE])
+m4trace:configure.ac:850: -1- m4_pattern_allow([^COND_GNULIB_TRUE$])
+m4trace:configure.ac:850: -1- AC_SUBST([COND_GNULIB_FALSE])
+m4trace:configure.ac:850: -1- AC_SUBST_TRACE([COND_GNULIB_FALSE])
+m4trace:configure.ac:850: -1- m4_pattern_allow([^COND_GNULIB_FALSE$])
+m4trace:configure.ac:850: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_TRUE])
+m4trace:configure.ac:850: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_FALSE])
+m4trace:configure.ac:853: -1- AC_SUBST([AM_CFLAGS])
+m4trace:configure.ac:853: -1- AC_SUBST_TRACE([AM_CFLAGS])
+m4trace:configure.ac:853: -1- m4_pattern_allow([^AM_CFLAGS$])
+m4trace:configure.ac:857: -1- AC_SUBST([xz])
+m4trace:configure.ac:857: -1- AC_SUBST_TRACE([xz])
+m4trace:configure.ac:857: -1- m4_pattern_allow([^xz$])
+m4trace:configure.ac:859: -1- AC_CONFIG_FILES([
+	Doxyfile
+	Makefile
+	po/Makefile.in
+	lib/Makefile
+	src/Makefile
+	src/liblzma/Makefile
+	src/liblzma/api/Makefile
+	src/xz/Makefile
+	src/xzdec/Makefile
+	src/lzmainfo/Makefile
+	src/scripts/Makefile
+	tests/Makefile
+	debug/Makefile
+])
+m4trace:configure.ac:874: -1- AC_CONFIG_FILES([src/scripts/xzdiff], [chmod +x src/scripts/xzdiff])
+m4trace:configure.ac:875: -1- AC_CONFIG_FILES([src/scripts/xzgrep], [chmod +x src/scripts/xzgrep])
+m4trace:configure.ac:876: -1- AC_CONFIG_FILES([src/scripts/xzmore], [chmod +x src/scripts/xzmore])
+m4trace:configure.ac:877: -1- AC_CONFIG_FILES([src/scripts/xzless], [chmod +x src/scripts/xzless])
+m4trace:configure.ac:879: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:879: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:879: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:879: -1- AC_SUBST([am__EXEEXT_TRUE])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:879: -1- AC_SUBST([am__EXEEXT_FALSE])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:879: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:879: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.ac:879: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:879: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
index 5c5f051..7e11583 100644
--- a/autom4te.cache/traces.1
+++ b/autom4te.cache/traces.1
@@ -1,29 +1,6294 @@
-m4trace:aclocal.m4:1202: -1- m4_include([m4/ax_check_capsicum.m4])
-m4trace:aclocal.m4:1203: -1- m4_include([m4/ax_pthread.m4])
-m4trace:aclocal.m4:1204: -1- m4_include([m4/getopt.m4])
-m4trace:aclocal.m4:1205: -1- m4_include([m4/gettext.m4])
-m4trace:aclocal.m4:1206: -1- m4_include([m4/iconv.m4])
-m4trace:aclocal.m4:1207: -1- m4_include([m4/intlmacosx.m4])
-m4trace:aclocal.m4:1208: -1- m4_include([m4/lib-ld.m4])
-m4trace:aclocal.m4:1209: -1- m4_include([m4/lib-link.m4])
-m4trace:aclocal.m4:1210: -1- m4_include([m4/lib-prefix.m4])
-m4trace:aclocal.m4:1211: -1- m4_include([m4/libtool.m4])
-m4trace:aclocal.m4:1212: -1- m4_include([m4/ltoptions.m4])
-m4trace:aclocal.m4:1213: -1- m4_include([m4/ltsugar.m4])
-m4trace:aclocal.m4:1214: -1- m4_include([m4/ltversion.m4])
-m4trace:aclocal.m4:1215: -1- m4_include([m4/lt~obsolete.m4])
-m4trace:aclocal.m4:1216: -1- m4_include([m4/nls.m4])
-m4trace:aclocal.m4:1217: -1- m4_include([m4/po.m4])
-m4trace:aclocal.m4:1218: -1- m4_include([m4/posix-shell.m4])
-m4trace:aclocal.m4:1219: -1- m4_include([m4/progtest.m4])
-m4trace:aclocal.m4:1220: -1- m4_include([m4/tuklib_common.m4])
-m4trace:aclocal.m4:1221: -1- m4_include([m4/tuklib_cpucores.m4])
-m4trace:aclocal.m4:1222: -1- m4_include([m4/tuklib_integer.m4])
-m4trace:aclocal.m4:1223: -1- m4_include([m4/tuklib_mbstr.m4])
-m4trace:aclocal.m4:1224: -1- m4_include([m4/tuklib_physmem.m4])
-m4trace:aclocal.m4:1225: -1- m4_include([m4/tuklib_progname.m4])
-m4trace:aclocal.m4:1226: -1- m4_include([m4/visibility.m4])
-m4trace:configure.ac:20: -1- AC_INIT([XZ Utils], [5.2.3], [lasse.collin@tukaani.org], [xz], [http://tukaani.org/xz/])
+m4trace:/usr/share/aclocal/ltargz.m4:12: -1- AC_DEFUN([LT_FUNC_ARGZ], [
+AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_TYPES([error_t],
+  [],
+  [AC_DEFINE([error_t], [int],
+   [Define to a type to use for 'error_t' if it is not otherwise available.])
+   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
+    does not typedef error_t.])],
+  [#if defined(HAVE_ARGZ_H)
+#  include <argz.h>
+#endif])
+
+LT_ARGZ_H=
+AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
+	argz_next argz_stringify], [], [LT_ARGZ_H=lt__argz.h; AC_LIBOBJ([lt__argz])])
+
+dnl if have system argz functions, allow forced use of
+dnl libltdl-supplied implementation (and default to do so
+dnl on "known bad" systems). Could use a runtime check, but
+dnl (a) detecting malloc issues is notoriously unreliable
+dnl (b) only known system that declares argz functions,
+dnl     provides them, yet they are broken, is cygwin
+dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
+dnl So, it's more straightforward simply to special case
+dnl this for known bad systems.
+AS_IF([test -z "$LT_ARGZ_H"],
+    [AC_CACHE_CHECK(
+        [if argz actually works],
+        [lt_cv_sys_argz_works],
+        [[case $host_os in #(
+	 *cygwin*)
+	   lt_cv_sys_argz_works=no
+	   if test no != "$cross_compiling"; then
+	     lt_cv_sys_argz_works="guessing no"
+	   else
+	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
+	     save_IFS=$IFS
+	     IFS=-.
+	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
+	     IFS=$save_IFS
+	     lt_os_major=${2-0}
+	     lt_os_minor=${3-0}
+	     lt_os_micro=${4-0}
+	     if test 1 -lt "$lt_os_major" \
+		|| { test 1 -eq "$lt_os_major" \
+		  && { test 5 -lt "$lt_os_minor" \
+		    || { test 5 -eq "$lt_os_minor" \
+		      && test 24 -lt "$lt_os_micro"; }; }; }; then
+	       lt_cv_sys_argz_works=yes
+	     fi
+	   fi
+	   ;; #(
+	 *) lt_cv_sys_argz_works=yes ;;
+	 esac]])
+     AS_IF([test yes = "$lt_cv_sys_argz_works"],
+        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
+                   [This value is set to 1 to indicate that the system argz facility works])],
+        [LT_ARGZ_H=lt__argz.h
+        AC_LIBOBJ([lt__argz])])])
+
+AC_SUBST([LT_ARGZ_H])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])
+m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
+  m4_pattern_allow([^_LT_LIBOBJS$])
+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])
+m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+    [AS_HELP_STRING([--with-included-ltdl],
+                    [use the GNU ltdl sources included here])])
+
+if test yes != "$with_included_ltdl"; then
+  # We are not being forced to use the included libltdl sources, so
+  # decide whether there is a useful installed version we can use.
+  AC_CHECK_HEADER([ltdl.h],
+      [AC_CHECK_DECL([lt_dlinterface_register],
+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+	       [with_included_ltdl=no],
+	       [with_included_ltdl=yes])],
+	   [with_included_ltdl=yes],
+	   [AC_INCLUDES_DEFAULT
+	    #include <ltdl.h>])],
+      [with_included_ltdl=yes],
+      [AC_INCLUDES_DEFAULT]
+  )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+    [AS_HELP_STRING([--with-ltdl-include=DIR],
+                    [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+  if test -f "$with_ltdl_include/ltdl.h"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl include directory: '$with_ltdl_include'])
+  fi
+else
+  with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
+                    [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+  if test -f "$with_ltdl_lib/libltdl.la"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl library directory: '$with_ltdl_lib'])
+  fi
+else
+  with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+  ,yes,no,no,)
+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
+	    [convenience], [_LTDL_CONVENIENCE],
+	    [installable], [_LTDL_INSTALLABLE],
+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+	;;
+  ,no,no,no,)
+	# If the included ltdl is not to be used, then use the
+	# preinstalled libltdl we found.
+	AC_DEFINE([HAVE_LTDL], [1],
+	  [Define this if a modern libltdl is already installed])
+	LIBLTDL=-lltdl
+	LTDLDEPS=
+	LTDLINCL=
+	;;
+  ,no*,no,*)
+	AC_MSG_ERROR(['--with-ltdl-include' and '--with-ltdl-lib' options must be used together])
+	;;
+  *)	with_included_ltdl=no
+	LIBLTDL="-L$with_ltdl_lib -lltdl"
+	LTDLDEPS=
+	LTDLINCL=-I$with_ltdl_include
+	;;
+esac
+INCLTDL=$LTDLINCL
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+    _ltdl_libobjs=
+    _ltdl_ltlibobjs=
+    if test -n "$_LT_LIBOBJS"; then
+      # Remove the extension.
+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+      done
+    fi
+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([LT_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used.  This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+    [LT_CONFIG_H=AH_HEADER],
+    [m4_ifset([AC_LIST_HEADERS],
+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's|^[[      ]]*||;s|[[ :]].*$||'`],
+	[])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+	[], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+m4_pattern_allow([LT_LIBEXT])dnl
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
+name=ltdl
+eval "LTDLOPEN=\"$libname_spec\""
+AC_SUBST([LTDLOPEN])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+  [lt_cv_sys_dlopen_deplibs],
+  [# PORTME does your system automatically load deplibs for dlopen?
+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+  # For now, we just catch OSes we know something about -- in the
+  # future, we'll try test this programmatically.
+  lt_cv_sys_dlopen_deplibs=unknown
+  case $host_os in
+  aix3*|aix4.1.*|aix4.2.*)
+    # Unknown whether this is true for these versions of AIX, but
+    # we want this 'case' here to explicitly catch those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  aix[[4-9]]*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  amigaos*)
+    case $host_cpu in
+    powerpc)
+      lt_cv_sys_dlopen_deplibs=no
+      ;;
+    esac
+    ;;
+  bitrig*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  darwin*)
+    # Assuming the user has installed a libdl from somewhere, this is true
+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  freebsd* | dragonfly*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    # GNU and its variants, using gnu ld.so (Glibc)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  hpux10*|hpux11*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  interix*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  irix[[12345]]*|irix6.[[01]]*)
+    # Catch all versions of IRIX before 6.2, and indicate that we don't
+    # know how it worked for any of those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  irix*)
+    # The case above catches anything before 6.2, and it's known that
+    # at 6.2 and later dlopen does load deplibs.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  openbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  osf[[1234]]*)
+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+    # it did *not* use an RPATH in a shared library to find objects the
+    # library depends on, so we explicitly say 'no'.
+    lt_cv_sys_dlopen_deplibs=no
+    ;;
+  osf5.0|osf5.0a|osf5.1)
+    # dlopen *does* load deplibs and with the right loader patch applied
+    # it even uses RPATH in a shared library to search for shared objects
+    # that the library depends on, but there's no easy way to know if that
+    # patch is installed.  Since this is the case, all we can really
+    # say is unknown -- it depends on the patch being installed.  If
+    # it is, this changes to 'yes'.  Without it, it would be 'no'.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  osf*)
+    # the two cases above should catch all versions of osf <= 5.1.  Read
+    # the comments above for what we know about them.
+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+    # is used to find them so we can finally say 'yes'.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  qnx*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  solaris*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    libltdl_cv_sys_dlopen_deplibs=yes
+    ;;
+  esac
+  ])
+if test yes != "$lt_cv_sys_dlopen_deplibs"; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+    [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:545: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:545: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:552: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([what extension is used for runtime loadable modules],
+  [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+module=no
+eval libltdl_cv_shrext=$shrext_cmds
+  ])
+if test -n "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_MODULE_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+    [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_SHARED_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
+    [Define to the shared library suffix, say, ".dylib".])
+fi
+if test -n "$shared_archive_member_spec"; then
+  m4_pattern_allow([LT_SHARED_LIB_MEMBER])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_LIB_MEMBER], ["($shared_archive_member_spec.o)"],
+    [Define to the shared archive member specification, say "(shr.o)".])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:580: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:580: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:587: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([what variable specifies run-time module search path],
+  [lt_cv_module_path_var], [lt_cv_module_path_var=$shlibpath_var])
+if test -n "$lt_cv_module_path_var"; then
+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+    [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:599: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:599: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:606: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+  [lt_cv_sys_dlsearch_path],
+  [lt_cv_sys_dlsearch_path=$sys_lib_dlsearch_path_spec])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+  sys_dlsearch_path=
+  for dir in $lt_cv_sys_dlsearch_path; do
+    if test -z "$sys_dlsearch_path"; then
+      sys_dlsearch_path=$dir
+    else
+      sys_dlsearch_path=$sys_dlsearch_path$PATH_SEPARATOR$dir
+    fi
+  done
+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+    [Define to the system default library search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:627: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:627: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:653: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+lt_dlload_save_LIBS=$LIBS
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+	[AC_DEFINE([HAVE_LIBDL], [1],
+		   [Define if you have the libdl library or equivalent.])
+	if test "$ac_cv_search_dlopen" != "none required"; then
+	  LIBADD_DLOPEN=-ldl
+	fi
+	libltdl_cv_lib_dl_dlopen=yes
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+    ]], [[dlopen(0, 0);]])],
+	    [AC_DEFINE([HAVE_LIBDL], [1],
+		       [Define if you have the libdl library or equivalent.])
+	    libltdl_cv_func_dlopen=yes
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+	[AC_CHECK_LIB([svld], [dlopen],
+		[AC_DEFINE([HAVE_LIBDL], [1],
+			 [Define if you have the libdl library or equivalent.])
+	        LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"
+then
+  lt_save_LIBS=$LIBS
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  AC_CHECK_FUNCS([dlerror])
+  LIBS=$lt_save_LIBS
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
+		   [Define if you have the shl_load function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+    [AC_CHECK_LIB([dld], [shl_load],
+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
+		       [Define if you have the shl_load function.])
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD=-ldld])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+  AC_CHECK_FUNC([_dyld_func_lookup],
+	[AC_DEFINE([HAVE_DYLD], [1],
+		   [Define if you have the _dyld_func_lookup function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | pw32*)
+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+	[AC_DEFINE([HAVE_DLD], [1],
+		   [Define if you have the GNU dld library.])
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
+            [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+LIBS=$lt_dlload_save_LIBS
+AC_LANG_POP
+])
+m4trace:/usr/share/aclocal/ltdl.m4:748: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:748: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:756: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+  [lt_cv_sys_symbol_underscore],
+  [lt_cv_sys_symbol_underscore=no
+  cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    ac_nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+      # See whether the symbols have a leading underscore.
+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+        lt_cv_sys_symbol_underscore=yes
+      else
+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+	  :
+        else
+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+        fi
+      fi
+    else
+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.c >&AS_MESSAGE_LOG_FD
+  fi
+  rm -rf conftest*
+  ])
+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+  AC_SUBST([sys_symbol_underscore])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:793: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:793: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:800: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([_LT_COMPILER_PIC])dnl	for lt_prog_compiler_wl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl	for lt_cv_sys_symbol_underscore
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl	for libltdl_cv_shlibext
+if test yes = "$lt_cv_sys_symbol_underscore"; then
+  if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"; then
+    AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+      [libltdl_cv_need_uscore],
+      [libltdl_cv_need_uscore=unknown
+      dlsym_uscore_save_LIBS=$LIBS
+      LIBS="$LIBS $LIBADD_DLOPEN"
+      libname=conftmod # stay within 8.3 filename limits!
+      cat >$libname.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+int fnord () { return 42; }]
+_LT_EOF
+
+      # ltfn_module_cmds module_cmds
+      # Execute tilde-delimited MODULE_CMDS with environment primed for
+      # $module_cmds or $archive_cmds type content.
+      ltfn_module_cmds ()
+      {( # subshell avoids polluting parent global environment
+          module_cmds_save_ifs=$IFS; IFS='~'
+          for cmd in @S|@1; do
+            IFS=$module_cmds_save_ifs
+            libobjs=$libname.$ac_objext; lib=$libname$libltdl_cv_shlibext
+            rpath=/not-exists; soname=$libname$libltdl_cv_shlibext; output_objdir=.
+            major=; versuffix=; verstring=; deplibs=
+            ECHO=echo; wl=$lt_prog_compiler_wl; allow_undefined_flag=
+            eval $cmd
+          done
+          IFS=$module_cmds_save_ifs
+      )}
+
+      # Compile a loadable module using libtool macro expansion results.
+      $CC $pic_flag -c $libname.$ac_ext
+      ltfn_module_cmds "${module_cmds:-$archive_cmds}"
+
+      # Try to fetch fnord with dlsym().
+      libltdl_dlunknown=0; libltdl_dlnouscore=1; libltdl_dluscore=2
+      cat >conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+#include <stdio.h>
+#ifndef RTLD_GLOBAL
+#  ifdef DL_GLOBAL
+#    define RTLD_GLOBAL DL_GLOBAL
+#  else
+#    define RTLD_GLOBAL 0
+#  endif
+#endif
+#ifndef RTLD_NOW
+#  ifdef DL_NOW
+#    define RTLD_NOW DL_NOW
+#  else
+#    define RTLD_NOW 0
+#  endif
+#endif
+int main () {
+  void *handle = dlopen ("`pwd`/$libname$libltdl_cv_shlibext", RTLD_GLOBAL|RTLD_NOW);
+  int status = $libltdl_dlunknown;
+  if (handle) {
+    if (dlsym (handle, "fnord"))
+      status = $libltdl_dlnouscore;
+    else {
+      if (dlsym (handle, "_fnord"))
+        status = $libltdl_dluscore;
+      else
+	puts (dlerror ());
+    }
+    dlclose (handle);
+  } else
+    puts (dlerror ());
+  return status;
+}]
+_LT_EOF
+      if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
+        (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+        libltdl_status=$?
+        case x$libltdl_status in
+          x$libltdl_dlnouscore) libltdl_cv_need_uscore=no ;;
+	  x$libltdl_dluscore) libltdl_cv_need_uscore=yes ;;
+	  x*) libltdl_cv_need_uscore=unknown ;;
+        esac
+      fi
+      rm -rf conftest* $libname*
+      LIBS=$dlsym_uscore_save_LIBS
+    ])
+  fi
+fi
+
+if test yes = "$libltdl_cv_need_uscore"; then
+  AC_DEFINE([NEED_USCORE], [1],
+    [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:907: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:907: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal-1.16/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16'
+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.16.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.16/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.16/as.m4:11: -1- AC_DEFUN([AM_PROG_AS], [# By default we simply use the C compiler to build assembly code.
+AC_REQUIRE([AC_PROG_CC])
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
+AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
+])
+m4trace:/usr/share/aclocal-1.16/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+m4trace:/usr/share/aclocal-1.16/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.16/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.16/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.16/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+m4trace:/usr/share/aclocal-1.16/depout.m4:11: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+  # Older Autoconf 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.
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  AS_CASE([$CONFIG_FILES],
+          [*\'*], [eval set x "$CONFIG_FILES"],
+          [*], [set x $CONFIG_FILES])
+  shift
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
+  do
+    # Strip MF so we end up with the name of the file.
+    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`AS_DIRNAME(["$am_mf"])`
+    am_filepart=`AS_BASENAME(["$am_mf"])`
+    AM_RUN_LOG([cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles]) || am_rc=$?
+  done
+  if test $am_rc -ne 0; then
+    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).])
+  fi
+  AS_UNSET([am_dirpart])
+  AS_UNSET([am_filepart])
+  AS_UNSET([am_mf])
+  AS_UNSET([am_rc])
+  rm -f conftest-deps.mk
+}
+])
+m4trace:/usr/share/aclocal-1.16/depout.m4:62: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
+m4trace:/usr/share/aclocal-1.16/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+m4trace:/usr/share/aclocal-1.16/init.m4:186: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+m4trace:/usr/share/aclocal-1.16/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+m4trace:/usr/share/aclocal-1.16/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+m4trace:/usr/share/aclocal-1.16/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+
+])
+m4trace:/usr/share/aclocal-1.16/make.m4:13: -1- AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
+am__doit:
+	@echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+      ['0:this is the am__doit target'],
+      [AS_CASE([$s],
+          [BSD], [am__include='.include' am__quote='"'],
+          [am__include='include' am__quote=''])])
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+m4trace:/usr/share/aclocal-1.16/make.m4:42: -1- m4_pattern_allow([^am__quote$])
+m4trace:/usr/share/aclocal-1.16/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.16/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.16/mkdirp.m4:11: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl FIXME we are no longer going to remove this! adjust warning
+dnl FIXME message accordingly.
+AC_DIAGNOSE([obsolete],
+[$0: this macro is deprecated, and will soon be removed.
+You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
+and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.])
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+m4trace:/usr/share/aclocal-1.16/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.16/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+m4trace:/usr/share/aclocal-1.16/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.16/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.16/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+m4trace:/usr/share/aclocal-1.16/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+m4trace:/usr/share/aclocal-1.16/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+m4trace:/usr/share/aclocal-1.16/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+m4trace:/usr/share/aclocal-1.16/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.16/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+m4trace:/usr/share/aclocal-1.16/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.16/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.16/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:m4/ax_check_capsicum.m4:51: -1- AC_DEFUN([AX_CHECK_CAPSICUM], [
+# On FreeBSD >= 11.x and Linux, Capsicum is uses <sys/capsicum.h>.
+# If this header is found, it is assumed to be the right one.
+capsicum_header_found=no
+AC_CHECK_HEADERS([sys/capsicum.h], [capsicum_header_found=yes])
+if test "$capsicum_header_found" = no ; then
+    # On FreeBSD 10.x Capsicum uses <sys/capability.h>. Such a header exists
+    # on Linux too but it describes POSIX.1e capabilities. Look for the
+    # declaration of cap_rights_limit to check if <sys/capability.h> is
+    # a Capsicum header.
+    AC_CHECK_DECL([cap_rights_limit], [capsicum_header_found=yes], [],
+                  [#include <sys/capability.h>])
+fi
+
+capsicum_lib_found=no
+CAPSICUM_LIB=
+if test "$capsicum_header_found" = yes ; then
+    AC_LANG_PUSH([C])
+    # FreeBSD >= 10.x has Capsicum functions in libc.
+    AC_LINK_IFELSE([AC_LANG_CALL([], [cap_rights_limit])],
+                   [capsicum_lib_found=yes], [])
+    # Linux has Capsicum functions in libcaprights.
+    AC_CHECK_LIB([caprights], [cap_rights_limit],
+                 [CAPSICUM_LIB=-lcaprights
+                  capsicum_lib_found=yes], [])
+    AC_LANG_POP([C])
+fi
+AC_SUBST([CAPSICUM_LIB])
+
+if test "$capsicum_lib_found" = yes ; then
+    AC_DEFINE([HAVE_CAPSICUM], [1], [Define to 1 if Capsicum is available.])
+    m4_default([$1], [LIBS="${CAPSICUM_LIB} $LIBS"])
+else
+    m4_default([$2], [AC_MSG_WARN([Capsicum support not found])])
+fi])
+m4trace:m4/ax_pthread.m4:87: -1- AU_DEFUN([ACX_PTHREAD], [m4_if($#, 0, [AX_PTHREAD], [AX_PTHREAD($@)])])
+m4trace:m4/ax_pthread.m4:87: -1- AC_DEFUN([ACX_PTHREAD], [AC_DIAGNOSE([obsolete], [The macro `ACX_PTHREAD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AX_PTHREAD], [AX_PTHREAD($@)])])
+m4trace:m4/ax_pthread.m4:88: -1- AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PUSH([C])
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
+        AC_MSG_RESULT([$ax_pthread_ok])
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case ${host_os} in
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+        darwin*)
+        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ;;
+esac
+
+# Clang doesn't consider unrecognized options an error unless we specify
+# -Werror. We throw in some extra Clang-specific options to ensure that
+# this doesn't happen for GCC, which also accepts -Werror.
+
+AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
+save_CFLAGS="$CFLAGS"
+ax_pthread_extra_flags="-Werror"
+CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
+                  [AC_MSG_RESULT([yes])],
+                  [ax_pthread_extra_flags=
+                   AC_MSG_RESULT([no])])
+CFLAGS="$save_CFLAGS"
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+                pthread-config)
+                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
+                if test x"$ax_pthread_config" = xno; then continue; fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }],
+                       [pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */])],
+                [ax_pthread_ok=yes],
+                [])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT([$ax_pthread_ok])
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        AC_MSG_CHECKING([for joinable pthread attribute])
+        attr_name=unknown
+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                           [int attr = $attr; return attr /* ; */])],
+                [attr_name=$attr; break],
+                [])
+        done
+        AC_MSG_RESULT([$attr_name])
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
+                               [Define to necessary symbol if this constant
+                                uses a non-standard name on your system.])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case ${host_os} in
+            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
+            osf* | hpux*) flag="-D_REENTRANT";;
+            solaris*)
+            if test "$GCC" = "yes"; then
+                flag="-D_REENTRANT"
+            else
+                # TODO: What about Clang on Solaris?
+                flag="-mt -D_REENTRANT"
+            fi
+            ;;
+        esac
+        AC_MSG_RESULT([$flag])
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+            [ax_cv_PTHREAD_PRIO_INHERIT], [
+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+                                                [[int i = PTHREAD_PRIO_INHERIT;]])],
+                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
+            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: compile with *_r variant
+        if test "x$GCC" != xyes; then
+            case $host_os in
+                aix*)
+                AS_CASE(["x/$CC"],
+                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+                  [#handle absolute path differently from PATH based program lookup
+                   AS_CASE(["x$CC"],
+                     [x/*],
+                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+                ;;
+            esac
+        fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+AC_SUBST([PTHREAD_LIBS])
+AC_SUBST([PTHREAD_CFLAGS])
+AC_SUBST([PTHREAD_CC])
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
+        :
+else
+        ax_pthread_ok=no
+        $2
+fi
+AC_LANG_POP
+])
+m4trace:m4/codeset.m4:9: -1- AC_DEFUN([AM_LANGINFO_CODESET], [
+  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
+    [AC_TRY_LINK([#include <langinfo.h>],
+      [char* cs = nl_langinfo(CODESET); return !cs;],
+      [am_cv_langinfo_codeset=yes],
+      [am_cv_langinfo_codeset=no])
+    ])
+  if test $am_cv_langinfo_codeset = yes; then
+    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
+      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+  fi
+])
+m4trace:m4/fcntl-o.m4:12: -1- AC_DEFUN([gl_FCNTL_O_FLAGS], [
+  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+  AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
+    [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+           #include <sys/stat.h>
+           #include <unistd.h>
+           #include <fcntl.h>
+           #ifndef O_NOATIME
+            #define O_NOATIME 0
+           #endif
+           #ifndef O_NOFOLLOW
+            #define O_NOFOLLOW 0
+           #endif
+           static int const constants[] =
+            {
+              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+            };
+          ]],
+          [[
+            int status = !constants;
+            {
+              static char const sym[] = "conftest.sym";
+              if (symlink (".", sym) != 0
+                  || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
+                status |= 32;
+              unlink (sym);
+            }
+            {
+              static char const file[] = "confdefs.h";
+              int fd = open (file, O_RDONLY | O_NOATIME);
+              char c;
+              struct stat st0, st1;
+              if (fd < 0
+                  || fstat (fd, &st0) != 0
+                  || sleep (1) != 0
+                  || read (fd, &c, 1) != 1
+                  || close (fd) != 0
+                  || stat (file, &st1) != 0
+                  || st0.st_atime != st1.st_atime)
+                status |= 64;
+            }
+            return status;]])],
+       [gl_cv_header_working_fcntl_h=yes],
+       [case $? in #(
+        32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+        96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+         *) gl_cv_header_working_fcntl_h='no';;
+        esac],
+       [gl_cv_header_working_fcntl_h=cross-compiling])])
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
+    [Define to 1 if O_NOATIME works.])
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
+    [Define to 1 if O_NOFOLLOW works.])
+])
+m4trace:m4/getopt.m4:11: -1- AC_DEFUN([gl_GETOPT_SUBSTITUTE], [
+  AC_LIBOBJ([getopt])
+  AC_LIBOBJ([getopt1])
+  gl_GETOPT_SUBSTITUTE_HEADER
+])
+m4trace:m4/getopt.m4:18: -1- AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [
+  GETOPT_H=getopt.h
+  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+    [Define to rpl_ if the getopt replacement functions and variables
+     should be used.])
+  AC_SUBST([GETOPT_H])
+])
+m4trace:m4/getopt.m4:27: -1- AC_DEFUN([gl_GETOPT_CHECK_HEADERS], [
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
+  fi
+
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_FUNCS([getopt_long], [], [GETOPT_H=getopt.h])
+  fi
+
+  dnl BSD getopt_long uses a way to reset option processing, that is different
+  dnl from GNU and Solaris (which copied the GNU behavior). We support both
+  dnl GNU and BSD style resetting of getopt_long(), so there's no need to use
+  dnl GNU getopt_long() on BSD due to different resetting style.
+  dnl
+  dnl With getopt_long(), some BSD versions have a bug in handling optional
+  dnl arguments. This bug appears only if the environment variable
+  dnl POSIXLY_CORRECT has been set, so it shouldn't be too bad in most
+  dnl cases; probably most don't have that variable set. But if we actually
+  dnl hit this bug, it is a real problem due to our heavy use of optional
+  dnl arguments.
+  dnl
+  dnl According to CVS logs, the bug was introduced in OpenBSD in 2003-09-22
+  dnl and copied to FreeBSD in 2004-02-24. It was fixed in both in 2006-09-22,
+  dnl so the affected versions shouldn't be popular anymore anyway. NetBSD
+  dnl never had this bug. TODO: What about Darwin and others?
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_DECL([optreset],
+      [AC_DEFINE([HAVE_OPTRESET], 1,
+        [Define to 1 if getopt.h declares extern int optreset.])],
+      [], [#include <getopt.h>])
+  fi
+
+  dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+  dnl option string (as of 2005-05-05). We don't use that feature, so this
+  dnl is not a problem for us. Thus, the respective test was removed here.
+])
+m4trace:m4/getopt.m4:65: -1- AC_DEFUN([gl_GETOPT_IFELSE], [
+  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+  AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+])
+m4trace:m4/getopt.m4:71: -1- AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
+m4trace:m4/gettext.m4:57: -1- AC_DEFUN([AM_GNU_GETTEXT], [
+  dnl Argument checking.
+  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
+  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+  define([gt_included_intl],
+    ifelse([$1], [external],
+      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+      [yes]))
+  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
+
+  AC_REQUIRE([AM_PO_SUBDIRS])dnl
+  ifelse(gt_included_intl, yes, [
+    AC_REQUIRE([AM_INTL_SUBDIR])dnl
+  ])
+
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Sometimes libintl requires libiconv, so first search for libiconv.
+  dnl Ideally we would do this search only after the
+  dnl      if test "$USE_NLS" = "yes"; then
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+  dnl the configure script would need to contain the same shell code
+  dnl again, outside any 'if'. There are two solutions:
+  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+  dnl documented, we avoid it.
+  ifelse(gt_included_intl, yes, , [
+    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+  ])
+
+  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
+  dnl Set USE_NLS.
+  AC_REQUIRE([AM_NLS])
+
+  ifelse(gt_included_intl, yes, [
+    BUILD_INCLUDED_LIBINTL=no
+    USE_INCLUDED_LIBINTL=no
+  ])
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+  dnl If we use NLS figure out what method
+  if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+    ifelse(gt_included_intl, yes, [
+      AC_MSG_CHECKING([whether included gettext is requested])
+      AC_ARG_WITH([included-gettext],
+        [  --with-included-gettext use the GNU gettext library included here],
+        nls_cv_force_use_gnu_gettext=$withval,
+        nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
+
+      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+    ])
+        dnl User does not insist on using GNU NLS library.  Figure out what
+        dnl to use.  If GNU gettext is available we use this.  Else we have
+        dnl to fall back to GNU NLS library.
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+            [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+          dnl Sometimes libintl requires libiconv, so first search for libiconv.
+          ifelse(gt_included_intl, yes, , [
+            AM_ICONV_LINK
+          ])
+          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+          dnl even if libiconv doesn't exist.
+          AC_LIB_LINKFLAGS_BODY([intl])
+          AC_CACHE_CHECK([for GNU gettext in libintl],
+            [$gt_func_gnugettext_libintl],
+           [gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+            dnl Now see whether libintl exists and does not depend on libiconv.
+            AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+              [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
+            dnl Now see whether libintl exists and depends on libiconv.
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+                [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+               [LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+               ])
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"])
+        fi
+
+        dnl If an already present or preinstalled GNU gettext() is found,
+        dnl use it.  But if this macro is used in GNU gettext, and GNU
+        dnl gettext is already preinstalled in libintl, we update this
+        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+          dnl Reset the values set by searching for libintl.
+          LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+    ifelse(gt_included_intl, yes, [
+        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+          dnl GNU gettext is not found in the C library.
+          dnl Fall back on included GNU gettext library.
+          nls_cv_use_gnu_gettext=yes
+        fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions used to generate GNU NLS library.
+        BUILD_INCLUDED_LIBINTL=yes
+        USE_INCLUDED_LIBINTL=yes
+        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+      fi
+
+      CATOBJEXT=
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions to use GNU gettext tools.
+        CATOBJEXT=.gmo
+      fi
+    ])
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+      AC_DEFINE([ENABLE_NLS], [1],
+        [Define to 1 if translation of program messages to the user's native language
+   is requested.])
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  AC_MSG_CHECKING([whether to use NLS])
+  AC_MSG_RESULT([$USE_NLS])
+  if test "$USE_NLS" = "yes"; then
+    AC_MSG_CHECKING([where the gettext function comes from])
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    AC_MSG_RESULT([$gt_source])
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        AC_MSG_CHECKING([how to link with libintl])
+        AC_MSG_RESULT([$LIBINTL])
+        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+      fi
+
+      dnl For backward compatibility. Some packages may be using this.
+      AC_DEFINE([HAVE_GETTEXT], [1],
+       [Define if the GNU gettext() function is already present or preinstalled.])
+      AC_DEFINE([HAVE_DCGETTEXT], [1],
+       [Define if the GNU dcgettext() function is already present or preinstalled.])
+    fi
+
+    dnl We need to process the po/ directory.
+    POSUB=po
+  fi
+
+  ifelse(gt_included_intl, yes, [
+    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+    dnl to 'yes' because some of the testsuite requires it.
+    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+      BUILD_INCLUDED_LIBINTL=yes
+    fi
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST([BUILD_INCLUDED_LIBINTL])
+    AC_SUBST([USE_INCLUDED_LIBINTL])
+    AC_SUBST([CATOBJEXT])
+
+    dnl For backward compatibility. Some configure.ins may be using this.
+    nls_cv_header_intl=
+    nls_cv_header_libgt=
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    DATADIRNAME=share
+    AC_SUBST([DATADIRNAME])
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INSTOBJEXT=.mo
+    AC_SUBST([INSTOBJEXT])
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    GENCAT=gencat
+    AC_SUBST([GENCAT])
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INTLOBJS=
+    if test "$USE_INCLUDED_LIBINTL" = yes; then
+      INTLOBJS="\$(GETTOBJS)"
+    fi
+    AC_SUBST([INTLOBJS])
+
+    dnl Enable libtool support if the surrounding package wishes it.
+    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+  ])
+
+  dnl For backward compatibility. Some Makefiles may be using this.
+  INTLLIBS="$LIBINTL"
+  AC_SUBST([INTLLIBS])
+
+  dnl Make all documented variables known to autoconf.
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  AC_SUBST([POSUB])
+])
+m4trace:m4/gettext.m4:376: -1- AC_DEFUN([AM_GNU_GETTEXT_NEED], [
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+m4trace:m4/gettext.m4:383: -1- AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+m4trace:m4/glibc2.m4:10: -1- AC_DEFUN([gt_GLIBC2], [
+    AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
+      [ac_cv_gnu_library_2],
+      [AC_EGREP_CPP([Lucky GNU user],
+        [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2)
+  Lucky GNU user
+ #endif
+#endif
+        ],
+        [ac_cv_gnu_library_2=yes],
+        [ac_cv_gnu_library_2=no])
+      ]
+    )
+    AC_SUBST([GLIBC2])
+    GLIBC2="$ac_cv_gnu_library_2"
+  
+])
+m4trace:m4/glibc21.m4:10: -1- AC_DEFUN([gl_GLIBC21], [
+    AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
+      [ac_cv_gnu_library_2_1],
+      [AC_EGREP_CPP([Lucky GNU user],
+        [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+        ],
+        [ac_cv_gnu_library_2_1=yes],
+        [ac_cv_gnu_library_2_1=no])
+      ]
+    )
+    AC_SUBST([GLIBC21])
+    GLIBC21="$ac_cv_gnu_library_2_1"
+  
+])
+m4trace:m4/iconv.m4:9: -1- AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([iconv])
+])
+m4trace:m4/iconv.m4:20: -1- AC_DEFUN([AM_ICONV_LINK], [
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      [am_cv_func_iconv=yes])
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+        [iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);],
+        [am_cv_lib_iconv=yes]
+        [am_cv_func_iconv=yes])
+      LIBS="$am_save_LIBS"
+    fi
+  ])
+  if test "$am_cv_func_iconv" = yes; then
+    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+      dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\263";
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+        [case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac])
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE([HAVE_ICONV], [1],
+      [Define if you have the iconv() function and it works.])
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    AC_MSG_CHECKING([how to link with libiconv])
+    AC_MSG_RESULT([$LIBICONV])
+  else
+    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+    dnl either.
+    CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+  AC_SUBST([LIBICONV])
+  AC_SUBST([LTLIBICONV])
+])
+m4trace:m4/iconv.m4:173: -1- AC_DEFUN([AM_ICONV], [
+  AM_ICONV_LINK
+  if test "$am_cv_func_iconv" = yes; then
+    AC_MSG_CHECKING([for iconv declaration])
+    AC_CACHE_VAL([am_cv_proto_iconv], [
+      AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    AC_MSG_RESULT([
+         $am_cv_proto_iconv])
+    AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+      [Define as const if the declaration of iconv() needs const.])
+  fi
+])
+m4trace:m4/intdiv0.m4:9: -1- AC_DEFUN([gt_INTDIV0], [
+  AC_REQUIRE([AC_PROG_CC])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
+    gt_cv_int_divbyzero_sigfpe,
+    [
+      gt_cv_int_divbyzero_sigfpe=
+changequote(,)dnl
+      case "$host_os" in
+        macos* | darwin[6-9]* | darwin[1-9][0-9]*)
+          # On MacOS X 10.2 or newer, just assume the same as when cross-
+          # compiling. If we were to perform the real test, 1 Crash Report
+          # dialog window would pop up.
+          case "$host_cpu" in
+            i[34567]86 | x86_64)
+              gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
+          esac
+          ;;
+      esac
+changequote([,])dnl
+      if test -z "$gt_cv_int_divbyzero_sigfpe"; then
+        AC_TRY_RUN([
+#include <stdlib.h>
+#include <signal.h>
+
+static void
+sigfpe_handler (int sig)
+{
+  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
+  exit (sig != SIGFPE);
+}
+
+int x = 1;
+int y = 0;
+int z;
+int nan;
+
+int main ()
+{
+  signal (SIGFPE, sigfpe_handler);
+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
+  signal (SIGTRAP, sigfpe_handler);
+#endif
+/* Linux/SPARC yields signal SIGILL.  */
+#if defined (__sparc__) && defined (__linux__)
+  signal (SIGILL, sigfpe_handler);
+#endif
+
+  z = x / y;
+  nan = y / y;
+  exit (1);
+}
+], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
+          [
+            # Guess based on the CPU.
+changequote(,)dnl
+            case "$host_cpu" in
+              alpha* | i[34567]86 | x86_64 | m68k | s390*)
+                gt_cv_int_divbyzero_sigfpe="guessing yes";;
+              *)
+                gt_cv_int_divbyzero_sigfpe="guessing no";;
+            esac
+changequote([,])dnl
+          ])
+      fi
+    ])
+  case "$gt_cv_int_divbyzero_sigfpe" in
+    *yes) value=1;;
+    *) value=0;;
+  esac
+  AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
+    [Define if integer division by zero raises signal SIGFPE.])
+])
+m4trace:m4/intl.m4:25: -1- AC_DEFUN([AM_INTL_SUBDIR], [
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AC_PROG_CC])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST])dnl
+  AC_REQUIRE([gt_GLIBC2])dnl
+  AC_REQUIRE([AC_PROG_RANLIB])dnl
+  AC_REQUIRE([gl_VISIBILITY])dnl
+  AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
+  AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
+  AC_REQUIRE([gt_TYPE_WINT_T])dnl
+  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([gt_TYPE_INTMAX_T])
+  AC_REQUIRE([gt_PRINTF_POSIX])
+  AC_REQUIRE([gl_GLIBC21])dnl
+  AC_REQUIRE([gl_XSIZE])dnl
+  AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
+  AC_REQUIRE([gt_INTL_MACOSX])dnl
+
+  dnl Support for automake's --enable-silent-rules.
+  case "$enable_silent_rules" in
+    yes) INTL_DEFAULT_VERBOSITY=0;;
+    no)  INTL_DEFAULT_VERBOSITY=1;;
+    *)   INTL_DEFAULT_VERBOSITY=1;;
+  esac
+  AC_SUBST([INTL_DEFAULT_VERBOSITY])
+
+  AC_CHECK_TYPE([ptrdiff_t], ,
+    [AC_DEFINE([ptrdiff_t], [long],
+       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
+    ])
+  AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
+  AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
+    snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
+
+  dnl Use the _snprintf function only if it is declared (because on NetBSD it
+  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
+  gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
+  gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
+
+  dnl Use the *_unlocked functions only if they are declared.
+  dnl (because some of them were defined without being declared in Solaris
+  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
+  dnl on Solaris 2.5.1 to run on Solaris 2.6).
+  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
+  gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
+
+  case $gt_cv_func_printf_posix in
+    *yes) HAVE_POSIX_PRINTF=1 ;;
+    *) HAVE_POSIX_PRINTF=0 ;;
+  esac
+  AC_SUBST([HAVE_POSIX_PRINTF])
+  if test "$ac_cv_func_asprintf" = yes; then
+    HAVE_ASPRINTF=1
+  else
+    HAVE_ASPRINTF=0
+  fi
+  AC_SUBST([HAVE_ASPRINTF])
+  if test "$ac_cv_func_snprintf" = yes; then
+    HAVE_SNPRINTF=1
+  else
+    HAVE_SNPRINTF=0
+  fi
+  AC_SUBST([HAVE_SNPRINTF])
+  if test "$ac_cv_func_newlocale" = yes; then
+    HAVE_NEWLOCALE=1
+  else
+    HAVE_NEWLOCALE=0
+  fi
+  AC_SUBST([HAVE_NEWLOCALE])
+  if test "$ac_cv_func_wprintf" = yes; then
+    HAVE_WPRINTF=1
+  else
+    HAVE_WPRINTF=0
+  fi
+  AC_SUBST([HAVE_WPRINTF])
+
+  AM_LANGINFO_CODESET
+  gt_LC_MESSAGES
+
+  dnl Compilation on mingw and Cygwin needs special Makefile rules, because
+  dnl 1. when we install a shared library, we must arrange to export
+  dnl    auxiliary pointer variables for every exported variable,
+  dnl 2. when we install a shared library and a static library simultaneously,
+  dnl    the include file specifies __declspec(dllimport) and therefore we
+  dnl    must arrange to define the auxiliary pointer variables for the
+  dnl    exported variables _also_ in the static library.
+  if test "$enable_shared" = yes; then
+    case "$host_os" in
+      mingw* | cygwin*) is_woe32dll=yes ;;
+      *) is_woe32dll=no ;;
+    esac
+  else
+    is_woe32dll=no
+  fi
+  WOE32DLL=$is_woe32dll
+  AC_SUBST([WOE32DLL])
+
+  dnl On mingw and Cygwin, we can activate special Makefile rules which add
+  dnl version information to the shared libraries and executables.
+  case "$host_os" in
+    mingw* | cygwin*) is_woe32=yes ;;
+    *) is_woe32=no ;;
+  esac
+  WOE32=$is_woe32
+  AC_SUBST([WOE32])
+  if test $WOE32 = yes; then
+    dnl Check for a program that compiles Windows resource files.
+    AC_CHECK_TOOL([WINDRES], [windres])
+  fi
+
+  dnl Determine whether when creating a library, "-lc" should be passed to
+  dnl libtool or not. On many platforms, it is required for the libtool option
+  dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
+  dnl in the *.la files - makes it impossible to create multithreaded programs,
+  dnl because libtool also reorders the -lc to come before the -pthread, and
+  dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
+  case "$host_os" in
+    hpux*) LTLIBC="" ;;
+    *)     LTLIBC="-lc" ;;
+  esac
+  AC_SUBST([LTLIBC])
+
+  dnl Rename some macros and functions used for locking.
+  AH_BOTTOM([
+#define __libc_lock_t                   gl_lock_t
+#define __libc_lock_define              gl_lock_define
+#define __libc_lock_define_initialized  gl_lock_define_initialized
+#define __libc_lock_init                gl_lock_init
+#define __libc_lock_lock                gl_lock_lock
+#define __libc_lock_unlock              gl_lock_unlock
+#define __libc_lock_recursive_t                   gl_recursive_lock_t
+#define __libc_lock_define_recursive              gl_recursive_lock_define
+#define __libc_lock_define_initialized_recursive  gl_recursive_lock_define_initialized
+#define __libc_lock_init_recursive                gl_recursive_lock_init
+#define __libc_lock_lock_recursive                gl_recursive_lock_lock
+#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
+#define glthread_in_use  libintl_thread_in_use
+#define glthread_lock_init_func     libintl_lock_init_func
+#define glthread_lock_lock_func     libintl_lock_lock_func
+#define glthread_lock_unlock_func   libintl_lock_unlock_func
+#define glthread_lock_destroy_func  libintl_lock_destroy_func
+#define glthread_rwlock_init_multithreaded     libintl_rwlock_init_multithreaded
+#define glthread_rwlock_init_func              libintl_rwlock_init_func
+#define glthread_rwlock_rdlock_multithreaded   libintl_rwlock_rdlock_multithreaded
+#define glthread_rwlock_rdlock_func            libintl_rwlock_rdlock_func
+#define glthread_rwlock_wrlock_multithreaded   libintl_rwlock_wrlock_multithreaded
+#define glthread_rwlock_wrlock_func            libintl_rwlock_wrlock_func
+#define glthread_rwlock_unlock_multithreaded   libintl_rwlock_unlock_multithreaded
+#define glthread_rwlock_unlock_func            libintl_rwlock_unlock_func
+#define glthread_rwlock_destroy_multithreaded  libintl_rwlock_destroy_multithreaded
+#define glthread_rwlock_destroy_func           libintl_rwlock_destroy_func
+#define glthread_recursive_lock_init_multithreaded     libintl_recursive_lock_init_multithreaded
+#define glthread_recursive_lock_init_func              libintl_recursive_lock_init_func
+#define glthread_recursive_lock_lock_multithreaded     libintl_recursive_lock_lock_multithreaded
+#define glthread_recursive_lock_lock_func              libintl_recursive_lock_lock_func
+#define glthread_recursive_lock_unlock_multithreaded   libintl_recursive_lock_unlock_multithreaded
+#define glthread_recursive_lock_unlock_func            libintl_recursive_lock_unlock_func
+#define glthread_recursive_lock_destroy_multithreaded  libintl_recursive_lock_destroy_multithreaded
+#define glthread_recursive_lock_destroy_func           libintl_recursive_lock_destroy_func
+#define glthread_once_func            libintl_once_func
+#define glthread_once_singlethreaded  libintl_once_singlethreaded
+#define glthread_once_multithreaded   libintl_once_multithreaded
+])
+])
+m4trace:m4/intl.m4:211: -1- AC_DEFUN([gt_INTL_SUBDIR_CORE], [
+  AC_REQUIRE([AC_C_INLINE])dnl
+  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+  AC_REQUIRE([AC_FUNC_MMAP])dnl
+  AC_REQUIRE([gt_INTDIV0])dnl
+  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
+  AC_REQUIRE([gt_INTTYPES_PRI])dnl
+  AC_REQUIRE([gl_LOCK])dnl
+
+  AC_TRY_LINK(
+    [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
+    [],
+    [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
+       [Define to 1 if the compiler understands __builtin_expect.])])
+
+  AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
+  AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
+    stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
+    argz_stringify argz_next __fsetlocking])
+
+  dnl Use the *_unlocked functions only if they are declared.
+  dnl (because some of them were defined without being declared in Solaris
+  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
+  dnl on Solaris 2.5.1 to run on Solaris 2.6).
+  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
+  gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
+  gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
+
+  AM_ICONV
+
+  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
+  dnl because plural.y uses bison specific features. It requires at least
+  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
+  dnl compile.
+  dnl bison is only needed for the maintainer (who touches plural.y). But in
+  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
+  dnl the rule in general Makefile. Now, some people carelessly touch the
+  dnl files or have a broken "make" program, hence the plural.c rule will
+  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
+  dnl present or too old.
+  AC_CHECK_PROGS([INTLBISON], [bison])
+  if test -z "$INTLBISON"; then
+    ac_verc_fail=yes
+  else
+    dnl Found it, now check the version.
+    AC_MSG_CHECKING([version of bison])
+changequote(<<,>>)dnl
+    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+    case $ac_prog_version in
+      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
+changequote([,])dnl
+         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+    esac
+    AC_MSG_RESULT([$ac_prog_version])
+  fi
+  if test $ac_verc_fail = yes; then
+    INTLBISON=:
+  fi
+])
+m4trace:m4/intl.m4:279: -1- AC_DEFUN([gt_CHECK_DECL], [
+  AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
+    [AC_TRY_COMPILE([$2], [
+#ifndef $1
+  char *p = (char *) $1;
+#endif
+], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
+  if test $ac_cv_have_decl_$1 = yes; then
+    gt_value=1
+  else
+    gt_value=0
+  fi
+  AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
+    [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
+])
+m4trace:m4/intlmacosx.m4:18: -1- AC_DEFUN([gt_INTL_MACOSX], [
+  dnl Check for API introduced in MacOS X 10.2.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    [gt_cv_func_CFPreferencesCopyAppValue],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+       [CFPreferencesCopyAppValue(NULL, NULL)],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in MacOS X 10.3.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
+m4trace:m4/intmax.m4:11: -1- AC_DEFUN([gt_TYPE_INTMAX_T], [
+  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
+    [AC_TRY_COMPILE([
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+],     [intmax_t x = -1;
+        return !x;],
+       [gt_cv_c_intmax_t=yes],
+       [gt_cv_c_intmax_t=no])])
+  if test $gt_cv_c_intmax_t = yes; then
+    AC_DEFINE([HAVE_INTMAX_T], [1],
+      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+  fi
+])
+m4trace:m4/inttypes-pri.m4:14: -1- AC_DEFUN([gt_INTTYPES_PRI], [
+  AC_CHECK_HEADERS([inttypes.h])
+  if test $ac_cv_header_inttypes_h = yes; then
+    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
+      [gt_cv_inttypes_pri_broken],
+      [
+        AC_TRY_COMPILE([#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
+      ])
+  fi
+  if test "$gt_cv_inttypes_pri_broken" = yes; then
+    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
+      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
+    PRI_MACROS_BROKEN=1
+  else
+    PRI_MACROS_BROKEN=0
+  fi
+  AC_SUBST([PRI_MACROS_BROKEN])
+])
+m4trace:m4/inttypes_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [
+  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
+  [AC_TRY_COMPILE(
+    [#include <sys/types.h>
+#include <inttypes.h>],
+    [uintmax_t i = (uintmax_t) -1; return !i;],
+    [gl_cv_header_inttypes_h=yes],
+    [gl_cv_header_inttypes_h=no])])
+  if test $gl_cv_header_inttypes_h = yes; then
+    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
+      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+       and declares uintmax_t. ])
+  fi
+])
+m4trace:m4/lcmessage.m4:22: -1- AC_DEFUN([gt_LC_MESSAGES], [
+  AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
+    [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
+  if test $gt_cv_val_LC_MESSAGES = yes; then
+    AC_DEFINE([HAVE_LC_MESSAGES], [1],
+      [Define if your <locale.h> file defines LC_MESSAGES.])
+  fi
+])
+m4trace:m4/lib-ld.m4:12: -1- AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+m4trace:m4/lib-ld.m4:25: -1- AC_DEFUN([AC_LIB_PROG_LD], [AC_ARG_WITH([gnu-ld],
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# 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=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      [re_direlt='/[^/][^/]*/\.\./']
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL([acl_cv_path_LD],
+[if test -z "$LD"; then
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+        test "$with_gnu_ld" != no && break ;;
+      *)
+        test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT([$LD])
+else
+  AC_MSG_RESULT([no])
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
+m4trace:m4/lib-link.m4:17: -1- AC_DEFUN([AC_LIB_LINKFLAGS], [
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  pushdef([Name],[translit([$1],[./-], [___])])
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+    AC_LIB_LINKFLAGS_BODY([$1], [$2])
+    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+  ])
+  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+  dnl results of this search when this library appears as a dependency.
+  HAVE_LIB[]NAME=yes
+  popdef([NAME])
+  popdef([Name])
+])
+m4trace:m4/lib-link.m4:57: -1- AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  pushdef([Name],[translit([$1],[./-], [___])])
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed lib[]Name and not disabled its use
+  dnl via --without-lib[]Name-prefix, he wants to use it.
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+    ac_save_LIBS="$LIBS"
+    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+    dnl because these -l options might require -L options that are present in
+    dnl LIBS. -l options benefit only from the -L options listed before it.
+    dnl Otherwise, add it to the front of LIBS, because it may be a static
+    dnl library that depends on another static library that is present in LIBS.
+    dnl Static libraries benefit only from the static libraries listed after
+    dnl it.
+    case " $LIB[]NAME" in
+      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+      *)       LIBS="$LIB[]NAME $LIBS" ;;
+    esac
+    AC_TRY_LINK([$3], [$4],
+      [ac_cv_lib[]Name=yes],
+      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+    LIBS="$ac_save_LIBS"
+  ])
+  if test "$ac_cv_lib[]Name" = yes; then
+    HAVE_LIB[]NAME=yes
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+    AC_MSG_CHECKING([how to link with lib[]$1])
+    AC_MSG_RESULT([$LIB[]NAME])
+  else
+    HAVE_LIB[]NAME=no
+    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+    dnl $INC[]NAME either.
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIB[]NAME=
+    LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
+  fi
+  AC_SUBST([HAVE_LIB]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  popdef([NAME])
+  popdef([Name])
+])
+m4trace:m4/lib-link.m4:122: -1- AC_DEFUN([AC_LIB_RPATH], [
+  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
+  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
+  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
+  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+  ])
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  dnl Determine whether the user wants rpath handling at all.
+  AC_ARG_ENABLE([rpath],
+    [  --disable-rpath         do not hardcode runtime library paths],
+    :, enable_rpath=yes)
+])
+m4trace:m4/lib-link.m4:158: -1- AC_DEFUN([AC_LIB_FROMPACKAGE], [
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  define([acl_frompackage_]NAME, [$2])
+  popdef([NAME])
+  pushdef([PACK],[$2])
+  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  define([acl_libsinpackage_]PACKUP,
+    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
+  popdef([PACKUP])
+  popdef([PACK])
+])
+m4trace:m4/lib-link.m4:178: -1- AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+  dnl Autoconf >= 2.61 supports dots in --with options.
+  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_ARG_WITH(P_A_C_K[-prefix],
+[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
+  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    fi
+])
+  dnl Search the library and its dependencies in $additional_libdir and
+  dnl $LDFLAGS. Using breadth-first-seach.
+  LIB[]NAME=
+  LTLIB[]NAME=
+  INC[]NAME=
+  LIB[]NAME[]_PREFIX=
+  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+  dnl computed. So it has to be reset here.
+  HAVE_LIB[]NAME=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='$1 $2'
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+        dnl or AC_LIB_HAVE_LINKFLAGS call.
+        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+          else
+            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+            dnl that this library doesn't exist. So just drop it.
+            :
+          fi
+        else
+          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+          dnl and the already constructed $LIBNAME/$LTLIBNAME.
+          found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+            dnl The same code as in the loop below:
+            dnl First look for a shared library.
+            if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+            dnl Then look for a static library.
+            if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIB[]NAME; do
+              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  dnl First look for a shared library.
+                  if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                  dnl Then look for a static library.
+                  if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+            dnl Found the library.
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+              dnl Linking with a shared library. We attempt to hardcode its
+              dnl directory into the executable's runpath, unless it's the
+              dnl standard /usr/lib.
+              if test "$enable_rpath" = no \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+                dnl No hardcoding is needed.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+              else
+                dnl Use an explicit option to hardcode DIR into the resulting
+                dnl binary.
+                dnl Potentially add DIR to ltrpathdirs.
+                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                dnl The hardcoding into $LIBNAME is system dependent.
+                if test "$acl_hardcode_direct" = yes; then
+                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+                  dnl resulting binary.
+                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                    dnl Use an explicit option to hardcode DIR into the resulting
+                    dnl binary.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    dnl Potentially add DIR to rpathdirs.
+                    dnl The rpathdirs will be appended to $LIBNAME at the end.
+                    haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                    dnl Rely on "-L$found_dir".
+                    dnl But don't add it if it's already contained in the LDFLAGS
+                    dnl or the already constructed $LIBNAME
+                    haveit=
+                    for x in $LDFLAGS $LIB[]NAME; do
+                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    else
+                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+                      dnl here, because this doesn't fit in flags passed to the
+                      dnl compiler. So give up. No hardcoding. This affects only
+                      dnl very old systems.
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                dnl Linking with a static library.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+              else
+                dnl We shouldn't come here, but anyway it's good to have a
+                dnl fallback.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+              fi
+            fi
+            dnl Assume the include files are nearby.
+            additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                if test "$name" = '$1'; then
+                  LIB[]NAME[]_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+              */$acl_libdirstem2 | */$acl_libdirstem2/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+                if test "$name" = '$1'; then
+                  LIB[]NAME[]_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+              dnl Potentially add $additional_includedir to $INCNAME.
+              dnl But don't add it
+              dnl   1. if it's the standard /usr/include,
+              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
+              dnl   3. if it's already present in $CPPFLAGS or the already
+              dnl      constructed $INCNAME,
+              dnl   4. if it doesn't exist as a directory.
+              if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INC[]NAME; do
+                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                      dnl Really add $additional_includedir to $INCNAME.
+                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+            dnl Look for dependencies.
+            if test -n "$found_la"; then
+              dnl Read the .la file. It defines the variables
+              dnl dlname, library_names, old_library, dependency_libs, current,
+              dnl age, revision, installed, dlopen, dlpreopen, libdir.
+              save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+              dnl We use only dependency_libs.
+              for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+                    dnl But don't add it
+                    dnl   1. if it's the standard /usr/lib,
+                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
+                    dnl   3. if it's already present in $LDFLAGS or the already
+                    dnl      constructed $LIBNAME,
+                    dnl   4. if it doesn't exist as a directory.
+                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LIBNAME.
+                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LTLIBNAME.
+                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                      dnl Potentially add DIR to rpathdirs.
+                      dnl The rpathdirs will be appended to $LIBNAME at the end.
+                      haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                      dnl Potentially add DIR to ltrpathdirs.
+                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                      haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                    dnl Handle this in the next round.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                    dnl Handle this in the next round. Throw away the .la's
+                    dnl directory; it is already contained in a preceding -L
+                    dnl option.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                    dnl Most likely an immediate library name.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+            dnl Didn't find the library; assume it is in the system directories
+            dnl known to the linker and runtime loader. (All the system
+            dnl directories known to the linker should also be known to the
+            dnl runtime loader, otherwise the system is severely misconfigured.)
+            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+      dnl Weird platform: only the last -rpath option counts, the user must
+      dnl pass all path elements in one option. We can arrange that for a
+      dnl single library, but not when more than one $LIBNAMEs are used.
+      alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+      acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+    else
+      dnl The -rpath options are cumulative.
+      for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+    dnl When using libtool, the option that works for both libraries and
+    dnl executables is -R. The -R options are cumulative.
+    for found_dir in $ltrpathdirs; do
+      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+    done
+  fi
+  popdef([P_A_C_K])
+  popdef([PACKLIBS])
+  popdef([PACKUP])
+  popdef([PACK])
+  popdef([NAME])
+])
+m4trace:m4/lib-link.m4:681: -1- AC_DEFUN([AC_LIB_APPENDTOVAR], [
+  for element in [$2]; do
+    haveit=
+    for x in $[$1]; do
+      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      [$1]="${[$1]}${[$1]:+ }$element"
+    fi
+  done
+])
+m4trace:m4/lib-link.m4:705: -1- AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [
+  AC_REQUIRE([AC_LIB_RPATH])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  $1=
+  if test "$enable_rpath" != no; then
+    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+      dnl Use an explicit option to hardcode directories into the resulting
+      dnl binary.
+      rpathdirs=
+      next=
+      for opt in $2; do
+        if test -n "$next"; then
+          dir="$next"
+          dnl No need to hardcode the standard /usr/lib.
+          if test "X$dir" != "X/usr/$acl_libdirstem" \
+             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+            rpathdirs="$rpathdirs $dir"
+          fi
+          next=
+        else
+          case $opt in
+            -L) next=yes ;;
+            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+                 dnl No need to hardcode the standard /usr/lib.
+                 if test "X$dir" != "X/usr/$acl_libdirstem" \
+                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+                   rpathdirs="$rpathdirs $dir"
+                 fi
+                 next= ;;
+            *) next= ;;
+          esac
+        fi
+      done
+      if test "X$rpathdirs" != "X"; then
+        if test -n ""$3""; then
+          dnl libtool is used for linking. Use -R options.
+          for dir in $rpathdirs; do
+            $1="${$1}${$1:+ }-R$dir"
+          done
+        else
+          dnl The linker is used for linking directly.
+          if test -n "$acl_hardcode_libdir_separator"; then
+            dnl Weird platform: only the last -rpath option counts, the user
+            dnl must pass all path elements in one option.
+            alldirs=
+            for dir in $rpathdirs; do
+              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+            done
+            acl_save_libdir="$libdir"
+            libdir="$alldirs"
+            eval flag=\"$acl_hardcode_libdir_flag_spec\"
+            libdir="$acl_save_libdir"
+            $1="$flag"
+          else
+            dnl The -rpath options are cumulative.
+            for dir in $rpathdirs; do
+              acl_save_libdir="$libdir"
+              libdir="$dir"
+              eval flag=\"$acl_hardcode_libdir_flag_spec\"
+              libdir="$acl_save_libdir"
+              $1="${$1}${$1:+ }$flag"
+            done
+          fi
+        fi
+      fi
+    fi
+  fi
+  AC_SUBST([$1])
+])
+m4trace:m4/lib-prefix.m4:12: -1- AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])
+m4trace:m4/lib-prefix.m4:22: -1- AC_DEFUN([AC_LIB_PREFIX], [
+  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib-prefix],
+[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+  --without-lib-prefix    don't search for libraries in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  if test $use_additional = yes; then
+    dnl Potentially add $additional_includedir to $CPPFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/include,
+    dnl   2. if it's already present in $CPPFLAGS,
+    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_includedir" != "X/usr/include"; then
+      haveit=
+      for x in $CPPFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-I$additional_includedir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_includedir" = "X/usr/local/include"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_includedir"; then
+            dnl Really add $additional_includedir to $CPPFLAGS.
+            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+          fi
+        fi
+      fi
+    fi
+    dnl Potentially add $additional_libdir to $LDFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/lib,
+    dnl   2. if it's already present in $LDFLAGS,
+    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+      haveit=
+      for x in $LDFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-L$additional_libdir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux*) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_libdir"; then
+            dnl Really add $additional_libdir to $LDFLAGS.
+            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+          fi
+        fi
+      fi
+    fi
+  fi
+])
+m4trace:m4/lib-prefix.m4:122: -1- AC_DEFUN([AC_LIB_PREPARE_PREFIX], [
+  dnl Unfortunately, prefix and exec_prefix get only finally determined
+  dnl at the end of configure.
+  if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+])
+m4trace:m4/lib-prefix.m4:145: -1- AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  $1
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+])
+m4trace:m4/lib-prefix.m4:162: -1- AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [
+  dnl There is no formal standard regarding lib and lib64.
+  dnl On glibc systems, the current practice is that on a system supporting
+  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
+  dnl the compiler's default mode by looking at the compiler's library search
+  dnl path. If at least one of its elements ends in /lib64 or points to a
+  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+  dnl Otherwise we use the default, namely "lib".
+  dnl On Solaris systems, the current practice is that on a system supporting
+  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  acl_libdirstem=lib
+  acl_libdirstem2=
+  case "$host_os" in
+    solaris*)
+      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
+      dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+      dnl symlink is missing, so we set acl_libdirstem2 too.
+      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+        [AC_EGREP_CPP([sixtyfour bits], [
+#ifdef _LP64
+sixtyfour bits
+#endif
+           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
+        ])
+      if test $gl_cv_solaris_64bit = yes; then
+        acl_libdirstem=lib/64
+        case "$host_cpu" in
+          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
+          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+        esac
+      fi
+      ;;
+    *)
+      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+      if test -n "$searchpath"; then
+        acl_save_IFS="${IFS= 	}"; IFS=":"
+        for searchdir in $searchpath; do
+          if test -d "$searchdir"; then
+            case "$searchdir" in
+              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+              */../ | */.. )
+                # Better ignore directories of this form. They are misleading.
+                ;;
+              *) searchdir=`cd "$searchdir" && pwd`
+                 case "$searchdir" in
+                   */lib64 ) acl_libdirstem=lib64 ;;
+                 esac ;;
+            esac
+          fi
+        done
+        IFS="$acl_save_IFS"
+      fi
+      ;;
+  esac
+  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+])
+m4trace:m4/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])
+m4trace:m4/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])
+m4trace:m4/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
+m4trace:m4/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])
+m4trace:m4/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+m4trace:m4/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(C++)])
+m4trace:m4/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+m4trace:m4/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran 77)])
+m4trace:m4/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+m4trace:m4/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran)])
+m4trace:m4/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+m4trace:m4/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Java)])
+m4trace:m4/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+m4trace:m4/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Windows Resource)])
+m4trace:m4/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+m4trace:m4/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])
+m4trace:m4/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:m4/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:m4/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])
+m4trace:m4/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:m4/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:m4/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])
+m4trace:m4/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:m4/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:m4/libtool.m4:1858: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])
+m4trace:m4/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:m4/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:m4/libtool.m4:2945: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])
+m4trace:m4/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:m4/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:m4/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])
+m4trace:m4/libtool.m4:3119: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3119: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3120: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3120: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3410: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])
+m4trace:m4/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])
+m4trace:m4/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:m4/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:m4/libtool.m4:7637: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+m4trace:m4/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:m4/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:m4/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
+])
+m4trace:m4/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
+])
+m4trace:m4/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:m4/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:m4/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:m4/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:m4/lock.m4:9: -1- AC_DEFUN([gl_LOCK], [
+  AC_REQUIRE([gl_THREADLIB])
+  if test "$gl_threads_api" = posix; then
+    # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
+    # pthread_rwlock_* functions.
+    AC_CHECK_TYPE([pthread_rwlock_t],
+      [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
+         [Define if the POSIX multithreading library has read/write locks.])],
+      [],
+      [#include <pthread.h>])
+    # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
+    AC_TRY_COMPILE([#include <pthread.h>],
+      [#if __FreeBSD__ == 4
+error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
+#else
+int x = (int)PTHREAD_MUTEX_RECURSIVE;
+return !x;
+#endif],
+      [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
+         [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
+  fi
+  gl_PREREQ_LOCK
+])
+m4trace:m4/lock.m4:35: -1- AC_DEFUN([gl_PREREQ_LOCK], [
+  AC_REQUIRE([AC_C_INLINE])
+])
+m4trace:m4/longlong.m4:17: -1- AC_DEFUN([AC_TYPE_LONG_LONG_INT], [
+  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+    [AC_LINK_IFELSE(
+       [_AC_TYPE_LONG_LONG_SNIPPET],
+       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+        dnl If cross compiling, assume the bug isn't important, since
+        dnl nobody cross compiles for this platform as far as we know.
+        AC_RUN_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[@%:@include <limits.h>
+               @%:@ifndef LLONG_MAX
+               @%:@ define HALF \
+                        (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+               @%:@ define LLONG_MAX (HALF - 1 + HALF)
+               @%:@endif]],
+             [[long long int n = 1;
+               int i;
+               for (i = 0; ; i++)
+                 {
+                   long long int m = n << i;
+                   if (m >> i != n)
+                     return 1;
+                   if (LLONG_MAX / 2 < m)
+                     break;
+                 }
+               return 0;]])],
+          [ac_cv_type_long_long_int=yes],
+          [ac_cv_type_long_long_int=no],
+          [ac_cv_type_long_long_int=yes])],
+       [ac_cv_type_long_long_int=no])])
+  if test $ac_cv_type_long_long_int = yes; then
+    AC_DEFINE([HAVE_LONG_LONG_INT], [1],
+      [Define to 1 if the system has the type `long long int'.])
+  fi
+])
+m4trace:m4/longlong.m4:63: -1- AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [
+  AC_CACHE_CHECK([for unsigned long long int],
+    [ac_cv_type_unsigned_long_long_int],
+    [AC_LINK_IFELSE(
+       [_AC_TYPE_LONG_LONG_SNIPPET],
+       [ac_cv_type_unsigned_long_long_int=yes],
+       [ac_cv_type_unsigned_long_long_int=no])])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+      [Define to 1 if the system has the type `unsigned long long int'.])
+  fi
+])
+m4trace:m4/longlong.m4:82: -1- AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [
+  AC_LANG_PROGRAM(
+    [[/* For now, do not test the preprocessor; as of 2007 there are too many
+         implementations with broken preprocessors.  Perhaps this can
+         be revisited in 2012.  In the meantime, code should not expect
+         #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                     ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                     ? 1 : -1)];
+      int i = 63;]],
+    [[/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+              | (llmax / ll) | (llmax % ll)
+              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+              | (ullmax / ull) | (ullmax % ull));]])
+])
+m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+m4trace:m4/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+m4trace:m4/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+m4trace:m4/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+m4trace:m4/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+m4trace:m4/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+m4trace:m4/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+m4trace:m4/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
+m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
+m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
+m4trace:m4/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
+m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
+m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
+m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
+m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
+m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
+m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
+m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
+m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
+m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
+m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
+m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
+m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
+m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
+m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
+m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
+m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
+m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
+m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
+m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
+m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
+m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
+m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
+m4trace:m4/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
+m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
+m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
+m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
+m4trace:m4/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
+m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
+m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
+m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
+m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
+m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
+m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
+m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
+m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
+m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
+m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
+m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
+m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
+m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
+m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
+m4trace:m4/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
+m4trace:m4/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
+m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
+m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
+m4trace:m4/nls.m4:23: -1- AC_DEFUN([AM_NLS], [
+  AC_MSG_CHECKING([whether NLS is requested])
+  dnl Default is enabled NLS
+  AC_ARG_ENABLE([nls],
+    [  --disable-nls           do not use Native Language Support],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT([$USE_NLS])
+  AC_SUBST([USE_NLS])
+])
+m4trace:m4/po.m4:23: -1- AC_DEFUN([AM_PO_SUBDIRS], [
+  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AM_NLS])dnl
+
+  dnl Release version of the gettext macros. This is used to ensure that
+  dnl the gettext macros and po/Makefile.in.in are in sync.
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
+
+  dnl Perform the following tests also if --disable-nls has been given,
+  dnl because they are needed for "make dist" to work.
+
+  dnl Search for GNU msgfmt in the PATH.
+  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+  dnl The second test excludes FreeBSD msgfmt.
+  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
+
+  dnl Search for GNU xgettext 0.12 or newer in the PATH.
+  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+  dnl The second test excludes FreeBSD xgettext.
+  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  dnl Remove leftover from FreeBSD xgettext call.
+  rm -f messages.po
+
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
+  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+  dnl Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
+
+  dnl Support for AM_XGETTEXT_OPTION.
+  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+  AC_CONFIG_COMMANDS([po-directories], [[
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ 	]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done]],
+   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+   ])
+])
+m4trace:m4/po.m4:218: -1- AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [
+  # When this code is run, in config.status, two variables have already been
+  # set:
+  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+  # - LINGUAS is the value of the environment variable LINGUAS at configure
+  #   time.
+
+changequote(,)dnl
+  # Adjust a relative srcdir.
+  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+  # In autoconf-2.13 it is called $ac_given_srcdir.
+  # In autoconf-2.50 it is called $srcdir.
+  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+  case "$ac_given_srcdir" in
+    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+    /*) top_srcdir="$ac_given_srcdir" ;;
+    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  # Find a way to echo strings without interpreting backslash.
+  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+    gt_echo='echo'
+  else
+    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+      gt_echo='printf %s\n'
+    else
+      echo_func () {
+        cat <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[	 ]*VARIABLE[	 ]*=/{
+  # Seen the first line of the variable definition.
+  s/^[	 ]*VARIABLE[	 ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  if test -n "$OBSOLETE_ALL_LINGUAS"; then
+    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+  fi
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
+  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+  # Compute POFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+  # Compute UPDATEPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+  # Compute DUMMYPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+  # Compute GMOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  for lang in $ALL_LINGUAS; do
+    POFILES="$POFILES $srcdirpre$lang.po"
+    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  done
+  # CATALOGS depends on both $ac_dir and the user's LINGUAS
+  # environment variable.
+  INST_LINGUAS=
+  if test -n "$ALL_LINGUAS"; then
+    for presentlang in $ALL_LINGUAS; do
+      useit=no
+      if test "%UNSET%" != "$LINGUAS"; then
+        desiredlanguages="$LINGUAS"
+      else
+        desiredlanguages="$ALL_LINGUAS"
+      fi
+      for desiredlang in $desiredlanguages; do
+        # Use the presentlang catalog if desiredlang is
+        #   a. equal to presentlang, or
+        #   b. a variant of presentlang (because in this case,
+        #      presentlang can be used as a fallback for messages
+        #      which are not translated in the desiredlang catalog).
+        case "$desiredlang" in
+          "$presentlang"*) useit=yes;;
+        esac
+      done
+      if test $useit = yes; then
+        INST_LINGUAS="$INST_LINGUAS $presentlang"
+      fi
+    done
+  fi
+  CATALOGS=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+	@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+	\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+	@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+	\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
+m4trace:m4/po.m4:439: -1- AC_DEFUN([AM_XGETTEXT_OPTION_INIT], [
+  XGETTEXT_EXTRA_OPTIONS=
+])
+m4trace:m4/po.m4:445: -1- AC_DEFUN([AM_XGETTEXT_OPTION], [
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
+m4trace:m4/posix-shell.m4:15: -1- AC_DEFUN([gl_POSIX_SHELL], [
+  AC_CACHE_CHECK([for a shell that conforms to POSIX], [gl_cv_posix_shell],
+    [gl_test_posix_shell_script='
+       func_return () {
+	 (exit [$]1)
+       }
+       func_success () {
+	 func_return 0
+       }
+       func_failure () {
+	 func_return 1
+       }
+       func_ret_success () {
+	 return 0
+       }
+       func_ret_failure () {
+	 return 1
+       }
+       subshell_umask_sanity () {
+	 (umask 22; (umask 0); test $(umask) -eq 22)
+       }
+       test "[$](echo foo)" = foo &&
+       func_success &&
+       ! func_failure &&
+       func_ret_success &&
+       ! func_ret_failure &&
+       (set x && func_ret_success y && test x = "[$]1") &&
+       subshell_umask_sanity
+     '
+     for gl_cv_posix_shell in \
+	 "$CONFIG_SHELL" "$SHELL" /bin/sh /bin/bash /bin/ksh /bin/sh5 no; do
+       case $gl_cv_posix_shell in
+         /*)
+	   "$gl_cv_posix_shell" -c "$gl_test_posix_shell_script" 2>/dev/null \
+	     && break;;
+       esac
+     done])
+
+  if test "$gl_cv_posix_shell" != no; then
+    POSIX_SHELL=$gl_cv_posix_shell
+    PREFERABLY_POSIX_SHELL=$POSIX_SHELL
+  else
+    POSIX_SHELL=
+    PREFERABLY_POSIX_SHELL=/bin/sh
+  fi
+  AC_SUBST([POSIX_SHELL])
+  AC_SUBST([PREFERABLY_POSIX_SHELL])
+])
+m4trace:m4/printf-posix.m4:11: -1- AC_DEFUN([gt_PRINTF_POSIX], [
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
+    gt_cv_func_printf_posix,
+    [
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+   dollar expansion (possibly an autoconf bug).  */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+  sprintf (buf, format, 33, 55);
+  return (strcmp (buf, "55 33") != 0);
+}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
+      [
+        AC_EGREP_CPP([notposix], [
+#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
+  notposix
+#endif
+          ],
+          [gt_cv_func_printf_posix="guessing no"],
+          [gt_cv_func_printf_posix="guessing yes"])
+      ])
+    ])
+  case $gt_cv_func_printf_posix in
+    *yes)
+      AC_DEFINE([HAVE_POSIX_PRINTF], [1],
+        [Define if your printf() function supports format strings with positions.])
+      ;;
+  esac
+])
+m4trace:m4/progtest.m4:25: -1- AC_DEFUN([AM_PATH_PROG_WITH_TEST], [
+# Prepare PATH_SEPARATOR.
+# 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=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL([ac_cv_path_$1],
+[case "[$]$1" in
+  [[\\/]]* | ?:[[\\/]]*)
+    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in ifelse([$5], , $PATH, [$5]); do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+          if [$3]; then
+            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+    ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$][$1])
+else
+  AC_MSG_RESULT([no])
+fi
+AC_SUBST([$1])dnl
+])
+m4trace:m4/size_max.m4:9: -1- AC_DEFUN([gl_SIZE_MAX], [
+  AC_CHECK_HEADERS([stdint.h])
+  dnl First test whether the system already has SIZE_MAX.
+  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
+    gl_cv_size_max=
+    AC_EGREP_CPP([Found it], [
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+], [gl_cv_size_max=yes])
+    if test -z "$gl_cv_size_max"; then
+      dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
+      dnl than the type 'unsigned long'. Try hard to find a definition that can
+      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
+      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
+        [#include <stddef.h>
+#include <limits.h>], [size_t_bits_minus_1=])
+      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
+        [#include <stddef.h>], [fits_in_uint=])
+      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+        if test $fits_in_uint = 1; then
+          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
+          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
+          AC_TRY_COMPILE([#include <stddef.h>
+            extern size_t foo;
+            extern unsigned long foo;
+            ], [], [fits_in_uint=0])
+        fi
+        dnl We cannot use 'expr' to simplify this expression, because 'expr'
+        dnl works only with 'long' integers in the host environment, while we
+        dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
+        if test $fits_in_uint = 1; then
+          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+        else
+          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+        fi
+      else
+        dnl Shouldn't happen, but who knows...
+        gl_cv_size_max='((size_t)~(size_t)0)'
+      fi
+    fi
+  ])
+  if test "$gl_cv_size_max" != yes; then
+    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
+      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
+  fi
+  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
+  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
+  dnl #define by AC_DEFINE_UNQUOTED.
+  AH_VERBATIM([SIZE_MAX],
+[/* Define as the maximum value of type 'size_t', if the system doesn't define
+   it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif])
+])
+m4trace:m4/stdint_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_STDINT_H], [
+  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
+  [AC_TRY_COMPILE(
+    [#include <sys/types.h>
+#include <stdint.h>],
+    [uintmax_t i = (uintmax_t) -1; return !i;],
+    [gl_cv_header_stdint_h=yes],
+    [gl_cv_header_stdint_h=no])])
+  if test $gl_cv_header_stdint_h = yes; then
+    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
+      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+       and declares uintmax_t. ])
+  fi
+])
+m4trace:m4/threadlib.m4:24: -1- AC_DEFUN([gl_THREADLIB_EARLY], [
+  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
+])
+m4trace:m4/threadlib.m4:31: -1- AC_DEFUN([gl_THREADLIB_EARLY_BODY], [
+  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
+  dnl influences the result of the autoconf tests that test for *_unlocked
+  dnl declarations, on AIX 5 at least. Therefore it must come early.
+  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
+  AC_BEFORE([$0], [gl_ARGP])dnl
+
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
+  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
+  dnl AC_GNU_SOURCE.
+  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
+    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
+    [AC_REQUIRE([AC_GNU_SOURCE])])
+  dnl Check for multithreading.
+  m4_divert_text([DEFAULTS], [gl_use_threads_default=])
+  AC_ARG_ENABLE([threads],
+AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
+AC_HELP_STRING([--disable-threads], [build without multithread safety]),
+    [gl_use_threads=$enableval],
+    [if test -n "$gl_use_threads_default"; then
+       gl_use_threads="$gl_use_threads_default"
+     else
+changequote(,)dnl
+       case "$host_os" in
+         dnl Disable multithreading by default on OSF/1, because it interferes
+         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
+         dnl child process gets an endless segmentation fault inside execvp().
+         dnl Disable multithreading by default on Cygwin 1.5.x, because it has
+         dnl bugs that lead to endless loops or crashes. See
+         dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
+         osf*) gl_use_threads=no ;;
+         cygwin*)
+               case `uname -r` in
+                 1.[0-5].*) gl_use_threads=no ;;
+                 *)         gl_use_threads=yes ;;
+               esac
+               ;;
+         *)    gl_use_threads=yes ;;
+       esac
+changequote([,])dnl
+     fi
+    ])
+  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+    # For using <pthread.h>:
+    case "$host_os" in
+      osf*)
+        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+        # groks <pthread.h>. cc also understands the flag -pthread, but
+        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+        # 2. putting a flag into CPPFLAGS that has an effect on the linker
+        # causes the AC_TRY_LINK test below to succeed unexpectedly,
+        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+        ;;
+    esac
+    # Some systems optimize for single-threaded programs by default, and
+    # need special flags to disable these optimizations. For example, the
+    # definition of 'errno' in <errno.h>.
+    case "$host_os" in
+      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+    esac
+  fi
+])
+m4trace:m4/threadlib.m4:100: -1- AC_DEFUN([gl_THREADLIB_BODY], [
+  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
+  gl_threads_api=none
+  LIBTHREAD=
+  LTLIBTHREAD=
+  LIBMULTITHREAD=
+  LTLIBMULTITHREAD=
+  if test "$gl_use_threads" != no; then
+    dnl Check whether the compiler and linker support weak declarations.
+    AC_CACHE_CHECK([whether imported symbols can be declared weak],
+      [gl_cv_have_weak],
+      [gl_cv_have_weak=no
+       dnl First, test whether the compiler accepts it syntactically.
+       AC_TRY_LINK([extern void xyzzy ();
+#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
+       if test $gl_cv_have_weak = maybe; then
+         dnl Second, test whether it actually works. On Cygwin 1.7.2, with
+         dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
+         AC_TRY_RUN([
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+  return (fputs == NULL);
+}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
+           [dnl When cross-compiling, assume that only ELF platforms support
+            dnl weak symbols.
+            AC_EGREP_CPP([Extensible Linking Format],
+              [#ifdef __ELF__
+               Extensible Linking Format
+               #endif
+              ],
+              [gl_cv_have_weak="guessing yes"],
+              [gl_cv_have_weak="guessing no"])
+           ])
+       fi
+      ])
+    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
+      AC_CHECK_HEADER([pthread.h],
+        [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
+      if test "$gl_have_pthread_h" = yes; then
+        # Other possible tests:
+        #   -lpthreads (FSU threads, PCthreads)
+        #   -lgthreads
+        gl_have_pthread=
+        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+        # the second one only in libpthread, and lock.c needs it.
+        AC_TRY_LINK([#include <pthread.h>],
+          [pthread_mutex_lock((pthread_mutex_t*)0);
+           pthread_mutexattr_init((pthread_mutexattr_t*)0);],
+          [gl_have_pthread=yes])
+        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+        # since it is defined as a macro on OSF/1.)
+        if test -n "$gl_have_pthread"; then
+          # The program links fine without libpthread. But it may actually
+          # need to link with libpthread in order to create multiple threads.
+          AC_CHECK_LIB([pthread], [pthread_kill],
+            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+             # On Solaris and HP-UX, most pthread functions exist also in libc.
+             # Therefore pthread_in_use() needs to actually try to create a
+             # thread: pthread_create from libc will fail, whereas
+             # pthread_create will actually create a thread.
+             case "$host_os" in
+               solaris* | hpux*)
+                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
+                   [Define if the pthread_in_use() detection is hard.])
+             esac
+            ])
+        else
+          # Some library is needed. Try libpthread and libc_r.
+          AC_CHECK_LIB([pthread], [pthread_kill],
+            [gl_have_pthread=yes
+             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
+          if test -z "$gl_have_pthread"; then
+            # For FreeBSD 4.
+            AC_CHECK_LIB([c_r], [pthread_kill],
+              [gl_have_pthread=yes
+               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
+          fi
+        fi
+        if test -n "$gl_have_pthread"; then
+          gl_threads_api=posix
+          AC_DEFINE([USE_POSIX_THREADS], [1],
+            [Define if the POSIX multithreading library can be used.])
+          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+              AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
+                [Define if references to the POSIX multithreading library should be made weak.])
+              LIBTHREAD=
+              LTLIBTHREAD=
+            fi
+          fi
+        fi
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+        gl_have_solaristhread=
+        gl_save_LIBS="$LIBS"
+        LIBS="$LIBS -lthread"
+        AC_TRY_LINK([#include <thread.h>
+#include <synch.h>],
+          [thr_self();],
+          [gl_have_solaristhread=yes])
+        LIBS="$gl_save_LIBS"
+        if test -n "$gl_have_solaristhread"; then
+          gl_threads_api=solaris
+          LIBTHREAD=-lthread
+          LTLIBTHREAD=-lthread
+          LIBMULTITHREAD="$LIBTHREAD"
+          LTLIBMULTITHREAD="$LTLIBTHREAD"
+          AC_DEFINE([USE_SOLARIS_THREADS], [1],
+            [Define if the old Solaris multithreading library can be used.])
+          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
+              [Define if references to the old Solaris multithreading library should be made weak.])
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      fi
+    fi
+    if test "$gl_use_threads" = pth; then
+      gl_save_CPPFLAGS="$CPPFLAGS"
+      AC_LIB_LINKFLAGS([pth])
+      gl_have_pth=
+      gl_save_LIBS="$LIBS"
+      LIBS="$LIBS -lpth"
+      AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
+      LIBS="$gl_save_LIBS"
+      if test -n "$gl_have_pth"; then
+        gl_threads_api=pth
+        LIBTHREAD="$LIBPTH"
+        LTLIBTHREAD="$LTLIBPTH"
+        LIBMULTITHREAD="$LIBTHREAD"
+        LTLIBMULTITHREAD="$LTLIBTHREAD"
+        AC_DEFINE([USE_PTH_THREADS], [1],
+          [Define if the GNU Pth multithreading library can be used.])
+        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+            AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
+              [Define if references to the GNU Pth multithreading library should be made weak.])
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      else
+        CPPFLAGS="$gl_save_CPPFLAGS"
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
+        if { case "$host_os" in
+               mingw*) true;;
+               *) false;;
+             esac
+           }; then
+          gl_threads_api=win32
+          AC_DEFINE([USE_WIN32_THREADS], [1],
+            [Define if the Win32 multithreading API can be used.])
+        fi
+      fi
+    fi
+  fi
+  AC_MSG_CHECKING([for multithread API to use])
+  AC_MSG_RESULT([$gl_threads_api])
+  AC_SUBST([LIBTHREAD])
+  AC_SUBST([LTLIBTHREAD])
+  AC_SUBST([LIBMULTITHREAD])
+  AC_SUBST([LTLIBMULTITHREAD])
+])
+m4trace:m4/threadlib.m4:278: -1- AC_DEFUN([gl_THREADLIB], [
+  AC_REQUIRE([gl_THREADLIB_EARLY])
+  AC_REQUIRE([gl_THREADLIB_BODY])
+])
+m4trace:m4/threadlib.m4:291: -1- AC_DEFUN([gl_DISABLE_THREADS], [
+  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
+])
+m4trace:m4/tuklib_common.m4:18: -1- AC_DEFUN_ONCE([TUKLIB_COMMON], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC_C99])
+AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
+m4trace:m4/tuklib_cpucores.m4:28: -1- AC_DEFUN_ONCE([TUKLIB_CPUCORES], [
+AC_REQUIRE([TUKLIB_COMMON])
+
+# sys/param.h might be needed by sys/sysctl.h.
+AC_CHECK_HEADERS([sys/param.h])
+
+AC_CACHE_CHECK([how to detect the number of available CPU cores],
+	[tuklib_cv_cpucores_method], [
+
+# Maybe checking $host_os would be enough but this matches what
+# tuklib_cpucores.c does.
+#
+# NOTE: IRIX has a compiler that doesn't error out with #error, so use
+# a non-compilable text instead of #error to generate an error.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#if defined(_WIN32) || defined(__CYGWIN__)
+int main(void) { return 0; }
+#else
+compile error
+#endif
+]])], [tuklib_cv_cpucores_method=special], [
+
+# glibc-based systems (GNU/Linux and GNU/kFreeBSD) have sched_getaffinity().
+# The CPU_COUNT() macro was added in glibc 2.9 so we try to link the
+# test program instead of merely compiling it. glibc 2.9 is old enough that
+# if someone uses the code on older glibc, the fallback to sysconf() should
+# be good enough.
+AC_LINK_IFELSE([AC_LANG_SOURCE([[
+#include <sched.h>
+int
+main(void)
+{
+	cpu_set_t cpu_mask;
+	sched_getaffinity(0, sizeof(cpu_mask), &cpu_mask);
+	return CPU_COUNT(&cpu_mask);
+}
+]])], [tuklib_cv_cpucores_method=sched_getaffinity], [
+
+# FreeBSD has both cpuset and sysctl. Look for cpuset first because
+# it's a better approach.
+#
+# This test would match on GNU/kFreeBSD too but it would require
+# -lfreebsd-glue when linking and thus in the current form this would
+# fail on GNU/kFreeBSD. The above test for sched_getaffinity() matches
+# on GNU/kFreeBSD so the test below should never run on that OS.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/param.h>
+#include <sys/cpuset.h>
+
+int
+main(void)
+{
+	cpuset_t set;
+	cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1,
+			sizeof(set), &set);
+	return 0;
+}
+]])], [tuklib_cv_cpucores_method=cpuset], [
+
+# On OS/2, both sysconf() and sysctl() pass the tests in this file,
+# but only sysctl() works. On QNX it's the opposite: only sysconf() works
+# (although it assumes that _POSIX_SOURCE, _XOPEN_SOURCE, and _POSIX_C_SOURCE
+# are undefined or alternatively _QNX_SOURCE is defined).
+#
+# We test sysctl() first and intentionally break the sysctl() test on QNX
+# so that sysctl() is never used on QNX.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#ifdef __QNX__
+compile error
+#endif
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#	include <sys/param.h>
+#endif
+#include <sys/sysctl.h>
+int
+main(void)
+{
+	int name[2] = { CTL_HW, HW_NCPU };
+	int cpus;
+	size_t cpus_size = sizeof(cpus);
+	sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
+	return 0;
+}
+]])], [tuklib_cv_cpucores_method=sysctl], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+int
+main(void)
+{
+	long i;
+#ifdef _SC_NPROCESSORS_ONLN
+	/* Many systems using sysconf() */
+	i = sysconf(_SC_NPROCESSORS_ONLN);
+#else
+	/* IRIX */
+	i = sysconf(_SC_NPROC_ONLN);
+#endif
+	return 0;
+}
+]])], [tuklib_cv_cpucores_method=sysconf], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/param.h>
+#include <sys/pstat.h>
+
+int
+main(void)
+{
+	struct pst_dynamic pst;
+	pstat_getdynamic(&pst, sizeof(pst), 1, 0);
+	(void)pst.psd_proc_cnt;
+	return 0;
+}
+]])], [tuklib_cv_cpucores_method=pstat_getdynamic], [
+
+	tuklib_cv_cpucores_method=unknown
+])])])])])])])
+
+case $tuklib_cv_cpucores_method in
+	sched_getaffinity)
+		AC_DEFINE([TUKLIB_CPUCORES_SCHED_GETAFFINITY], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with sched_getaffinity()])
+		;;
+	cpuset)
+		AC_DEFINE([TUKLIB_CPUCORES_CPUSET], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with cpuset(2).])
+		;;
+	sysctl)
+		AC_DEFINE([TUKLIB_CPUCORES_SYSCTL], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with sysctl().])
+		;;
+	sysconf)
+		AC_DEFINE([TUKLIB_CPUCORES_SYSCONF], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with sysconf(_SC_NPROCESSORS_ONLN)
+			or sysconf(_SC_NPROC_ONLN).])
+		;;
+	pstat_getdynamic)
+		AC_DEFINE([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with pstat_getdynamic().])
+		;;
+esac
+])
+m4trace:m4/tuklib_integer.m4:22: -1- AC_DEFUN_ONCE([TUKLIB_INTEGER], [
+AC_REQUIRE([TUKLIB_COMMON])
+AC_REQUIRE([AC_C_BIGENDIAN])
+AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break])
+
+# Even if we have byteswap.h, we may lack the specific macros/functions.
+if test x$ac_cv_header_byteswap_h = xyes ; then
+	m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [
+		AC_MSG_CHECKING([if FUNC is available])
+		AC_LINK_IFELSE([AC_LANG_SOURCE([
+#include <byteswap.h>
+int
+main(void)
+{
+	FUNC[](42);
+	return 0;
+}
+		])], [
+			AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1],
+					[Define to 1 if] FUNC [is available.])
+			AC_MSG_RESULT([yes])
+		], [AC_MSG_RESULT([no])])
+
+	])dnl
+fi
+
+AC_MSG_CHECKING([if unaligned memory access should be used])
+AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access],
+		[Enable if the system supports *fast* unaligned memory access
+		with 16-bit and 32-bit integers. By default, this is enabled
+		only on x86, x86_64, and big endian PowerPC.]),
+	[], [enable_unaligned_access=auto])
+if test "x$enable_unaligned_access" = xauto ; then
+	# TODO: There may be other architectures, on which unaligned access
+	# is OK.
+	case $host_cpu in
+		i?86|x86_64|powerpc|powerpc64)
+			enable_unaligned_access=yes
+			;;
+		*)
+			enable_unaligned_access=no
+			;;
+	esac
+fi
+if test "x$enable_unaligned_access" = xyes ; then
+	AC_DEFINE([TUKLIB_FAST_UNALIGNED_ACCESS], [1], [Define to 1 if
+		the system supports fast unaligned access to 16-bit and
+		32-bit integers.])
+	AC_MSG_RESULT([yes])
+else
+	AC_MSG_RESULT([no])
+fi
+])
+m4trace:m4/tuklib_mbstr.m4:26: -1- AC_DEFUN_ONCE([TUKLIB_MBSTR], [
+AC_REQUIRE([TUKLIB_COMMON])
+AC_FUNC_MBRTOWC
+AC_CHECK_FUNCS([wcwidth])
+])
+m4trace:m4/tuklib_physmem.m4:40: -1- AC_DEFUN_ONCE([TUKLIB_PHYSMEM], [
+AC_REQUIRE([TUKLIB_COMMON])
+
+# sys/param.h might be needed by sys/sysctl.h.
+AC_CHECK_HEADERS([sys/param.h])
+
+AC_CACHE_CHECK([how to detect the amount of physical memory],
+	[tuklib_cv_physmem_method], [
+
+# Maybe checking $host_os would be enough but this matches what
+# tuklib_physmem.c does.
+#
+# NOTE: IRIX has a compiler that doesn't error out with #error, so use
+# a non-compilable text instead of #error to generate an error.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(__OS2__) \
+		|| defined(__DJGPP__) || defined(__VMS) \
+		|| defined(AMIGA) || defined(__AROS__) || defined(__QNX__)
+int main(void) { return 0; }
+#else
+compile error
+#endif
+]])], [tuklib_cv_physmem_method=special], [
+
+# Look for AIX-specific solution before sysconf(), because the test
+# for sysconf() will pass on AIX but won't actually work
+# (sysconf(_SC_PHYS_PAGES) compiles but always returns -1 on AIX).
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/systemcfg.h>
+
+int
+main(void)
+{
+	(void)_system_configuration.physmem;
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=aix], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+int
+main(void)
+{
+	long i;
+	i = sysconf(_SC_PAGESIZE);
+	i = sysconf(_SC_PHYS_PAGES);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=sysconf], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#	include <sys/param.h>
+#endif
+#include <sys/sysctl.h>
+int
+main(void)
+{
+	int name[2] = { CTL_HW, HW_PHYSMEM };
+	unsigned long mem;
+	size_t mem_ptr_size = sizeof(mem);
+	sysctl(name, 2, &mem, &mem_ptr_size, NULL, 0);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=sysctl], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/sysinfo.h>
+#include <machine/hal_sysinfo.h>
+
+int
+main(void)
+{
+	int memkb;
+	int start = 0;
+	getsysinfo(GSI_PHYSMEM, (caddr_t)&memkb, sizeof(memkb), &start);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=getsysinfo],[
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/param.h>
+#include <sys/pstat.h>
+
+int
+main(void)
+{
+	struct pst_static pst;
+	pstat_getstatic(&pst, sizeof(pst), 1, 0);
+	(void)pst.physical_memory;
+	(void)pst.page_size;
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=pstat_getstatic],[
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <invent.h>
+int
+main(void)
+{
+	inv_state_t *st = NULL;
+	setinvent_r(&st);
+	getinvent_r(st);
+	endinvent_r(st);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=getinvent_r], [
+
+# This version of sysinfo() is Linux-specific. Some non-Linux systems have
+# different sysinfo() so we must check $host_os.
+case $host_os in
+	linux*)
+		AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/sysinfo.h>
+int
+main(void)
+{
+	struct sysinfo si;
+	sysinfo(&si);
+	return 0;
+}
+		]])], [
+			tuklib_cv_physmem_method=sysinfo
+		], [
+			tuklib_cv_physmem_method=unknown
+		])
+		;;
+	*)
+		tuklib_cv_physmem_method=unknown
+		;;
+esac
+])])])])])])])])
+
+case $tuklib_cv_physmem_method in
+	aix)
+		AC_DEFINE([TUKLIB_PHYSMEM_AIX], [1],
+			[Define to 1 if the amount of physical memory
+			can be detected with _system_configuration.physmem.])
+		;;
+	sysconf)
+		AC_DEFINE([TUKLIB_PHYSMEM_SYSCONF], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with sysconf(_SC_PAGESIZE) and
+			sysconf(_SC_PHYS_PAGES).])
+		;;
+	sysctl)
+		AC_DEFINE([TUKLIB_PHYSMEM_SYSCTL], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with sysctl().])
+		;;
+	getsysinfo)
+		AC_DEFINE([TUKLIB_PHYSMEM_GETSYSINFO], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with getsysinfo().])
+		;;
+	pstat_getstatic)
+		AC_DEFINE([TUKLIB_PHYSMEM_PSTAT_GETSTATIC], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with pstat_getstatic().])
+		;;
+	getinvent_r)
+		AC_DEFINE([TUKLIB_PHYSMEM_GETINVENT_R], [1],
+			[Define to 1 if the amount of physical memory
+			can be detected with getinvent_r().])
+		;;
+	sysinfo)
+		AC_DEFINE([TUKLIB_PHYSMEM_SYSINFO], [1],
+			[Define to 1 if the amount of physical memory
+			can be detected with Linux sysinfo().])
+		;;
+esac
+])
+m4trace:m4/tuklib_progname.m4:22: -1- AC_DEFUN_ONCE([TUKLIB_PROGNAME], [
+AC_REQUIRE([TUKLIB_COMMON])
+AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
+])
+m4trace:m4/uintmax_t.m4:14: -1- AC_DEFUN([gl_AC_TYPE_UINTMAX_T], [
+  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+    AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+    test $ac_cv_type_unsigned_long_long_int = yes \
+      && ac_type='unsigned long long' \
+      || ac_type='unsigned long'
+    AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
+      [Define to unsigned long or unsigned long long
+       if <stdint.h> and <inttypes.h> don't define.])
+  else
+    AC_DEFINE([HAVE_UINTMAX_T], [1],
+      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
+  fi
+])
+m4trace:m4/visibility.m4:23: -1- AC_DEFUN([gl_VISIBILITY], [
+  AC_REQUIRE([AC_PROG_CC])
+  CFLAG_VISIBILITY=
+  HAVE_VISIBILITY=0
+  if test -n "$GCC"; then
+    dnl First, check whether -Werror can be added to the command line, or
+    dnl whether it leads to an error because of some other option that the
+    dnl user has put into $CC $CFLAGS $CPPFLAGS.
+    AC_MSG_CHECKING([whether the -Werror option is usable])
+    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -Werror"
+      AC_TRY_COMPILE([], [],
+        [gl_cv_cc_vis_werror=yes],
+        [gl_cv_cc_vis_werror=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
+    dnl Now check whether visibility declarations are supported.
+    AC_MSG_CHECKING([for simple visibility declarations])
+    AC_CACHE_VAL([gl_cv_cc_visibility], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -fvisibility=hidden"
+      dnl We use the option -Werror and a function dummyfunc, because on some
+      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+      dnl "visibility attribute not supported in this configuration; ignored"
+      dnl at the first function definition in every compilation unit, and we
+      dnl don't want to use the option in this case.
+      if test $gl_cv_cc_vis_werror = yes; then
+        CFLAGS="$CFLAGS -Werror"
+      fi
+      AC_TRY_COMPILE(
+        [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+         extern __attribute__((__visibility__("default"))) int exportedvar;
+         extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+         extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+         void dummyfunc (void) {}],
+        [],
+        [gl_cv_cc_visibility=yes],
+        [gl_cv_cc_visibility=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_visibility])
+    if test $gl_cv_cc_visibility = yes; then
+      CFLAG_VISIBILITY="-fvisibility=hidden"
+      HAVE_VISIBILITY=1
+    fi
+  fi
+  AC_SUBST([CFLAG_VISIBILITY])
+  AC_SUBST([HAVE_VISIBILITY])
+  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
+m4trace:m4/wchar_t.m4:11: -1- AC_DEFUN([gt_TYPE_WCHAR_T], [
+  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+    [AC_TRY_COMPILE([#include <stddef.h>
+       wchar_t foo = (wchar_t)'\0';], ,
+       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
+  if test $gt_cv_c_wchar_t = yes; then
+    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+  fi
+])
+m4trace:m4/wint_t.m4:11: -1- AC_DEFUN([gt_TYPE_WINT_T], [
+  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+    [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';], ,
+       [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
+  if test $gt_cv_c_wint_t = yes; then
+    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+  fi
+])
+m4trace:m4/xsize.m4:7: -1- AC_DEFUN([gl_XSIZE], [
+  dnl Prerequisites of lib/xsize.h.
+  AC_REQUIRE([gl_SIZE_MAX])
+  AC_REQUIRE([AC_C_INLINE])
+  AC_CHECK_HEADERS([stdint.h])
+])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
@@ -31,1776 +6296,873 @@
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?m4_])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^dnl$])
 m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:20: -1- AC_SUBST([SHELL])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([SHELL])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:20: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_NAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_STRING])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([PACKAGE_URL])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:20: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([exec_prefix])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:20: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([prefix])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:20: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([program_transform_name])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:20: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([bindir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:20: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([sbindir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:20: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([libexecdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([datarootdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([datadir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:20: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([sysconfdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([sharedstatedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:20: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([localstatedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:20: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^runstatedir$])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:20: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([oldincludedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:20: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
-				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
-				     ['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([docdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([infodir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:20: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([htmldir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:20: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([dvidir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:20: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([pdfdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([psdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([libdir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:20: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([localedir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:20: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([mandir])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-@%:@undef PACKAGE_NAME])
-m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-@%:@undef PACKAGE_TARNAME])
-m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-@%:@undef PACKAGE_VERSION])
-m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-@%:@undef PACKAGE_STRING])
-m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
-@%:@undef PACKAGE_URL])
-m4trace:configure.ac:20: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([DEFS])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:20: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([ECHO_C])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:20: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([ECHO_N])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:20: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([ECHO_T])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:20: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([LIBS])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:20: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([build_alias])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:20: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([host_alias])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:20: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:20: -1- AC_SUBST_TRACE([target_alias])
 m4trace:configure.ac:20: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:23: -1- AC_CONFIG_AUX_DIR([build-aux])
-m4trace:configure.ac:25: -1- AC_CONFIG_HEADERS([config.h])
-m4trace:configure.ac:33: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:33: -1- AC_CANONICAL_BUILD
-m4trace:configure.ac:33: -1- AC_REQUIRE_AUX_FILE([config.sub])
-m4trace:configure.ac:33: -1- AC_REQUIRE_AUX_FILE([config.guess])
-m4trace:configure.ac:33: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([build])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:33: -1- AC_SUBST([build_cpu], [$[1]])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([build_cpu])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:33: -1- AC_SUBST([build_vendor], [$[2]])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([build_vendor])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:33: -1- AC_SUBST([build_os])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([build_os])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:33: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([host])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:33: -1- AC_SUBST([host_cpu], [$[1]])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:33: -1- AC_SUBST([host_vendor], [$[2]])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:33: -1- AC_SUBST([host_os])
-m4trace:configure.ac:33: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.ac:33: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:40: -1- AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
-m4trace:configure.ac:40: -1- AC_SUBST([COND_W32_TRUE])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([COND_W32_TRUE])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^COND_W32_TRUE$])
-m4trace:configure.ac:40: -1- AC_SUBST([COND_W32_FALSE])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([COND_W32_FALSE])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^COND_W32_FALSE$])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([COND_W32_TRUE])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([COND_W32_FALSE])
-m4trace:configure.ac:56: -1- AC_SUBST([LN_EXEEXT])
-m4trace:configure.ac:56: -1- AC_SUBST_TRACE([LN_EXEEXT])
-m4trace:configure.ac:56: -1- m4_pattern_allow([^LN_EXEEXT$])
-m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([NDEBUG])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^NDEBUG$])
-m4trace:configure.ac:73: -1- AH_OUTPUT([NDEBUG], [/* Define to 1 to disable debugging code. */
-@%:@undef NDEBUG])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_LZMA1])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA1$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_LZMA1], [/* Define to 1 if lzma1 encoder is enabled. */
-@%:@undef HAVE_ENCODER_LZMA1])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_LZMA2])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA2$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_LZMA2], [/* Define to 1 if lzma2 encoder is enabled. */
-@%:@undef HAVE_ENCODER_LZMA2])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_DELTA])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_DELTA$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_DELTA], [/* Define to 1 if delta encoder is enabled. */
-@%:@undef HAVE_ENCODER_DELTA])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_X86])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_X86$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_X86], [/* Define to 1 if x86 encoder is enabled. */
-@%:@undef HAVE_ENCODER_X86])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_POWERPC])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_POWERPC$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_POWERPC], [/* Define to 1 if powerpc encoder is enabled. */
-@%:@undef HAVE_ENCODER_POWERPC])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_IA64])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_IA64$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_IA64], [/* Define to 1 if ia64 encoder is enabled. */
-@%:@undef HAVE_ENCODER_IA64])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_ARM])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_ARM$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_ARM], [/* Define to 1 if arm encoder is enabled. */
-@%:@undef HAVE_ENCODER_ARM])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_ARMTHUMB])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_ARMTHUMB$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_ARMTHUMB], [/* Define to 1 if armthumb encoder is enabled. */
-@%:@undef HAVE_ENCODER_ARMTHUMB])
-m4trace:configure.ac:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODER_SPARC])
-m4trace:configure.ac:105: -1- m4_pattern_allow([^HAVE_ENCODER_SPARC$])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_ENCODER_SPARC], [/* Define to 1 if sparc encoder is enabled. */
-@%:@undef HAVE_ENCODER_SPARC])
-m4trace:configure.ac:118: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENCODERS])
-m4trace:configure.ac:118: -1- m4_pattern_allow([^HAVE_ENCODERS$])
-m4trace:configure.ac:118: -1- AH_OUTPUT([HAVE_ENCODERS], [/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */
-@%:@undef HAVE_ENCODERS])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_LZMA1])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_LZMA1$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_LZMA1], [/* Define to 1 if lzma1 decoder is enabled. */
-@%:@undef HAVE_DECODER_LZMA1])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_LZMA2])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_LZMA2$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_LZMA2], [/* Define to 1 if lzma2 decoder is enabled. */
-@%:@undef HAVE_DECODER_LZMA2])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_DELTA])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_DELTA$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_DELTA], [/* Define to 1 if delta decoder is enabled. */
-@%:@undef HAVE_DECODER_DELTA])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_X86])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_X86$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_X86], [/* Define to 1 if x86 decoder is enabled. */
-@%:@undef HAVE_DECODER_X86])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_POWERPC])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_POWERPC$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_POWERPC], [/* Define to 1 if powerpc decoder is enabled. */
-@%:@undef HAVE_DECODER_POWERPC])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_IA64])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_IA64$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_IA64], [/* Define to 1 if ia64 decoder is enabled. */
-@%:@undef HAVE_DECODER_IA64])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_ARM])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_ARM$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_ARM], [/* Define to 1 if arm decoder is enabled. */
-@%:@undef HAVE_DECODER_ARM])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_ARMTHUMB])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_ARMTHUMB$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_ARMTHUMB], [/* Define to 1 if armthumb decoder is enabled. */
-@%:@undef HAVE_DECODER_ARMTHUMB])
-m4trace:configure.ac:135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODER_SPARC])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DECODER_SPARC$])
-m4trace:configure.ac:135: -1- AH_OUTPUT([HAVE_DECODER_SPARC], [/* Define to 1 if sparc decoder is enabled. */
-@%:@undef HAVE_DECODER_SPARC])
-m4trace:configure.ac:148: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECODERS])
-m4trace:configure.ac:148: -1- m4_pattern_allow([^HAVE_DECODERS$])
-m4trace:configure.ac:148: -1- AH_OUTPUT([HAVE_DECODERS], [/* Define to 1 if any of HAVE_DECODER_foo have been defined. */
-@%:@undef HAVE_DECODERS])
-m4trace:configure.ac:158: -1- AM_CONDITIONAL([COND_MAIN_ENCODER], [test "x$enable_encoders" != xno])
-m4trace:configure.ac:158: -1- AC_SUBST([COND_MAIN_ENCODER_TRUE])
-m4trace:configure.ac:158: -1- AC_SUBST_TRACE([COND_MAIN_ENCODER_TRUE])
-m4trace:configure.ac:158: -1- m4_pattern_allow([^COND_MAIN_ENCODER_TRUE$])
-m4trace:configure.ac:158: -1- AC_SUBST([COND_MAIN_ENCODER_FALSE])
-m4trace:configure.ac:158: -1- AC_SUBST_TRACE([COND_MAIN_ENCODER_FALSE])
-m4trace:configure.ac:158: -1- m4_pattern_allow([^COND_MAIN_ENCODER_FALSE$])
-m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_TRUE])
-m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_FALSE])
-m4trace:configure.ac:159: -1- AM_CONDITIONAL([COND_MAIN_DECODER], [test "x$enable_decoders" != xno])
-m4trace:configure.ac:159: -1- AC_SUBST([COND_MAIN_DECODER_TRUE])
-m4trace:configure.ac:159: -1- AC_SUBST_TRACE([COND_MAIN_DECODER_TRUE])
-m4trace:configure.ac:159: -1- m4_pattern_allow([^COND_MAIN_DECODER_TRUE$])
-m4trace:configure.ac:159: -1- AC_SUBST([COND_MAIN_DECODER_FALSE])
-m4trace:configure.ac:159: -1- AC_SUBST_TRACE([COND_MAIN_DECODER_FALSE])
-m4trace:configure.ac:159: -1- m4_pattern_allow([^COND_MAIN_DECODER_FALSE$])
-m4trace:configure.ac:159: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_TRUE])
-m4trace:configure.ac:159: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_LZMA1], [test "x$enable_filter_lzma1" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_LZMA1_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_LZMA1_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_LZMA1], [test "x$enable_encoder_lzma1" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_LZMA1], [test "x$enable_decoder_lzma1" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_LZMA1_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_LZMA1_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_LZMA2], [test "x$enable_filter_lzma2" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_LZMA2_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_LZMA2_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_LZMA2], [test "x$enable_encoder_lzma2" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_LZMA2], [test "x$enable_decoder_lzma2" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_LZMA2_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_LZMA2_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_DELTA], [test "x$enable_filter_delta" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_DELTA_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_DELTA_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_DELTA], [test "x$enable_encoder_delta" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_DELTA_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_DELTA_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_DELTA], [test "x$enable_decoder_delta" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_DELTA_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_DELTA_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_X86], [test "x$enable_filter_x86" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_X86_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_X86_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_X86_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_X86_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_X86_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_X86_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_X86], [test "x$enable_encoder_x86" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_X86_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_X86_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_X86_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_X86_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_X86_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_X86_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_X86], [test "x$enable_decoder_x86" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_X86_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_X86_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_X86_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_X86_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_X86_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_X86_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_POWERPC], [test "x$enable_filter_powerpc" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_POWERPC_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_POWERPC_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_POWERPC], [test "x$enable_encoder_powerpc" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_POWERPC], [test "x$enable_decoder_powerpc" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_POWERPC_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_POWERPC_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_IA64], [test "x$enable_filter_ia64" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_IA64_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_IA64_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_IA64_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_IA64_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_IA64_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_IA64_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_IA64], [test "x$enable_encoder_ia64" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_IA64_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_IA64_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_IA64_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_IA64_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_IA64_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_IA64_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_IA64], [test "x$enable_decoder_ia64" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_IA64_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_IA64_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_IA64_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_IA64_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_IA64_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_IA64_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_ARM], [test "x$enable_filter_arm" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_ARM_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_ARM_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_ARM_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_ARM_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_ARM_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_ARM_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_ARM], [test "x$enable_encoder_arm" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_ARM_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_ARM_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_ARM_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_ARM_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_ARM_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_ARM_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_ARM], [test "x$enable_decoder_arm" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_ARM_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_ARM_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_ARM_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_ARM_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_ARM_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_ARM_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_ARMTHUMB], [test "x$enable_filter_armthumb" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_ARMTHUMB], [test "x$enable_encoder_armthumb" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_ARMTHUMB], [test "x$enable_decoder_armthumb" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_FILTER_SPARC], [test "x$enable_filter_sparc" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_SPARC_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_FILTER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_FILTER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_FILTER_SPARC_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_ENCODER_SPARC], [test "x$enable_encoder_sparc" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_SPARC_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_ENCODER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_ENCODER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_ENCODER_SPARC_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- AM_CONDITIONAL([COND_DECODER_SPARC], [test "x$enable_decoder_sparc" = xyes])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_SPARC_TRUE$])
-m4trace:configure.ac:161: -1- AC_SUBST([COND_DECODER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- AC_SUBST_TRACE([COND_DECODER_SPARC_FALSE])
-m4trace:configure.ac:161: -1- m4_pattern_allow([^COND_DECODER_SPARC_FALSE$])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_TRUE])
-m4trace:configure.ac:161: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_FALSE])
-m4trace:configure.ac:176: -1- AM_CONDITIONAL([COND_FILTER_SIMPLE], [test "x$enable_filter_simple" = xyes])
-m4trace:configure.ac:176: -1- AC_SUBST([COND_FILTER_SIMPLE_TRUE])
-m4trace:configure.ac:176: -1- AC_SUBST_TRACE([COND_FILTER_SIMPLE_TRUE])
-m4trace:configure.ac:176: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_TRUE$])
-m4trace:configure.ac:176: -1- AC_SUBST([COND_FILTER_SIMPLE_FALSE])
-m4trace:configure.ac:176: -1- AC_SUBST_TRACE([COND_FILTER_SIMPLE_FALSE])
-m4trace:configure.ac:176: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_FALSE$])
-m4trace:configure.ac:176: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_TRUE])
-m4trace:configure.ac:176: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_FALSE])
-m4trace:configure.ac:177: -1- AM_CONDITIONAL([COND_ENCODER_SIMPLE], [test "x$enable_encoder_simple" = xyes])
-m4trace:configure.ac:177: -1- AC_SUBST([COND_ENCODER_SIMPLE_TRUE])
-m4trace:configure.ac:177: -1- AC_SUBST_TRACE([COND_ENCODER_SIMPLE_TRUE])
-m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_TRUE$])
-m4trace:configure.ac:177: -1- AC_SUBST([COND_ENCODER_SIMPLE_FALSE])
-m4trace:configure.ac:177: -1- AC_SUBST_TRACE([COND_ENCODER_SIMPLE_FALSE])
-m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_FALSE$])
-m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_TRUE])
-m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_FALSE])
-m4trace:configure.ac:178: -1- AM_CONDITIONAL([COND_DECODER_SIMPLE], [test "x$enable_decoder_simple" = xyes])
-m4trace:configure.ac:178: -1- AC_SUBST([COND_DECODER_SIMPLE_TRUE])
-m4trace:configure.ac:178: -1- AC_SUBST_TRACE([COND_DECODER_SIMPLE_TRUE])
-m4trace:configure.ac:178: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_TRUE$])
-m4trace:configure.ac:178: -1- AC_SUBST([COND_DECODER_SIMPLE_FALSE])
-m4trace:configure.ac:178: -1- AC_SUBST_TRACE([COND_DECODER_SIMPLE_FALSE])
-m4trace:configure.ac:178: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_FALSE$])
-m4trace:configure.ac:178: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_TRUE])
-m4trace:configure.ac:178: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_FALSE])
-m4trace:configure.ac:189: -1- AM_CONDITIONAL([COND_FILTER_LZ], [test "x$enable_filter_lz" = xyes])
-m4trace:configure.ac:189: -1- AC_SUBST([COND_FILTER_LZ_TRUE])
-m4trace:configure.ac:189: -1- AC_SUBST_TRACE([COND_FILTER_LZ_TRUE])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^COND_FILTER_LZ_TRUE$])
-m4trace:configure.ac:189: -1- AC_SUBST([COND_FILTER_LZ_FALSE])
-m4trace:configure.ac:189: -1- AC_SUBST_TRACE([COND_FILTER_LZ_FALSE])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^COND_FILTER_LZ_FALSE$])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_TRUE])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_FALSE])
-m4trace:configure.ac:190: -1- AM_CONDITIONAL([COND_ENCODER_LZ], [test "x$enable_encoder_lz" = xyes])
-m4trace:configure.ac:190: -1- AC_SUBST([COND_ENCODER_LZ_TRUE])
-m4trace:configure.ac:190: -1- AC_SUBST_TRACE([COND_ENCODER_LZ_TRUE])
-m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_ENCODER_LZ_TRUE$])
-m4trace:configure.ac:190: -1- AC_SUBST([COND_ENCODER_LZ_FALSE])
-m4trace:configure.ac:190: -1- AC_SUBST_TRACE([COND_ENCODER_LZ_FALSE])
-m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_ENCODER_LZ_FALSE$])
-m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_TRUE])
-m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_FALSE])
-m4trace:configure.ac:191: -1- AM_CONDITIONAL([COND_DECODER_LZ], [test "x$enable_decoder_lz" = xyes])
-m4trace:configure.ac:191: -1- AC_SUBST([COND_DECODER_LZ_TRUE])
-m4trace:configure.ac:191: -1- AC_SUBST_TRACE([COND_DECODER_LZ_TRUE])
-m4trace:configure.ac:191: -1- m4_pattern_allow([^COND_DECODER_LZ_TRUE$])
-m4trace:configure.ac:191: -1- AC_SUBST([COND_DECODER_LZ_FALSE])
-m4trace:configure.ac:191: -1- AC_SUBST_TRACE([COND_DECODER_LZ_FALSE])
-m4trace:configure.ac:191: -1- m4_pattern_allow([^COND_DECODER_LZ_FALSE$])
-m4trace:configure.ac:191: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_TRUE])
-m4trace:configure.ac:191: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_FALSE])
-m4trace:configure.ac:215: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_HC3])
-m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_MF_HC3$])
-m4trace:configure.ac:215: -1- AH_OUTPUT([HAVE_MF_HC3], [/* Define to 1 to enable hc3 match finder. */
-@%:@undef HAVE_MF_HC3])
-m4trace:configure.ac:215: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_HC4])
-m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_MF_HC4$])
-m4trace:configure.ac:215: -1- AH_OUTPUT([HAVE_MF_HC4], [/* Define to 1 to enable hc4 match finder. */
-@%:@undef HAVE_MF_HC4])
-m4trace:configure.ac:215: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_BT2])
-m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_MF_BT2$])
-m4trace:configure.ac:215: -1- AH_OUTPUT([HAVE_MF_BT2], [/* Define to 1 to enable bt2 match finder. */
-@%:@undef HAVE_MF_BT2])
-m4trace:configure.ac:215: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_BT3])
-m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_MF_BT3$])
-m4trace:configure.ac:215: -1- AH_OUTPUT([HAVE_MF_BT3], [/* Define to 1 to enable bt3 match finder. */
-@%:@undef HAVE_MF_BT3])
-m4trace:configure.ac:215: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MF_BT4])
-m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_MF_BT4$])
-m4trace:configure.ac:215: -1- AH_OUTPUT([HAVE_MF_BT4], [/* Define to 1 to enable bt4 match finder. */
-@%:@undef HAVE_MF_BT4])
-m4trace:configure.ac:255: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CHECK_CRC32])
-m4trace:configure.ac:255: -1- m4_pattern_allow([^HAVE_CHECK_CRC32$])
-m4trace:configure.ac:255: -1- AH_OUTPUT([HAVE_CHECK_CRC32], [/* Define to 1 if crc32 integrity check is enabled. */
-@%:@undef HAVE_CHECK_CRC32])
-m4trace:configure.ac:255: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CHECK_CRC64])
-m4trace:configure.ac:255: -1- m4_pattern_allow([^HAVE_CHECK_CRC64$])
-m4trace:configure.ac:255: -1- AH_OUTPUT([HAVE_CHECK_CRC64], [/* Define to 1 if crc64 integrity check is enabled. */
-@%:@undef HAVE_CHECK_CRC64])
-m4trace:configure.ac:255: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CHECK_SHA256])
-m4trace:configure.ac:255: -1- m4_pattern_allow([^HAVE_CHECK_SHA256$])
-m4trace:configure.ac:255: -1- AH_OUTPUT([HAVE_CHECK_SHA256], [/* Define to 1 if sha256 integrity check is enabled. */
-@%:@undef HAVE_CHECK_SHA256])
-m4trace:configure.ac:274: -1- AM_CONDITIONAL([COND_CHECK_CRC32], [test "x$enable_check_crc32" = xyes])
-m4trace:configure.ac:274: -1- AC_SUBST([COND_CHECK_CRC32_TRUE])
-m4trace:configure.ac:274: -1- AC_SUBST_TRACE([COND_CHECK_CRC32_TRUE])
-m4trace:configure.ac:274: -1- m4_pattern_allow([^COND_CHECK_CRC32_TRUE$])
-m4trace:configure.ac:274: -1- AC_SUBST([COND_CHECK_CRC32_FALSE])
-m4trace:configure.ac:274: -1- AC_SUBST_TRACE([COND_CHECK_CRC32_FALSE])
-m4trace:configure.ac:274: -1- m4_pattern_allow([^COND_CHECK_CRC32_FALSE$])
-m4trace:configure.ac:274: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_TRUE])
-m4trace:configure.ac:274: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_FALSE])
-m4trace:configure.ac:274: -1- AM_CONDITIONAL([COND_CHECK_CRC64], [test "x$enable_check_crc64" = xyes])
-m4trace:configure.ac:274: -1- AC_SUBST([COND_CHECK_CRC64_TRUE])
-m4trace:configure.ac:274: -1- AC_SUBST_TRACE([COND_CHECK_CRC64_TRUE])
-m4trace:configure.ac:274: -1- m4_pattern_allow([^COND_CHECK_CRC64_TRUE$])
-m4trace:configure.ac:274: -1- AC_SUBST([COND_CHECK_CRC64_FALSE])
-m4trace:configure.ac:274: -1- AC_SUBST_TRACE([COND_CHECK_CRC64_FALSE])
-m4trace:configure.ac:274: -1- m4_pattern_allow([^COND_CHECK_CRC64_FALSE$])
-m4trace:configure.ac:274: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_TRUE])
-m4trace:configure.ac:274: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_FALSE])
-m4trace:configure.ac:274: -1- AM_CONDITIONAL([COND_CHECK_SHA256], [test "x$enable_check_sha256" = xyes])
-m4trace:configure.ac:274: -1- AC_SUBST([COND_CHECK_SHA256_TRUE])
-m4trace:configure.ac:274: -1- AC_SUBST_TRACE([COND_CHECK_SHA256_TRUE])
-m4trace:configure.ac:274: -1- m4_pattern_allow([^COND_CHECK_SHA256_TRUE$])
-m4trace:configure.ac:274: -1- AC_SUBST([COND_CHECK_SHA256_FALSE])
-m4trace:configure.ac:274: -1- AC_SUBST_TRACE([COND_CHECK_SHA256_FALSE])
-m4trace:configure.ac:274: -1- m4_pattern_allow([^COND_CHECK_SHA256_FALSE$])
-m4trace:configure.ac:274: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_TRUE])
-m4trace:configure.ac:274: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_FALSE])
-m4trace:configure.ac:324: -1- AM_CONDITIONAL([COND_ASM_X86], [test "x$enable_assembler" = xx86])
-m4trace:configure.ac:324: -1- AC_SUBST([COND_ASM_X86_TRUE])
-m4trace:configure.ac:324: -1- AC_SUBST_TRACE([COND_ASM_X86_TRUE])
-m4trace:configure.ac:324: -1- m4_pattern_allow([^COND_ASM_X86_TRUE$])
-m4trace:configure.ac:324: -1- AC_SUBST([COND_ASM_X86_FALSE])
-m4trace:configure.ac:324: -1- AC_SUBST_TRACE([COND_ASM_X86_FALSE])
-m4trace:configure.ac:324: -1- m4_pattern_allow([^COND_ASM_X86_FALSE$])
-m4trace:configure.ac:324: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_TRUE])
-m4trace:configure.ac:324: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_FALSE])
-m4trace:configure.ac:325: -1- AM_CONDITIONAL([COND_ASM_X86_64], [test "x$enable_assembler" = xx86_64])
-m4trace:configure.ac:325: -1- AC_SUBST([COND_ASM_X86_64_TRUE])
-m4trace:configure.ac:325: -1- AC_SUBST_TRACE([COND_ASM_X86_64_TRUE])
-m4trace:configure.ac:325: -1- m4_pattern_allow([^COND_ASM_X86_64_TRUE$])
-m4trace:configure.ac:325: -1- AC_SUBST([COND_ASM_X86_64_FALSE])
-m4trace:configure.ac:325: -1- AC_SUBST_TRACE([COND_ASM_X86_64_FALSE])
-m4trace:configure.ac:325: -1- m4_pattern_allow([^COND_ASM_X86_64_FALSE$])
-m4trace:configure.ac:325: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_TRUE])
-m4trace:configure.ac:325: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_FALSE])
-m4trace:configure.ac:338: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SMALL])
-m4trace:configure.ac:338: -1- m4_pattern_allow([^HAVE_SMALL$])
-m4trace:configure.ac:338: -1- AH_OUTPUT([HAVE_SMALL], [/* Define to 1 if optimizing for size. */
-@%:@undef HAVE_SMALL])
-m4trace:configure.ac:344: -1- AM_CONDITIONAL([COND_SMALL], [test "x$enable_small" = xyes])
-m4trace:configure.ac:344: -1- AC_SUBST([COND_SMALL_TRUE])
-m4trace:configure.ac:344: -1- AC_SUBST_TRACE([COND_SMALL_TRUE])
-m4trace:configure.ac:344: -1- m4_pattern_allow([^COND_SMALL_TRUE$])
-m4trace:configure.ac:344: -1- AC_SUBST([COND_SMALL_FALSE])
-m4trace:configure.ac:344: -1- AC_SUBST_TRACE([COND_SMALL_FALSE])
-m4trace:configure.ac:344: -1- m4_pattern_allow([^COND_SMALL_FALSE$])
-m4trace:configure.ac:344: -1- _AM_SUBST_NOTMAKE([COND_SMALL_TRUE])
-m4trace:configure.ac:344: -1- _AM_SUBST_NOTMAKE([COND_SMALL_FALSE])
-m4trace:configure.ac:416: -1- AC_DEFINE_TRACE_LITERAL([ASSUME_RAM])
-m4trace:configure.ac:416: -1- m4_pattern_allow([^ASSUME_RAM$])
-m4trace:configure.ac:416: -1- AH_OUTPUT([ASSUME_RAM], [/* How many MiB of RAM to assume if the real amount cannot be determined. */
-@%:@undef ASSUME_RAM])
-m4trace:configure.ac:428: -1- AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
-m4trace:configure.ac:428: -1- AC_SUBST([COND_XZ_TRUE])
-m4trace:configure.ac:428: -1- AC_SUBST_TRACE([COND_XZ_TRUE])
-m4trace:configure.ac:428: -1- m4_pattern_allow([^COND_XZ_TRUE$])
-m4trace:configure.ac:428: -1- AC_SUBST([COND_XZ_FALSE])
-m4trace:configure.ac:428: -1- AC_SUBST_TRACE([COND_XZ_FALSE])
-m4trace:configure.ac:428: -1- m4_pattern_allow([^COND_XZ_FALSE$])
-m4trace:configure.ac:428: -1- _AM_SUBST_NOTMAKE([COND_XZ_TRUE])
-m4trace:configure.ac:428: -1- _AM_SUBST_NOTMAKE([COND_XZ_FALSE])
-m4trace:configure.ac:434: -1- AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
-m4trace:configure.ac:434: -1- AC_SUBST([COND_XZDEC_TRUE])
-m4trace:configure.ac:434: -1- AC_SUBST_TRACE([COND_XZDEC_TRUE])
-m4trace:configure.ac:434: -1- m4_pattern_allow([^COND_XZDEC_TRUE$])
-m4trace:configure.ac:434: -1- AC_SUBST([COND_XZDEC_FALSE])
-m4trace:configure.ac:434: -1- AC_SUBST_TRACE([COND_XZDEC_FALSE])
-m4trace:configure.ac:434: -1- m4_pattern_allow([^COND_XZDEC_FALSE$])
-m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_TRUE])
-m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_FALSE])
-m4trace:configure.ac:441: -1- AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
-m4trace:configure.ac:441: -1- AC_SUBST([COND_LZMADEC_TRUE])
-m4trace:configure.ac:441: -1- AC_SUBST_TRACE([COND_LZMADEC_TRUE])
-m4trace:configure.ac:441: -1- m4_pattern_allow([^COND_LZMADEC_TRUE$])
-m4trace:configure.ac:441: -1- AC_SUBST([COND_LZMADEC_FALSE])
-m4trace:configure.ac:441: -1- AC_SUBST_TRACE([COND_LZMADEC_FALSE])
-m4trace:configure.ac:441: -1- m4_pattern_allow([^COND_LZMADEC_FALSE$])
-m4trace:configure.ac:441: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_TRUE])
-m4trace:configure.ac:441: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_FALSE])
-m4trace:configure.ac:448: -1- AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
-m4trace:configure.ac:448: -1- AC_SUBST([COND_LZMAINFO_TRUE])
-m4trace:configure.ac:448: -1- AC_SUBST_TRACE([COND_LZMAINFO_TRUE])
-m4trace:configure.ac:448: -1- m4_pattern_allow([^COND_LZMAINFO_TRUE$])
-m4trace:configure.ac:448: -1- AC_SUBST([COND_LZMAINFO_FALSE])
-m4trace:configure.ac:448: -1- AC_SUBST_TRACE([COND_LZMAINFO_FALSE])
-m4trace:configure.ac:448: -1- m4_pattern_allow([^COND_LZMAINFO_FALSE$])
-m4trace:configure.ac:448: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_TRUE])
-m4trace:configure.ac:448: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_FALSE])
-m4trace:configure.ac:453: -1- AM_CONDITIONAL([COND_LZMALINKS], [test x$enable_lzma_links != xno])
-m4trace:configure.ac:453: -1- AC_SUBST([COND_LZMALINKS_TRUE])
-m4trace:configure.ac:453: -1- AC_SUBST_TRACE([COND_LZMALINKS_TRUE])
-m4trace:configure.ac:453: -1- m4_pattern_allow([^COND_LZMALINKS_TRUE$])
-m4trace:configure.ac:453: -1- AC_SUBST([COND_LZMALINKS_FALSE])
-m4trace:configure.ac:453: -1- AC_SUBST_TRACE([COND_LZMALINKS_FALSE])
-m4trace:configure.ac:453: -1- m4_pattern_allow([^COND_LZMALINKS_FALSE$])
-m4trace:configure.ac:453: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_TRUE])
-m4trace:configure.ac:453: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_FALSE])
-m4trace:configure.ac:459: -1- AM_CONDITIONAL([COND_SCRIPTS], [test x$enable_scripts != xno])
-m4trace:configure.ac:459: -1- AC_SUBST([COND_SCRIPTS_TRUE])
-m4trace:configure.ac:459: -1- AC_SUBST_TRACE([COND_SCRIPTS_TRUE])
-m4trace:configure.ac:459: -1- m4_pattern_allow([^COND_SCRIPTS_TRUE$])
-m4trace:configure.ac:459: -1- AC_SUBST([COND_SCRIPTS_FALSE])
-m4trace:configure.ac:459: -1- AC_SUBST_TRACE([COND_SCRIPTS_FALSE])
-m4trace:configure.ac:459: -1- m4_pattern_allow([^COND_SCRIPTS_FALSE$])
-m4trace:configure.ac:459: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_TRUE])
-m4trace:configure.ac:459: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_FALSE])
-m4trace:configure.ac:465: -1- AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
-m4trace:configure.ac:465: -1- AC_SUBST([COND_DOC_TRUE])
-m4trace:configure.ac:465: -1- AC_SUBST_TRACE([COND_DOC_TRUE])
-m4trace:configure.ac:465: -1- m4_pattern_allow([^COND_DOC_TRUE$])
-m4trace:configure.ac:465: -1- AC_SUBST([COND_DOC_FALSE])
-m4trace:configure.ac:465: -1- AC_SUBST_TRACE([COND_DOC_FALSE])
-m4trace:configure.ac:465: -1- m4_pattern_allow([^COND_DOC_FALSE$])
-m4trace:configure.ac:465: -1- _AM_SUBST_NOTMAKE([COND_DOC_TRUE])
-m4trace:configure.ac:465: -1- _AM_SUBST_NOTMAKE([COND_DOC_FALSE])
-m4trace:configure.ac:492: -1- AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
-m4trace:configure.ac:492: -1- AC_SUBST([COND_SYMVERS_TRUE])
-m4trace:configure.ac:492: -1- AC_SUBST_TRACE([COND_SYMVERS_TRUE])
-m4trace:configure.ac:492: -1- m4_pattern_allow([^COND_SYMVERS_TRUE$])
-m4trace:configure.ac:492: -1- AC_SUBST([COND_SYMVERS_FALSE])
-m4trace:configure.ac:492: -1- AC_SUBST_TRACE([COND_SYMVERS_FALSE])
-m4trace:configure.ac:492: -1- m4_pattern_allow([^COND_SYMVERS_FALSE$])
-m4trace:configure.ac:492: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_TRUE])
-m4trace:configure.ac:492: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_FALSE])
-m4trace:configure.ac:524: -1- AC_SUBST([POSIX_SHELL])
-m4trace:configure.ac:524: -1- AC_SUBST_TRACE([POSIX_SHELL])
-m4trace:configure.ac:524: -1- m4_pattern_allow([^POSIX_SHELL$])
-m4trace:configure.ac:524: -1- AC_SUBST([PREFERABLY_POSIX_SHELL])
-m4trace:configure.ac:524: -1- AC_SUBST_TRACE([PREFERABLY_POSIX_SHELL])
-m4trace:configure.ac:524: -1- m4_pattern_allow([^PREFERABLY_POSIX_SHELL$])
-m4trace:configure.ac:537: -1- AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:537: -1- AM_AUTOMAKE_VERSION([1.14.1])
-m4trace:configure.ac:537: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:537: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:537: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:537: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:537: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([am__isrc])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:537: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:537: -1- AC_SUBST([CYGPATH_W])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([CYGPATH_W])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:537: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([PACKAGE])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:537: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([VERSION])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:537: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:537: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
-@%:@undef PACKAGE])
-m4trace:configure.ac:537: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:537: -1- AH_OUTPUT([VERSION], [/* Version number of package */
-@%:@undef VERSION])
-m4trace:configure.ac:537: -1- AC_REQUIRE_AUX_FILE([missing])
-m4trace:configure.ac:537: -1- AC_SUBST([ACLOCAL])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([ACLOCAL])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:537: -1- AC_SUBST([AUTOCONF])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AUTOCONF])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:537: -1- AC_SUBST([AUTOMAKE])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AUTOMAKE])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:537: -1- AC_SUBST([AUTOHEADER])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AUTOHEADER])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:537: -1- AC_SUBST([MAKEINFO])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([MAKEINFO])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:537: -1- AC_SUBST([install_sh])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([install_sh])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:537: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:537: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:537: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:537: -1- AC_SUBST([MKDIR_P])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:537: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([mkdir_p])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:537: -1- AC_SUBST([AWK])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AWK])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:537: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:537: -1- AC_SUBST([am__leading_dot])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([am__leading_dot])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:537: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AMTAR])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:537: -1- AC_SUBST([am__tar])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([am__tar])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:537: -1- AC_SUBST([am__untar])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([am__untar])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:537: -1- AM_SILENT_RULES
-m4trace:configure.ac:537: -1- AC_SUBST([AM_V])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AM_V])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AM_V$])
-m4trace:configure.ac:537: -1- _AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:537: -1- AC_SUBST([AM_DEFAULT_V])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AM_DEFAULT_V$])
-m4trace:configure.ac:537: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:537: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
-m4trace:configure.ac:537: -1- AC_SUBST([AM_BACKSLASH])
-m4trace:configure.ac:537: -1- AC_SUBST_TRACE([AM_BACKSLASH])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^AM_BACKSLASH$])
-m4trace:configure.ac:537: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
-m4trace:configure.ac:538: -1- AC_SUBST([LN_S], [$as_ln_s])
-m4trace:configure.ac:538: -1- AC_SUBST_TRACE([LN_S])
-m4trace:configure.ac:538: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:540: -1- AC_SUBST([CC])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:540: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:540: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:540: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:540: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:540: -1- AC_SUBST([CC])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:540: -1- AC_SUBST([CC])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:540: -1- AC_SUBST([CC])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:540: -1- AC_SUBST([CC])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:540: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:540: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:540: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:540: -1- AC_REQUIRE_AUX_FILE([compile])
-m4trace:configure.ac:540: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([DEPDIR])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:540: -1- AC_SUBST([am__include])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([am__include])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:540: -1- AC_SUBST([am__quote])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([am__quote])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:540: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:540: -1- AC_SUBST([AMDEP_TRUE])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([AMDEP_TRUE])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:540: -1- AC_SUBST([AMDEP_FALSE])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([AMDEP_FALSE])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:540: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:540: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:540: -1- AC_SUBST([AMDEPBACKSLASH])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:540: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:540: -1- AC_SUBST([am__nodep])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([am__nodep])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:540: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:540: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([CCDEPMODE])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:540: -1- AM_CONDITIONAL([am__fastdepCC], [
+m4trace:configure.ac:24: -1- AC_CONFIG_MACRO_DIR([m4])
+m4trace:configure.ac:26: -1- AM_MAINTAINER_MODE
+m4trace:configure.ac:26: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:34: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:41: -1- AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
+m4trace:configure.ac:41: -1- m4_pattern_allow([^COND_W32_TRUE$])
+m4trace:configure.ac:41: -1- m4_pattern_allow([^COND_W32_FALSE$])
+m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([COND_W32_TRUE])
+m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([COND_W32_FALSE])
+m4trace:configure.ac:57: -1- m4_pattern_allow([^LN_EXEEXT$])
+m4trace:configure.ac:74: -1- m4_pattern_allow([^NDEBUG$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA1$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_LZMA2$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_DELTA$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_X86$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_POWERPC$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_IA64$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_ARM$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_ARMTHUMB$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_ENCODER_SPARC$])
+m4trace:configure.ac:119: -1- m4_pattern_allow([^HAVE_ENCODERS$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_LZMA1$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_LZMA2$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_DELTA$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_X86$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_POWERPC$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_IA64$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_ARM$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_ARMTHUMB$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_DECODER_SPARC$])
+m4trace:configure.ac:149: -1- m4_pattern_allow([^HAVE_DECODERS$])
+m4trace:configure.ac:159: -1- AM_CONDITIONAL([COND_MAIN_ENCODER], [test "x$enable_encoders" != xno])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^COND_MAIN_ENCODER_TRUE$])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^COND_MAIN_ENCODER_FALSE$])
+m4trace:configure.ac:159: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_TRUE])
+m4trace:configure.ac:159: -1- _AM_SUBST_NOTMAKE([COND_MAIN_ENCODER_FALSE])
+m4trace:configure.ac:160: -1- AM_CONDITIONAL([COND_MAIN_DECODER], [test "x$enable_decoders" != xno])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_MAIN_DECODER_TRUE$])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^COND_MAIN_DECODER_FALSE$])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_TRUE])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([COND_MAIN_DECODER_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_LZMA1], [test "x$enable_filter_lzma1" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA1_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA1_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_LZMA1], [test "x$enable_encoder_lzma1" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA1_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_LZMA1], [test "x$enable_decoder_lzma1" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA1_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA1_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA1_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_LZMA2], [test "x$enable_filter_lzma2" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA2_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_LZMA2_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_LZMA2], [test "x$enable_encoder_lzma2" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_LZMA2_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_LZMA2], [test "x$enable_decoder_lzma2" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA2_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_LZMA2_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZMA2_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_DELTA], [test "x$enable_filter_delta" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_DELTA_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_DELTA_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_DELTA], [test "x$enable_encoder_delta" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_DELTA_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_DELTA_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_DELTA], [test "x$enable_decoder_delta" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_DELTA_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_DELTA_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_DELTA_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_X86], [test "x$enable_filter_x86" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_X86_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_X86_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_X86_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_X86], [test "x$enable_encoder_x86" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_X86_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_X86_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_X86_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_X86], [test "x$enable_decoder_x86" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_X86_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_X86_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_X86_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_POWERPC], [test "x$enable_filter_powerpc" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_POWERPC_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_POWERPC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_POWERPC], [test "x$enable_encoder_powerpc" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_POWERPC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_POWERPC], [test "x$enable_decoder_powerpc" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_POWERPC_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_POWERPC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_POWERPC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_IA64], [test "x$enable_filter_ia64" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_IA64_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_IA64_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_IA64], [test "x$enable_encoder_ia64" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_IA64_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_IA64_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_IA64], [test "x$enable_decoder_ia64" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_IA64_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_IA64_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_IA64_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_ARM], [test "x$enable_filter_arm" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARM_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARM_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_ARM], [test "x$enable_encoder_arm" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARM_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARM_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_ARM], [test "x$enable_decoder_arm" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARM_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARM_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARM_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_ARMTHUMB], [test "x$enable_filter_armthumb" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_ARMTHUMB_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_ARMTHUMB], [test "x$enable_encoder_armthumb" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_ARMTHUMB_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_ARMTHUMB], [test "x$enable_decoder_armthumb" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_ARMTHUMB_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_ARMTHUMB_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_FILTER_SPARC], [test "x$enable_filter_sparc" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_SPARC_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_FILTER_SPARC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_ENCODER_SPARC], [test "x$enable_encoder_sparc" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_SPARC_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_ENCODER_SPARC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SPARC_FALSE])
+m4trace:configure.ac:162: -1- AM_CONDITIONAL([COND_DECODER_SPARC], [test "x$enable_decoder_sparc" = xyes])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_SPARC_TRUE$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^COND_DECODER_SPARC_FALSE$])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_TRUE])
+m4trace:configure.ac:162: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SPARC_FALSE])
+m4trace:configure.ac:177: -1- AM_CONDITIONAL([COND_FILTER_SIMPLE], [test "x$enable_filter_simple" = xyes])
+m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_TRUE$])
+m4trace:configure.ac:177: -1- m4_pattern_allow([^COND_FILTER_SIMPLE_FALSE$])
+m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_TRUE])
+m4trace:configure.ac:177: -1- _AM_SUBST_NOTMAKE([COND_FILTER_SIMPLE_FALSE])
+m4trace:configure.ac:178: -1- AM_CONDITIONAL([COND_ENCODER_SIMPLE], [test "x$enable_encoder_simple" = xyes])
+m4trace:configure.ac:178: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_TRUE$])
+m4trace:configure.ac:178: -1- m4_pattern_allow([^COND_ENCODER_SIMPLE_FALSE$])
+m4trace:configure.ac:178: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_TRUE])
+m4trace:configure.ac:178: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_SIMPLE_FALSE])
+m4trace:configure.ac:179: -1- AM_CONDITIONAL([COND_DECODER_SIMPLE], [test "x$enable_decoder_simple" = xyes])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_TRUE$])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^COND_DECODER_SIMPLE_FALSE$])
+m4trace:configure.ac:179: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_TRUE])
+m4trace:configure.ac:179: -1- _AM_SUBST_NOTMAKE([COND_DECODER_SIMPLE_FALSE])
+m4trace:configure.ac:190: -1- AM_CONDITIONAL([COND_FILTER_LZ], [test "x$enable_filter_lz" = xyes])
+m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_FILTER_LZ_TRUE$])
+m4trace:configure.ac:190: -1- m4_pattern_allow([^COND_FILTER_LZ_FALSE$])
+m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_TRUE])
+m4trace:configure.ac:190: -1- _AM_SUBST_NOTMAKE([COND_FILTER_LZ_FALSE])
+m4trace:configure.ac:191: -1- AM_CONDITIONAL([COND_ENCODER_LZ], [test "x$enable_encoder_lz" = xyes])
+m4trace:configure.ac:191: -1- m4_pattern_allow([^COND_ENCODER_LZ_TRUE$])
+m4trace:configure.ac:191: -1- m4_pattern_allow([^COND_ENCODER_LZ_FALSE$])
+m4trace:configure.ac:191: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_TRUE])
+m4trace:configure.ac:191: -1- _AM_SUBST_NOTMAKE([COND_ENCODER_LZ_FALSE])
+m4trace:configure.ac:192: -1- AM_CONDITIONAL([COND_DECODER_LZ], [test "x$enable_decoder_lz" = xyes])
+m4trace:configure.ac:192: -1- m4_pattern_allow([^COND_DECODER_LZ_TRUE$])
+m4trace:configure.ac:192: -1- m4_pattern_allow([^COND_DECODER_LZ_FALSE$])
+m4trace:configure.ac:192: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_TRUE])
+m4trace:configure.ac:192: -1- _AM_SUBST_NOTMAKE([COND_DECODER_LZ_FALSE])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_HC3$])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_HC4$])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_BT2$])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_BT3$])
+m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MF_BT4$])
+m4trace:configure.ac:256: -1- m4_pattern_allow([^HAVE_CHECK_CRC32$])
+m4trace:configure.ac:256: -1- m4_pattern_allow([^HAVE_CHECK_CRC64$])
+m4trace:configure.ac:256: -1- m4_pattern_allow([^HAVE_CHECK_SHA256$])
+m4trace:configure.ac:275: -1- AM_CONDITIONAL([COND_CHECK_CRC32], [test "x$enable_check_crc32" = xyes])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC32_TRUE$])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC32_FALSE$])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_TRUE])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC32_FALSE])
+m4trace:configure.ac:275: -1- AM_CONDITIONAL([COND_CHECK_CRC64], [test "x$enable_check_crc64" = xyes])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC64_TRUE$])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_CRC64_FALSE$])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_TRUE])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_CRC64_FALSE])
+m4trace:configure.ac:275: -1- AM_CONDITIONAL([COND_CHECK_SHA256], [test "x$enable_check_sha256" = xyes])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_SHA256_TRUE$])
+m4trace:configure.ac:275: -1- m4_pattern_allow([^COND_CHECK_SHA256_FALSE$])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_TRUE])
+m4trace:configure.ac:275: -1- _AM_SUBST_NOTMAKE([COND_CHECK_SHA256_FALSE])
+m4trace:configure.ac:325: -1- AM_CONDITIONAL([COND_ASM_X86], [test "x$enable_assembler" = xx86])
+m4trace:configure.ac:325: -1- m4_pattern_allow([^COND_ASM_X86_TRUE$])
+m4trace:configure.ac:325: -1- m4_pattern_allow([^COND_ASM_X86_FALSE$])
+m4trace:configure.ac:325: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_TRUE])
+m4trace:configure.ac:325: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_FALSE])
+m4trace:configure.ac:326: -1- AM_CONDITIONAL([COND_ASM_X86_64], [test "x$enable_assembler" = xx86_64])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^COND_ASM_X86_64_TRUE$])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^COND_ASM_X86_64_FALSE$])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_TRUE])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([COND_ASM_X86_64_FALSE])
+m4trace:configure.ac:339: -1- m4_pattern_allow([^HAVE_SMALL$])
+m4trace:configure.ac:345: -1- AM_CONDITIONAL([COND_SMALL], [test "x$enable_small" = xyes])
+m4trace:configure.ac:345: -1- m4_pattern_allow([^COND_SMALL_TRUE$])
+m4trace:configure.ac:345: -1- m4_pattern_allow([^COND_SMALL_FALSE$])
+m4trace:configure.ac:345: -1- _AM_SUBST_NOTMAKE([COND_SMALL_TRUE])
+m4trace:configure.ac:345: -1- _AM_SUBST_NOTMAKE([COND_SMALL_FALSE])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^ASSUME_RAM$])
+m4trace:configure.ac:429: -1- AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
+m4trace:configure.ac:429: -1- m4_pattern_allow([^COND_XZ_TRUE$])
+m4trace:configure.ac:429: -1- m4_pattern_allow([^COND_XZ_FALSE$])
+m4trace:configure.ac:429: -1- _AM_SUBST_NOTMAKE([COND_XZ_TRUE])
+m4trace:configure.ac:429: -1- _AM_SUBST_NOTMAKE([COND_XZ_FALSE])
+m4trace:configure.ac:435: -1- AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
+m4trace:configure.ac:435: -1- m4_pattern_allow([^COND_XZDEC_TRUE$])
+m4trace:configure.ac:435: -1- m4_pattern_allow([^COND_XZDEC_FALSE$])
+m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_TRUE])
+m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([COND_XZDEC_FALSE])
+m4trace:configure.ac:442: -1- AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
+m4trace:configure.ac:442: -1- m4_pattern_allow([^COND_LZMADEC_TRUE$])
+m4trace:configure.ac:442: -1- m4_pattern_allow([^COND_LZMADEC_FALSE$])
+m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_TRUE])
+m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([COND_LZMADEC_FALSE])
+m4trace:configure.ac:449: -1- AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
+m4trace:configure.ac:449: -1- m4_pattern_allow([^COND_LZMAINFO_TRUE$])
+m4trace:configure.ac:449: -1- m4_pattern_allow([^COND_LZMAINFO_FALSE$])
+m4trace:configure.ac:449: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_TRUE])
+m4trace:configure.ac:449: -1- _AM_SUBST_NOTMAKE([COND_LZMAINFO_FALSE])
+m4trace:configure.ac:454: -1- AM_CONDITIONAL([COND_LZMALINKS], [test x$enable_lzma_links != xno])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^COND_LZMALINKS_TRUE$])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^COND_LZMALINKS_FALSE$])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_TRUE])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([COND_LZMALINKS_FALSE])
+m4trace:configure.ac:460: -1- AM_CONDITIONAL([COND_SCRIPTS], [test x$enable_scripts != xno])
+m4trace:configure.ac:460: -1- m4_pattern_allow([^COND_SCRIPTS_TRUE$])
+m4trace:configure.ac:460: -1- m4_pattern_allow([^COND_SCRIPTS_FALSE$])
+m4trace:configure.ac:460: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_TRUE])
+m4trace:configure.ac:460: -1- _AM_SUBST_NOTMAKE([COND_SCRIPTS_FALSE])
+m4trace:configure.ac:466: -1- AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
+m4trace:configure.ac:466: -1- m4_pattern_allow([^COND_DOC_TRUE$])
+m4trace:configure.ac:466: -1- m4_pattern_allow([^COND_DOC_FALSE$])
+m4trace:configure.ac:466: -1- _AM_SUBST_NOTMAKE([COND_DOC_TRUE])
+m4trace:configure.ac:466: -1- _AM_SUBST_NOTMAKE([COND_DOC_FALSE])
+m4trace:configure.ac:493: -1- AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
+m4trace:configure.ac:493: -1- m4_pattern_allow([^COND_SYMVERS_TRUE$])
+m4trace:configure.ac:493: -1- m4_pattern_allow([^COND_SYMVERS_FALSE$])
+m4trace:configure.ac:493: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_TRUE])
+m4trace:configure.ac:493: -1- _AM_SUBST_NOTMAKE([COND_SYMVERS_FALSE])
+m4trace:configure.ac:525: -1- gl_POSIX_SHELL
+m4trace:configure.ac:525: -1- m4_pattern_allow([^POSIX_SHELL$])
+m4trace:configure.ac:525: -1- m4_pattern_allow([^PREFERABLY_POSIX_SHELL$])
+m4trace:configure.ac:538: -1- AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:538: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.ac:538: -1- AM_AUTOMAKE_VERSION([1.16.1])
+m4trace:configure.ac:538: -1- _AM_AUTOCONF_VERSION([2.69])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:538: -1- _AM_SET_OPTIONS([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
+m4trace:configure.ac:538: -1- _AM_SET_OPTION([1.12])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([1.12])
+m4trace:configure.ac:538: -1- _AM_SET_OPTION([foreign])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([foreign])
+m4trace:configure.ac:538: -1- _AM_SET_OPTION([tar-v7])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([tar-v7])
+m4trace:configure.ac:538: -1- _AM_SET_OPTION([filename-length-max=99])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([filename-length-max=99])
+m4trace:configure.ac:538: -1- _AM_SET_OPTION([serial-tests])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([serial-tests])
+m4trace:configure.ac:538: -1- _AM_SET_OPTION([-Wno-unsupported])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([-Wno-unsupported])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:538: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:538: -1- AM_SANITY_CHECK
+m4trace:configure.ac:538: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.ac:538: -1- AM_MISSING_HAS_RUN
+m4trace:configure.ac:538: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.ac:538: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:538: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:538: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:538: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:538: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:538: -1- AM_PROG_INSTALL_SH
+m4trace:configure.ac:538: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:538: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.ac:538: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:538: -1- AM_SET_LEADING_DOT
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:538: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.ac:538: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.ac:538: -1- _AM_PROG_TAR([v7])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:538: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+m4trace:configure.ac:538: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:538: -1- AM_SILENT_RULES
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:538: -1- AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:538: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:538: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:539: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:541: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:541: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:541: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:541: -1- AM_SET_DEPDIR
+m4trace:configure.ac:541: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:541: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:541: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:541: -1- AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:541: -1- AM_DEP_TRACK
+m4trace:configure.ac:541: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:541: -1- AM_CONDITIONAL([am__fastdepCC], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:540: -1- AC_SUBST([am__fastdepCC_TRUE])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:540: -1- AC_SUBST([am__fastdepCC_FALSE])
-m4trace:configure.ac:540: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
-m4trace:configure.ac:540: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:540: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:540: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:545: -1- AM_PROG_CC_C_O
-m4trace:configure.ac:546: -1- AC_SUBST([CCAS])
-m4trace:configure.ac:546: -1- AC_SUBST_TRACE([CCAS])
-m4trace:configure.ac:546: -1- m4_pattern_allow([^CCAS$])
-m4trace:configure.ac:546: -1- AC_SUBST([CCASFLAGS])
-m4trace:configure.ac:546: -1- AC_SUBST_TRACE([CCASFLAGS])
-m4trace:configure.ac:546: -1- m4_pattern_allow([^CCASFLAGS$])
-m4trace:configure.ac:546: -1- AC_SUBST([CCASDEPMODE], [depmode=$am_cv_CCAS_dependencies_compiler_type])
-m4trace:configure.ac:546: -1- AC_SUBST_TRACE([CCASDEPMODE])
-m4trace:configure.ac:546: -1- m4_pattern_allow([^CCASDEPMODE$])
-m4trace:configure.ac:546: -1- AM_CONDITIONAL([am__fastdepCCAS], [
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:541: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:541: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:546: -1- AM_PROG_CC_C_O
+m4trace:configure.ac:547: -1- AM_PROG_AS
+m4trace:configure.ac:547: -1- m4_pattern_allow([^CCAS$])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^CCASFLAGS$])
+m4trace:configure.ac:547: -1- _AM_IF_OPTION([no-dependencies], [], [_AM_DEPENDENCIES([CCAS])])
+m4trace:configure.ac:547: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:547: -1- _AM_DEPENDENCIES([CCAS])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^CCASDEPMODE$])
+m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__fastdepCCAS], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:546: -1- AC_SUBST([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:546: -1- AC_SUBST_TRACE([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:546: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
-m4trace:configure.ac:546: -1- AC_SUBST([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:546: -1- AC_SUBST_TRACE([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:546: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
-m4trace:configure.ac:546: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:546: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:547: -1- AC_SUBST([CPP])
-m4trace:configure.ac:547: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:547: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:547: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:547: -1- AC_SUBST([CPP])
-m4trace:configure.ac:547: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:547: -1- AC_SUBST([GREP])
-m4trace:configure.ac:547: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:547: -1- AC_SUBST([EGREP])
-m4trace:configure.ac:547: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:547: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-@%:@undef HAVE_MEMORY_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-@%:@undef HAVE_STRINGS_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-@%:@undef HAVE_STDINT_H])
-m4trace:configure.ac:547: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_POSIX_SOURCE$])
-m4trace:configure.ac:547: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
-@%:@undef _POSIX_SOURCE])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
-m4trace:configure.ac:547: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-@%:@undef _POSIX_1_SOURCE])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_MINIX$])
-m4trace:configure.ac:547: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
-@%:@undef _MINIX])
-m4trace:configure.ac:547: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^__EXTENSIONS__$])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_ALL_SOURCE$])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_GNU_SOURCE$])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
-m4trace:configure.ac:547: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE])
-m4trace:configure.ac:547: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
-m4trace:configure.ac:553: -1- AC_SUBST([ax_pthread_config])
-m4trace:configure.ac:553: -1- AC_SUBST_TRACE([ax_pthread_config])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^ax_pthread_config$])
-m4trace:configure.ac:553: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_CREATE_JOINABLE])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^PTHREAD_CREATE_JOINABLE$])
-m4trace:configure.ac:553: -1- AH_OUTPUT([PTHREAD_CREATE_JOINABLE], [/* Define to necessary symbol if this constant uses a non-standard name on
-   your system. */
-@%:@undef PTHREAD_CREATE_JOINABLE])
-m4trace:configure.ac:553: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTHREAD_PRIO_INHERIT])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^HAVE_PTHREAD_PRIO_INHERIT$])
-m4trace:configure.ac:553: -1- AH_OUTPUT([HAVE_PTHREAD_PRIO_INHERIT], [/* Have PTHREAD_PRIO_INHERIT. */
-@%:@undef HAVE_PTHREAD_PRIO_INHERIT])
-m4trace:configure.ac:553: -1- AC_SUBST([PTHREAD_CC])
-m4trace:configure.ac:553: -1- AC_SUBST_TRACE([PTHREAD_CC])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^PTHREAD_CC$])
-m4trace:configure.ac:553: -1- AC_SUBST([PTHREAD_LIBS])
-m4trace:configure.ac:553: -1- AC_SUBST_TRACE([PTHREAD_LIBS])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^PTHREAD_LIBS$])
-m4trace:configure.ac:553: -1- AC_SUBST([PTHREAD_CFLAGS])
-m4trace:configure.ac:553: -1- AC_SUBST_TRACE([PTHREAD_CFLAGS])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^PTHREAD_CFLAGS$])
-m4trace:configure.ac:553: -1- AC_SUBST([PTHREAD_CC])
-m4trace:configure.ac:553: -1- AC_SUBST_TRACE([PTHREAD_CC])
-m4trace:configure.ac:553: -1- m4_pattern_allow([^PTHREAD_CC$])
-m4trace:configure.ac:562: -1- AC_DEFINE_TRACE_LITERAL([MYTHREAD_POSIX])
-m4trace:configure.ac:562: -1- m4_pattern_allow([^MYTHREAD_POSIX$])
-m4trace:configure.ac:562: -1- AH_OUTPUT([MYTHREAD_POSIX], [/* Define to 1 when using POSIX threads (pthreads). */
-@%:@undef MYTHREAD_POSIX])
-m4trace:configure.ac:575: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the `clock_gettime\' function. */
-@%:@undef HAVE_CLOCK_GETTIME])
-m4trace:configure.ac:575: -1- AH_OUTPUT([HAVE_PTHREAD_CONDATTR_SETCLOCK], [/* Define to 1 if you have the `pthread_condattr_setclock\' function. */
-@%:@undef HAVE_PTHREAD_CONDATTR_SETCLOCK])
-m4trace:configure.ac:576: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CLOCK_MONOTONIC])
-m4trace:configure.ac:576: -1- m4_pattern_allow([^HAVE_DECL_CLOCK_MONOTONIC$])
-m4trace:configure.ac:576: -1- AH_OUTPUT([HAVE_DECL_CLOCK_MONOTONIC], [/* Define to 1 if you have the declaration of `CLOCK_MONOTONIC\', and to 0 if
-   you don\'t. */
-@%:@undef HAVE_DECL_CLOCK_MONOTONIC])
-m4trace:configure.ac:580: -1- AC_DEFINE_TRACE_LITERAL([MYTHREAD_WIN95])
-m4trace:configure.ac:580: -1- m4_pattern_allow([^MYTHREAD_WIN95$])
-m4trace:configure.ac:580: -1- AH_OUTPUT([MYTHREAD_WIN95], [/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This
-   avoids use of features that were added in Windows Vista. */
-@%:@undef MYTHREAD_WIN95])
-m4trace:configure.ac:586: -1- AC_DEFINE_TRACE_LITERAL([MYTHREAD_VISTA])
-m4trace:configure.ac:586: -1- m4_pattern_allow([^MYTHREAD_VISTA$])
-m4trace:configure.ac:586: -1- AH_OUTPUT([MYTHREAD_VISTA], [/* Define to 1 when using Windows Vista compatible threads. This uses features
-   that are not available on Windows XP. */
-@%:@undef MYTHREAD_VISTA])
-m4trace:configure.ac:591: -1- AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
-m4trace:configure.ac:591: -1- AC_SUBST([COND_THREADS_TRUE])
-m4trace:configure.ac:591: -1- AC_SUBST_TRACE([COND_THREADS_TRUE])
-m4trace:configure.ac:591: -1- m4_pattern_allow([^COND_THREADS_TRUE$])
-m4trace:configure.ac:591: -1- AC_SUBST([COND_THREADS_FALSE])
-m4trace:configure.ac:591: -1- AC_SUBST_TRACE([COND_THREADS_FALSE])
-m4trace:configure.ac:591: -1- m4_pattern_allow([^COND_THREADS_FALSE$])
-m4trace:configure.ac:591: -1- _AM_SUBST_NOTMAKE([COND_THREADS_TRUE])
-m4trace:configure.ac:591: -1- _AM_SUBST_NOTMAKE([COND_THREADS_FALSE])
-m4trace:configure.ac:596: -1- LT_INIT([win32-dll])
-m4trace:configure.ac:596: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:596: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
-m4trace:configure.ac:596: -1- AC_SUBST([AS])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([AS])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^AS$])
-m4trace:configure.ac:596: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:596: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:596: -1- AC_SUBST([LIBTOOL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([LIBTOOL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:596: -1- AC_SUBST([SED])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([SED])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:596: -1- AC_SUBST([FGREP])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([FGREP])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:596: -1- AC_SUBST([GREP])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:596: -1- AC_SUBST([LD])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([LD])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:596: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:596: -1- AC_SUBST([ac_ct_DUMPBIN])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:596: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:596: -1- AC_SUBST([NM])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([NM])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:596: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:596: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:596: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:596: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:596: -1- AC_SUBST([AR])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:596: -1- AC_SUBST([ac_ct_AR])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([ac_ct_AR])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^ac_ct_AR$])
-m4trace:configure.ac:596: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:596: -1- AC_SUBST([RANLIB])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:596: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:596: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:596: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-@%:@undef LT_OBJDIR])
-m4trace:configure.ac:596: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:596: -1- AC_SUBST([MANIFEST_TOOL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^MANIFEST_TOOL$])
-m4trace:configure.ac:596: -1- AC_SUBST([DSYMUTIL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([DSYMUTIL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:596: -1- AC_SUBST([NMEDIT])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([NMEDIT])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:596: -1- AC_SUBST([LIPO])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([LIPO])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:596: -1- AC_SUBST([OTOOL])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([OTOOL])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:596: -1- AC_SUBST([OTOOL64])
-m4trace:configure.ac:596: -1- AC_SUBST_TRACE([OTOOL64])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:596: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
-@%:@undef HAVE_DLFCN_H])
-m4trace:configure.ac:596: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
-m4trace:configure.ac:596: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
-m4trace:configure.ac:597: -1- LT_SUPPORTED_TAG([RC])
-m4trace:configure.ac:597: -1- AC_SUBST([RC])
-m4trace:configure.ac:597: -1- AC_SUBST_TRACE([RC])
-m4trace:configure.ac:597: -1- m4_pattern_allow([^RC$])
-m4trace:configure.ac:597: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
+m4trace:configure.ac:547: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
+m4trace:configure.ac:547: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
+m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:548: -1- AC_PROG_EGREP
+m4trace:configure.ac:548: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_POSIX_SOURCE$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_MINIX$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^__EXTENSIONS__$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_ALL_SOURCE$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_GNU_SOURCE$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
+m4trace:configure.ac:554: -1- AX_PTHREAD([:])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^ax_pthread_config$])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CREATE_JOINABLE$])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^HAVE_PTHREAD_PRIO_INHERIT$])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CC$])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_LIBS$])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CFLAGS$])
+m4trace:configure.ac:554: -1- m4_pattern_allow([^PTHREAD_CC$])
+m4trace:configure.ac:563: -1- m4_pattern_allow([^MYTHREAD_POSIX$])
+m4trace:configure.ac:577: -1- m4_pattern_allow([^HAVE_DECL_CLOCK_MONOTONIC$])
+m4trace:configure.ac:581: -1- m4_pattern_allow([^MYTHREAD_WIN95$])
+m4trace:configure.ac:587: -1- m4_pattern_allow([^MYTHREAD_VISTA$])
+m4trace:configure.ac:592: -1- AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
+m4trace:configure.ac:592: -1- m4_pattern_allow([^COND_THREADS_TRUE$])
+m4trace:configure.ac:592: -1- m4_pattern_allow([^COND_THREADS_FALSE$])
+m4trace:configure.ac:592: -1- _AM_SUBST_NOTMAKE([COND_THREADS_TRUE])
+m4trace:configure.ac:592: -1- _AM_SUBST_NOTMAKE([COND_THREADS_FALSE])
+m4trace:configure.ac:597: -1- LT_INIT([win32-dll])
+m4trace:configure.ac:597: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:597: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:597: -1- LTSUGAR_VERSION
+m4trace:configure.ac:597: -1- LTVERSION_VERSION
+m4trace:configure.ac:597: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:597: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:597: -1- m4_pattern_allow([^AS$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:597: -1- _LT_PREPARE_SED_QUOTE_VARS
+m4trace:configure.ac:597: -1- _LT_PROG_ECHO_BACKSLASH
+m4trace:configure.ac:597: -1- LT_PATH_LD
+m4trace:configure.ac:597: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:597: -1- LT_PATH_NM
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:597: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:597: -1- _LT_WITH_SYSROOT
+m4trace:configure.ac:597: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:597: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:597: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:597: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:597: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:597: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:597: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:597: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:597: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
+m4trace:configure.ac:597: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:597: -1- _LT_REQUIRED_DARWIN_CHECKS
+m4trace:configure.ac:597: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:597: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:597: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
+m4trace:configure.ac:597: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:597: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:598: -1- LT_LANG([Windows Resource])
+m4trace:configure.ac:598: -1- LT_SUPPORTED_TAG([RC])
+m4trace:configure.ac:598: -1- LT_PROG_RC
+m4trace:configure.ac:598: -1- m4_pattern_allow([^RC$])
+m4trace:configure.ac:598: -1- LT_LANG([RC])
+m4trace:configure.ac:598: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/lang.m4:125: AC_LANG_SAVE is expanded from...
 m4/libtool.m4:7587: _LT_LANG_RC_CONFIG is expanded from...
 m4/libtool.m4:819: _LT_LANG is expanded from...
 m4/libtool.m4:801: LT_LANG is expanded from...
-configure.ac:597: the top level])
-m4trace:configure.ac:597: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
+configure.ac:598: the top level])
+m4trace:configure.ac:598: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:598: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:598: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:598: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/lang.m4:134: AC_LANG_RESTORE is expanded from...
 m4/libtool.m4:7587: _LT_LANG_RC_CONFIG is expanded from...
 m4/libtool.m4:819: _LT_LANG is expanded from...
 m4/libtool.m4:801: LT_LANG is expanded from...
-configure.ac:597: the top level])
-m4trace:configure.ac:603: -1- AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
-m4trace:configure.ac:603: -1- AC_SUBST([COND_SHARED_TRUE])
-m4trace:configure.ac:603: -1- AC_SUBST_TRACE([COND_SHARED_TRUE])
-m4trace:configure.ac:603: -1- m4_pattern_allow([^COND_SHARED_TRUE$])
-m4trace:configure.ac:603: -1- AC_SUBST([COND_SHARED_FALSE])
-m4trace:configure.ac:603: -1- AC_SUBST_TRACE([COND_SHARED_FALSE])
-m4trace:configure.ac:603: -1- m4_pattern_allow([^COND_SHARED_FALSE$])
-m4trace:configure.ac:603: -1- _AM_SUBST_NOTMAKE([COND_SHARED_TRUE])
-m4trace:configure.ac:603: -1- _AM_SUBST_NOTMAKE([COND_SHARED_FALSE])
-m4trace:configure.ac:613: -1- AM_GNU_GETTEXT([external])
-m4trace:configure.ac:613: -1- AM_PROG_MKDIR_P
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [AM_PROG_MKDIR_P: this macro is deprecated, and will soon be removed.
+configure.ac:598: the top level])
+m4trace:configure.ac:604: -1- AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^COND_SHARED_TRUE$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^COND_SHARED_FALSE$])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([COND_SHARED_TRUE])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([COND_SHARED_FALSE])
+m4trace:configure.ac:613: -1- AM_GNU_GETTEXT_VERSION([0.19])
+m4trace:configure.ac:614: -1- AM_GNU_GETTEXT([external])
+m4trace:configure.ac:614: -1- AM_GNU_GETTEXT_NEED([])
+m4trace:configure.ac:614: -1- AM_PO_SUBDIRS
+m4trace:configure.ac:614: -1- AM_PROG_MKDIR_P
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [AM_PROG_MKDIR_P: this macro is deprecated, and will soon be removed.
 You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
-and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.], [aclocal.m4:763: AM_PROG_MKDIR_P is expanded from...
+and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.], [/usr/share/aclocal-1.16/mkdirp.m4:11: AM_PROG_MKDIR_P is expanded from...
 m4/po.m4:23: AM_PO_SUBDIRS is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([mkdir_p])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:613: -1- AM_NLS
-m4trace:configure.ac:613: -1- AC_SUBST([USE_NLS])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([USE_NLS])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^USE_NLS$])
-m4trace:configure.ac:613: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$])
-m4trace:configure.ac:613: -1- AC_SUBST([MSGFMT])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([MSGFMT])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^MSGFMT$])
-m4trace:configure.ac:613: -1- AC_SUBST([GMSGFMT])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([GMSGFMT])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^GMSGFMT$])
-m4trace:configure.ac:613: -1- AC_SUBST([MSGFMT_015])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([MSGFMT_015])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^MSGFMT_015$])
-m4trace:configure.ac:613: -1- AC_SUBST([GMSGFMT_015])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([GMSGFMT_015])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^GMSGFMT_015$])
-m4trace:configure.ac:613: -1- AC_SUBST([XGETTEXT])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([XGETTEXT])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^XGETTEXT$])
-m4trace:configure.ac:613: -1- AC_SUBST([XGETTEXT_015])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([XGETTEXT_015])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^XGETTEXT_015$])
-m4trace:configure.ac:613: -1- AC_SUBST([MSGMERGE])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([MSGMERGE])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^MSGMERGE$])
-m4trace:configure.ac:613: -1- AC_SUBST([localedir])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:613: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$])
-m4trace:configure.ac:613: -1- AC_REQUIRE_AUX_FILE([config.rpath])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:614: -1- AM_NLS
+m4trace:configure.ac:614: -1- m4_pattern_allow([^USE_NLS$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$])
+m4trace:configure.ac:614: -1- AM_PATH_PROG_WITH_TEST([MSGFMT], [msgfmt], [$ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^MSGFMT$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^GMSGFMT$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^MSGFMT_015$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^GMSGFMT_015$])
+m4trace:configure.ac:614: -1- AM_PATH_PROG_WITH_TEST([XGETTEXT], [xgettext], [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^XGETTEXT$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^XGETTEXT_015$])
+m4trace:configure.ac:614: -1- AM_PATH_PROG_WITH_TEST([MSGMERGE], [msgmerge], [$ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1], [:])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^MSGMERGE$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$])
+m4trace:configure.ac:614: -1- AC_LIB_PREPARE_PREFIX
+m4trace:configure.ac:614: -1- AC_LIB_RPATH
+m4trace:configure.ac:614: -1- AC_LIB_PROG_LD
+m4trace:configure.ac:614: -1- AC_LIB_PROG_LD_GNU
+m4trace:configure.ac:614: -1- AM_ICONV_LINKFLAGS_BODY
+m4trace:configure.ac:614: -1- AC_LIB_LINKFLAGS_BODY([iconv])
+m4trace:configure.ac:614: -1- AC_LIB_PREPARE_MULTILIB
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- gt_INTL_MACOSX
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$])
-m4trace:configure.ac:613: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
-   the CoreFoundation framework. */
-@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$])
-m4trace:configure.ac:613: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
-   CoreFoundation framework. */
-@%:@undef HAVE_CFLOCALECOPYCURRENT])
-m4trace:configure.ac:613: -1- AC_SUBST([INTL_MACOSX_LIBS])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- AM_ICONV_LINK
+m4trace:configure.ac:614: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/iconv.m4:20: AM_ICONV_LINK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/iconv.m4:20: AM_ICONV_LINK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2775: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/iconv.m4:20: AM_ICONV_LINK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^HAVE_ICONV$])
-m4trace:configure.ac:613: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */
-@%:@undef HAVE_ICONV])
-m4trace:configure.ac:613: -1- AC_SUBST([LIBICONV])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([LIBICONV])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^LIBICONV$])
-m4trace:configure.ac:613: -1- AC_SUBST([LTLIBICONV])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([LTLIBICONV])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^LTLIBICONV$])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_ICONV$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LIBICONV$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LTLIBICONV$])
+m4trace:configure.ac:614: -1- AC_LIB_LINKFLAGS_BODY([intl])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
 m4/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
-configure.ac:613: the top level])
-m4trace:configure.ac:613: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^ENABLE_NLS$])
-m4trace:configure.ac:613: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
-   language is requested. */
-@%:@undef ENABLE_NLS])
-m4trace:configure.ac:613: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^HAVE_GETTEXT$])
-m4trace:configure.ac:613: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
-@%:@undef HAVE_GETTEXT])
-m4trace:configure.ac:613: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
-m4trace:configure.ac:613: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-@%:@undef HAVE_DCGETTEXT])
-m4trace:configure.ac:613: -1- AC_SUBST([INTLLIBS])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([INTLLIBS])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^INTLLIBS$])
-m4trace:configure.ac:613: -1- AC_SUBST([LIBINTL])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([LIBINTL])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^LIBINTL$])
-m4trace:configure.ac:613: -1- AC_SUBST([LTLIBINTL])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([LTLIBINTL])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^LTLIBINTL$])
-m4trace:configure.ac:613: -1- AC_SUBST([POSUB])
-m4trace:configure.ac:613: -1- AC_SUBST_TRACE([POSUB])
-m4trace:configure.ac:613: -1- m4_pattern_allow([^POSUB$])
-m4trace:configure.ac:625: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
-@%:@undef HAVE_FCNTL_H])
-m4trace:configure.ac:625: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
-@%:@undef HAVE_LIMITS_H])
-m4trace:configure.ac:625: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
-@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.ac:630: -1- AH_OUTPUT([HAVE_IMMINTRIN_H], [/* Define to 1 if you have the <immintrin.h> header file. */
-@%:@undef HAVE_IMMINTRIN_H])
-m4trace:configure.ac:630: -1- AC_DEFINE_TRACE_LITERAL([HAVE_IMMINTRIN_H])
-m4trace:configure.ac:630: -1- m4_pattern_allow([^HAVE_IMMINTRIN_H$])
-m4trace:configure.ac:641: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
-m4trace:configure.ac:641: -1- m4_pattern_allow([^HAVE__BOOL$])
-m4trace:configure.ac:641: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
-@%:@undef HAVE__BOOL])
-m4trace:configure.ac:641: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
-m4trace:configure.ac:641: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
-m4trace:configure.ac:641: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
-@%:@undef HAVE_STDBOOL_H])
-m4trace:configure.ac:643: -1- AC_DEFINE_TRACE_LITERAL([_UINT8_T])
-m4trace:configure.ac:643: -1- m4_pattern_allow([^_UINT8_T$])
-m4trace:configure.ac:643: -1- AH_OUTPUT([_UINT8_T], [/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
-   @%:@define below would cause a syntax error. */
-@%:@undef _UINT8_T])
-m4trace:configure.ac:643: -1- AC_DEFINE_TRACE_LITERAL([uint8_t])
-m4trace:configure.ac:643: -1- m4_pattern_allow([^uint8_t$])
-m4trace:configure.ac:643: -1- AH_OUTPUT([uint8_t], [/* Define to the type of an unsigned integer type of width exactly 8 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint8_t])
-m4trace:configure.ac:644: -1- AC_DEFINE_TRACE_LITERAL([uint16_t])
-m4trace:configure.ac:644: -1- m4_pattern_allow([^uint16_t$])
-m4trace:configure.ac:644: -1- AH_OUTPUT([uint16_t], [/* Define to the type of an unsigned integer type of width exactly 16 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint16_t])
-m4trace:configure.ac:645: -1- AC_DEFINE_TRACE_LITERAL([int32_t])
-m4trace:configure.ac:645: -1- m4_pattern_allow([^int32_t$])
-m4trace:configure.ac:645: -1- AH_OUTPUT([int32_t], [/* Define to the type of a signed integer type of width exactly 32 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef int32_t])
-m4trace:configure.ac:646: -1- AC_DEFINE_TRACE_LITERAL([_UINT32_T])
-m4trace:configure.ac:646: -1- m4_pattern_allow([^_UINT32_T$])
-m4trace:configure.ac:646: -1- AH_OUTPUT([_UINT32_T], [/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
-   @%:@define below would cause a syntax error. */
-@%:@undef _UINT32_T])
-m4trace:configure.ac:646: -1- AC_DEFINE_TRACE_LITERAL([uint32_t])
-m4trace:configure.ac:646: -1- m4_pattern_allow([^uint32_t$])
-m4trace:configure.ac:646: -1- AH_OUTPUT([uint32_t], [/* Define to the type of an unsigned integer type of width exactly 32 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint32_t])
-m4trace:configure.ac:647: -1- AC_DEFINE_TRACE_LITERAL([int64_t])
-m4trace:configure.ac:647: -1- m4_pattern_allow([^int64_t$])
-m4trace:configure.ac:647: -1- AH_OUTPUT([int64_t], [/* Define to the type of a signed integer type of width exactly 64 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef int64_t])
-m4trace:configure.ac:648: -1- AC_DEFINE_TRACE_LITERAL([_UINT64_T])
-m4trace:configure.ac:648: -1- m4_pattern_allow([^_UINT64_T$])
-m4trace:configure.ac:648: -1- AH_OUTPUT([_UINT64_T], [/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
-   @%:@define below would cause a syntax error. */
-@%:@undef _UINT64_T])
-m4trace:configure.ac:648: -1- AC_DEFINE_TRACE_LITERAL([uint64_t])
-m4trace:configure.ac:648: -1- m4_pattern_allow([^uint64_t$])
-m4trace:configure.ac:648: -1- AH_OUTPUT([uint64_t], [/* Define to the type of an unsigned integer type of width exactly 64 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint64_t])
-m4trace:configure.ac:649: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTPTR_T])
-m4trace:configure.ac:649: -1- m4_pattern_allow([^HAVE_UINTPTR_T$])
-m4trace:configure.ac:649: -1- AH_OUTPUT([HAVE_UINTPTR_T], [/* Define to 1 if the system has the type `uintptr_t\'. */
-@%:@undef HAVE_UINTPTR_T])
-m4trace:configure.ac:649: -1- AC_DEFINE_TRACE_LITERAL([uintptr_t])
-m4trace:configure.ac:649: -1- m4_pattern_allow([^uintptr_t$])
-m4trace:configure.ac:649: -1- AH_OUTPUT([uintptr_t], [/* Define to the type of an unsigned integer type wide enough to hold a
-   pointer, if such a type exists, and if the system does not define it. */
-@%:@undef uintptr_t])
-m4trace:configure.ac:651: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SIZE_T])
-m4trace:configure.ac:651: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
-m4trace:configure.ac:651: -1- AH_OUTPUT([SIZEOF_SIZE_T], [/* The size of `size_t\', as computed by sizeof. */
-@%:@undef SIZEOF_SIZE_T])
-m4trace:configure.ac:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is a member of `struct stat\'. */
-@%:@undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
-m4trace:configure.ac:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is a member of `struct stat\'. */
-@%:@undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
-m4trace:configure.ac:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is a member of `struct stat\'. */
-@%:@undef HAVE_STRUCT_STAT_ST_ATIMENSEC])
-m4trace:configure.ac:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_UATIME])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_UATIME$])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_UATIME], [/* Define to 1 if `st_uatime\' is a member of `struct stat\'. */
-@%:@undef HAVE_STRUCT_STAT_ST_UATIME])
-m4trace:configure.ac:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is a member of `struct stat\'. */
-@%:@undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
-m4trace:configure.ac:663: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.ac:663: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.ac:663: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
-@%:@undef _FILE_OFFSET_BITS])
-m4trace:configure.ac:663: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.ac:663: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.ac:663: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
-@%:@undef _LARGE_FILES])
-m4trace:configure.ac:663: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif])
-m4trace:configure.ac:664: -1- AH_OUTPUT([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])
-m4trace:configure.ac:664: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
-m4trace:configure.ac:664: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
-m4trace:configure.ac:664: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.ac:664: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
-m4trace:configure.ac:664: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
-@%:@undef AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.ac:672: -1- AH_OUTPUT([HAVE_GETOPT_H], [/* Define to 1 if you have the <getopt.h> header file. */
-@%:@undef HAVE_GETOPT_H])
-m4trace:configure.ac:672: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETOPT_H])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^HAVE_GETOPT_H$])
-m4trace:configure.ac:672: -1- AH_OUTPUT([HAVE_GETOPT_LONG], [/* Define to 1 if you have the `getopt_long\' function. */
-@%:@undef HAVE_GETOPT_LONG])
-m4trace:configure.ac:672: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETOPT_LONG])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
-m4trace:configure.ac:672: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OPTRESET])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^HAVE_OPTRESET$])
-m4trace:configure.ac:672: -1- AH_OUTPUT([HAVE_OPTRESET], [/* Define to 1 if getopt.h declares extern int optreset. */
-@%:@undef HAVE_OPTRESET])
-m4trace:configure.ac:672: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getopt.$ac_objext"])
-m4trace:configure.ac:672: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:672: -1- AC_LIBSOURCE([getopt.c])
-m4trace:configure.ac:672: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getopt1.$ac_objext"])
-m4trace:configure.ac:672: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:672: -1- AC_LIBSOURCE([getopt1.c])
-m4trace:configure.ac:672: -1- AC_DEFINE_TRACE_LITERAL([__GETOPT_PREFIX])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^__GETOPT_PREFIX$])
-m4trace:configure.ac:672: -1- AH_OUTPUT([__GETOPT_PREFIX], [/* Define to rpl_ if the getopt replacement functions and variables should be
-   used. */
-@%:@undef __GETOPT_PREFIX])
-m4trace:configure.ac:672: -1- AC_SUBST([GETOPT_H])
-m4trace:configure.ac:672: -1- AC_SUBST_TRACE([GETOPT_H])
-m4trace:configure.ac:672: -1- m4_pattern_allow([^GETOPT_H$])
-m4trace:configure.ac:675: -1- AH_OUTPUT([HAVE_FUTIMENS], [/* Define to 1 if you have the `futimens\' function. */
-@%:@undef HAVE_FUTIMENS])
-m4trace:configure.ac:675: -1- AH_OUTPUT([HAVE_FUTIMES], [/* Define to 1 if you have the `futimes\' function. */
-@%:@undef HAVE_FUTIMES])
-m4trace:configure.ac:675: -1- AH_OUTPUT([HAVE_FUTIMESAT], [/* Define to 1 if you have the `futimesat\' function. */
-@%:@undef HAVE_FUTIMESAT])
-m4trace:configure.ac:675: -1- AH_OUTPUT([HAVE_UTIMES], [/* Define to 1 if you have the `utimes\' function. */
-@%:@undef HAVE_UTIMES])
-m4trace:configure.ac:675: -1- AH_OUTPUT([HAVE__FUTIME], [/* Define to 1 if you have the `_futime\' function. */
-@%:@undef HAVE__FUTIME])
-m4trace:configure.ac:675: -1- AH_OUTPUT([HAVE_UTIME], [/* Define to 1 if you have the `utime\' function. */
-@%:@undef HAVE_UTIME])
-m4trace:configure.ac:678: -1- AH_OUTPUT([HAVE_POSIX_FADVISE], [/* Define to 1 if you have the `posix_fadvise\' function. */
-@%:@undef HAVE_POSIX_FADVISE])
-m4trace:configure.ac:678: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_FADVISE])
-m4trace:configure.ac:678: -1- m4_pattern_allow([^HAVE_POSIX_FADVISE$])
-m4trace:configure.ac:680: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PROGRAM_INVOCATION_NAME])
-m4trace:configure.ac:680: -1- m4_pattern_allow([^HAVE_DECL_PROGRAM_INVOCATION_NAME$])
-m4trace:configure.ac:680: -1- AH_OUTPUT([HAVE_DECL_PROGRAM_INVOCATION_NAME], [/* Define to 1 if you have the declaration of `program_invocation_name\', and
-   to 0 if you don\'t. */
-@%:@undef HAVE_DECL_PROGRAM_INVOCATION_NAME])
-m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_BYTESWAP_H], [/* Define to 1 if you have the <byteswap.h> header file. */
-@%:@undef HAVE_BYTESWAP_H])
-m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_SYS_ENDIAN_H], [/* Define to 1 if you have the <sys/endian.h> header file. */
-@%:@undef HAVE_SYS_ENDIAN_H])
-m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_SYS_BYTEORDER_H], [/* Define to 1 if you have the <sys/byteorder.h> header file. */
-@%:@undef HAVE_SYS_BYTEORDER_H])
-m4trace:configure.ac:681: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSWAP_16])
-m4trace:configure.ac:681: -1- m4_pattern_allow([^HAVE_BSWAP_16$])
-m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_BSWAP_16], [/* Define to 1 if bswap_16 is available. */
-@%:@undef HAVE_BSWAP_16])
-m4trace:configure.ac:681: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSWAP_32])
-m4trace:configure.ac:681: -1- m4_pattern_allow([^HAVE_BSWAP_32$])
-m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_BSWAP_32], [/* Define to 1 if bswap_32 is available. */
-@%:@undef HAVE_BSWAP_32])
-m4trace:configure.ac:681: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSWAP_64])
-m4trace:configure.ac:681: -1- m4_pattern_allow([^HAVE_BSWAP_64$])
-m4trace:configure.ac:681: -1- AH_OUTPUT([HAVE_BSWAP_64], [/* Define to 1 if bswap_64 is available. */
-@%:@undef HAVE_BSWAP_64])
-m4trace:configure.ac:681: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_FAST_UNALIGNED_ACCESS])
-m4trace:configure.ac:681: -1- m4_pattern_allow([^TUKLIB_FAST_UNALIGNED_ACCESS$])
-m4trace:configure.ac:681: -1- AH_OUTPUT([TUKLIB_FAST_UNALIGNED_ACCESS], [/* Define to 1 if the system supports fast unaligned access to 16-bit and
-   32-bit integers. */
-@%:@undef TUKLIB_FAST_UNALIGNED_ACCESS])
-m4trace:configure.ac:682: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
-@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_AIX])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_AIX$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_AIX], [/* Define to 1 if the amount of physical memory can be detected with
-   _system_configuration.physmem. */
-@%:@undef TUKLIB_PHYSMEM_AIX])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_SYSCONF])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCONF$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_SYSCONF], [/* Define to 1 if the amount of physical memory can be detected with
-   sysconf(_SC_PAGESIZE) and sysconf(_SC_PHYS_PAGES). */
-@%:@undef TUKLIB_PHYSMEM_SYSCONF])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_SYSCTL])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCTL$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_SYSCTL], [/* Define to 1 if the amount of physical memory can be detected with sysctl().
-   */
-@%:@undef TUKLIB_PHYSMEM_SYSCTL])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_GETSYSINFO])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETSYSINFO$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_GETSYSINFO], [/* Define to 1 if the amount of physical memory can be detected with
-   getsysinfo(). */
-@%:@undef TUKLIB_PHYSMEM_GETSYSINFO])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_PSTAT_GETSTATIC])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_PSTAT_GETSTATIC$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_PSTAT_GETSTATIC], [/* Define to 1 if the amount of physical memory can be detected with
-   pstat_getstatic(). */
-@%:@undef TUKLIB_PHYSMEM_PSTAT_GETSTATIC])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_GETINVENT_R])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETINVENT_R$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_GETINVENT_R], [/* Define to 1 if the amount of physical memory can be detected with
-   getinvent_r(). */
-@%:@undef TUKLIB_PHYSMEM_GETINVENT_R])
-m4trace:configure.ac:682: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_PHYSMEM_SYSINFO])
-m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSINFO$])
-m4trace:configure.ac:682: -1- AH_OUTPUT([TUKLIB_PHYSMEM_SYSINFO], [/* Define to 1 if the amount of physical memory can be detected with Linux
-   sysinfo(). */
-@%:@undef TUKLIB_PHYSMEM_SYSINFO])
-m4trace:configure.ac:683: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
-@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H])
+configure.ac:614: the top level])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^ENABLE_NLS$])
+m4trace:configure.ac:614: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+m4trace:configure.ac:614: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_GETTEXT$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^INTLLIBS$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LIBINTL$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^LTLIBINTL$])
+m4trace:configure.ac:614: -1- m4_pattern_allow([^POSUB$])
+m4trace:configure.ac:631: -1- m4_pattern_allow([^HAVE_IMMINTRIN_H$])
+m4trace:configure.ac:642: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:642: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:644: -1- m4_pattern_allow([^_UINT8_T$])
+m4trace:configure.ac:644: -1- m4_pattern_allow([^uint8_t$])
+m4trace:configure.ac:645: -1- m4_pattern_allow([^uint16_t$])
+m4trace:configure.ac:646: -1- m4_pattern_allow([^int32_t$])
+m4trace:configure.ac:647: -1- m4_pattern_allow([^_UINT32_T$])
+m4trace:configure.ac:647: -1- m4_pattern_allow([^uint32_t$])
+m4trace:configure.ac:648: -1- m4_pattern_allow([^int64_t$])
+m4trace:configure.ac:649: -1- m4_pattern_allow([^_UINT64_T$])
+m4trace:configure.ac:649: -1- m4_pattern_allow([^uint64_t$])
+m4trace:configure.ac:650: -1- m4_pattern_allow([^HAVE_UINTPTR_T$])
+m4trace:configure.ac:650: -1- m4_pattern_allow([^uintptr_t$])
+m4trace:configure.ac:652: -1- AC_COMPUTE_INT([AS_TR_SH([ac_cv_sizeof_size_t])], [(long int) (sizeof (size_t))], [AC_INCLUDES_DEFAULT([])], [if test "$AS_TR_SH([ac_cv_type_size_t])" = yes; then
+     AC_MSG_FAILURE([cannot compute sizeof (size_t)], 77)
+   else
+     AS_TR_SH([ac_cv_sizeof_size_t])=0
+   fi])
+m4trace:configure.ac:652: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_UATIME$])
+m4trace:configure.ac:657: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
+m4trace:configure.ac:664: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:664: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:665: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
+m4trace:configure.ac:665: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
+m4trace:configure.ac:673: -1- gl_GETOPT
+m4trace:configure.ac:673: -1- gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])
+m4trace:configure.ac:673: -1- gl_GETOPT_CHECK_HEADERS
+m4trace:configure.ac:673: -1- m4_pattern_allow([^HAVE_GETOPT_H$])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^HAVE_OPTRESET$])
+m4trace:configure.ac:673: -1- gl_GETOPT_SUBSTITUTE
+m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:673: -1- gl_GETOPT_SUBSTITUTE_HEADER
+m4trace:configure.ac:673: -1- m4_pattern_allow([^__GETOPT_PREFIX$])
+m4trace:configure.ac:673: -1- m4_pattern_allow([^GETOPT_H$])
+m4trace:configure.ac:679: -1- m4_pattern_allow([^HAVE_POSIX_FADVISE$])
+m4trace:configure.ac:681: -1- TUKLIB_PROGNAME
+m4trace:configure.ac:681: -1- TUKLIB_COMMON
+m4trace:configure.ac:681: -1- m4_pattern_allow([^HAVE_DECL_PROGRAM_INVOCATION_NAME$])
+m4trace:configure.ac:682: -1- TUKLIB_INTEGER
+m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_BSWAP_16$])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_BSWAP_32$])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^HAVE_BSWAP_64$])
+m4trace:configure.ac:682: -1- m4_pattern_allow([^TUKLIB_FAST_UNALIGNED_ACCESS$])
+m4trace:configure.ac:683: -1- TUKLIB_PHYSMEM
 m4trace:configure.ac:683: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
-m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_SCHED_GETAFFINITY])
-m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SCHED_GETAFFINITY$])
-m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_CPUCORES_SCHED_GETAFFINITY], [/* Define to 1 if the number of available CPU cores can be detected with
-   sched_getaffinity() */
-@%:@undef TUKLIB_CPUCORES_SCHED_GETAFFINITY])
-m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_CPUSET])
-m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_CPUCORES_CPUSET$])
-m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_CPUCORES_CPUSET], [/* Define to 1 if the number of available CPU cores can be detected with
-   cpuset(2). */
-@%:@undef TUKLIB_CPUCORES_CPUSET])
-m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_SYSCTL])
-m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCTL$])
-m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_CPUCORES_SYSCTL], [/* Define to 1 if the number of available CPU cores can be detected with
-   sysctl(). */
-@%:@undef TUKLIB_CPUCORES_SYSCTL])
-m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_SYSCONF])
-m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCONF$])
-m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_CPUCORES_SYSCONF], [/* Define to 1 if the number of available CPU cores can be detected with
-   sysconf(_SC_NPROCESSORS_ONLN) or sysconf(_SC_NPROC_ONLN). */
-@%:@undef TUKLIB_CPUCORES_SYSCONF])
-m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC])
-m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_CPUCORES_PSTAT_GETDYNAMIC$])
-m4trace:configure.ac:683: -1- AH_OUTPUT([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC], [/* Define to 1 if the number of available CPU cores can be detected with
-   pstat_getdynamic(). */
-@%:@undef TUKLIB_CPUCORES_PSTAT_GETDYNAMIC])
-m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
-m4trace:configure.ac:684: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
-m4trace:configure.ac:684: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
-@%:@undef HAVE_MBRTOWC])
-m4trace:configure.ac:684: -1- AH_OUTPUT([HAVE_WCWIDTH], [/* Define to 1 if you have the `wcwidth\' function. */
-@%:@undef HAVE_WCWIDTH])
-m4trace:configure.ac:684: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
-m4trace:configure.ac:684: -1- m4_pattern_allow([^HAVE_WCWIDTH$])
-m4trace:configure.ac:708: -1- AH_OUTPUT([HAVE_COMMONCRYPTO_COMMONDIGEST_H], [/* Define to 1 if you have the <CommonCrypto/CommonDigest.h> header file. */
-@%:@undef HAVE_COMMONCRYPTO_COMMONDIGEST_H])
-m4trace:configure.ac:708: -1- AH_OUTPUT([HAVE_SHA256_H], [/* Define to 1 if you have the <sha256.h> header file. */
-@%:@undef HAVE_SHA256_H])
-m4trace:configure.ac:708: -1- AH_OUTPUT([HAVE_SHA2_H], [/* Define to 1 if you have the <sha2.h> header file. */
-@%:@undef HAVE_SHA2_H])
-m4trace:configure.ac:712: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CC_SHA256_CTX])
-m4trace:configure.ac:712: -1- m4_pattern_allow([^HAVE_CC_SHA256_CTX$])
-m4trace:configure.ac:712: -1- AH_OUTPUT([HAVE_CC_SHA256_CTX], [/* Define to 1 if the system has the type `CC_SHA256_CTX\'. */
-@%:@undef HAVE_CC_SHA256_CTX])
-m4trace:configure.ac:712: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHA256_CTX])
-m4trace:configure.ac:712: -1- m4_pattern_allow([^HAVE_SHA256_CTX$])
-m4trace:configure.ac:712: -1- AH_OUTPUT([HAVE_SHA256_CTX], [/* Define to 1 if the system has the type `SHA256_CTX\'. */
-@%:@undef HAVE_SHA256_CTX])
-m4trace:configure.ac:712: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHA2_CTX])
-m4trace:configure.ac:712: -1- m4_pattern_allow([^HAVE_SHA2_CTX$])
-m4trace:configure.ac:712: -1- AH_OUTPUT([HAVE_SHA2_CTX], [/* Define to 1 if the system has the type `SHA2_CTX\'. */
-@%:@undef HAVE_SHA2_CTX])
-m4trace:configure.ac:729: -1- AH_OUTPUT([HAVE_CC_SHA256_INIT], [/* Define to 1 if you have the `CC_SHA256_Init\' function. */
-@%:@undef HAVE_CC_SHA256_INIT])
-m4trace:configure.ac:729: -1- AH_OUTPUT([HAVE_SHA256INIT], [/* Define to 1 if you have the `SHA256Init\' function. */
-@%:@undef HAVE_SHA256INIT])
-m4trace:configure.ac:729: -1- AH_OUTPUT([HAVE_SHA256_INIT], [/* Define to 1 if you have the `SHA256_Init\' function. */
-@%:@undef HAVE_SHA256_INIT])
-m4trace:configure.ac:734: -1- AM_CONDITIONAL([COND_INTERNAL_SHA256], [test "x$sha256_func_found" = xno])
-m4trace:configure.ac:734: -1- AC_SUBST([COND_INTERNAL_SHA256_TRUE])
-m4trace:configure.ac:734: -1- AC_SUBST_TRACE([COND_INTERNAL_SHA256_TRUE])
-m4trace:configure.ac:734: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_TRUE$])
-m4trace:configure.ac:734: -1- AC_SUBST([COND_INTERNAL_SHA256_FALSE])
-m4trace:configure.ac:734: -1- AC_SUBST_TRACE([COND_INTERNAL_SHA256_FALSE])
-m4trace:configure.ac:734: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_FALSE$])
-m4trace:configure.ac:734: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_TRUE])
-m4trace:configure.ac:734: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_FALSE])
-m4trace:configure.ac:740: -1- AC_DEFINE_TRACE_LITERAL([HAVE__MM_MOVEMASK_EPI8])
-m4trace:configure.ac:740: -1- m4_pattern_allow([^HAVE__MM_MOVEMASK_EPI8$])
-m4trace:configure.ac:740: -1- AH_OUTPUT([HAVE__MM_MOVEMASK_EPI8], [/* Define to 1 if _mm_movemask_epi8 is available. */
-@%:@undef HAVE__MM_MOVEMASK_EPI8])
-m4trace:configure.ac:751: -1- AH_OUTPUT([HAVE_SYS_CAPSICUM_H], [/* Define to 1 if you have the <sys/capsicum.h> header file. */
-@%:@undef HAVE_SYS_CAPSICUM_H])
-m4trace:configure.ac:751: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_CAPSICUM_H])
-m4trace:configure.ac:751: -1- m4_pattern_allow([^HAVE_SYS_CAPSICUM_H$])
-m4trace:configure.ac:751: -1- AC_SUBST([CAPSICUM_LIB])
-m4trace:configure.ac:751: -1- AC_SUBST_TRACE([CAPSICUM_LIB])
-m4trace:configure.ac:751: -1- m4_pattern_allow([^CAPSICUM_LIB$])
-m4trace:configure.ac:751: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CAPSICUM])
-m4trace:configure.ac:751: -1- m4_pattern_allow([^HAVE_CAPSICUM$])
-m4trace:configure.ac:751: -1- AH_OUTPUT([HAVE_CAPSICUM], [/* Define to 1 if Capsicum is available. */
-@%:@undef HAVE_CAPSICUM])
-m4trace:configure.ac:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_AIX$])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCONF$])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSCTL$])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETSYSINFO$])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_PSTAT_GETSTATIC$])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_GETINVENT_R$])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^TUKLIB_PHYSMEM_SYSINFO$])
+m4trace:configure.ac:684: -1- TUKLIB_CPUCORES
+m4trace:configure.ac:684: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SCHED_GETAFFINITY$])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_CPUSET$])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCTL$])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_SYSCONF$])
+m4trace:configure.ac:684: -1- m4_pattern_allow([^TUKLIB_CPUCORES_PSTAT_GETDYNAMIC$])
+m4trace:configure.ac:685: -1- TUKLIB_MBSTR
+m4trace:configure.ac:685: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
+m4trace:configure.ac:685: -1- m4_pattern_allow([^HAVE_WCWIDTH$])
+m4trace:configure.ac:713: -1- m4_pattern_allow([^HAVE_CC_SHA256_CTX$])
+m4trace:configure.ac:713: -1- m4_pattern_allow([^HAVE_SHA256_CTX$])
+m4trace:configure.ac:713: -1- m4_pattern_allow([^HAVE_SHA2_CTX$])
+m4trace:configure.ac:735: -1- AM_CONDITIONAL([COND_INTERNAL_SHA256], [test "x$sha256_func_found" = xno])
+m4trace:configure.ac:735: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_TRUE$])
+m4trace:configure.ac:735: -1- m4_pattern_allow([^COND_INTERNAL_SHA256_FALSE$])
+m4trace:configure.ac:735: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_TRUE])
+m4trace:configure.ac:735: -1- _AM_SUBST_NOTMAKE([COND_INTERNAL_SHA256_FALSE])
+m4trace:configure.ac:741: -1- m4_pattern_allow([^HAVE__MM_MOVEMASK_EPI8$])
+m4trace:configure.ac:752: -1- AX_CHECK_CAPSICUM([enable_sandbox=found], [:])
+m4trace:configure.ac:752: -1- m4_pattern_allow([^HAVE_SYS_CAPSICUM_H$])
+m4trace:configure.ac:752: -1- m4_pattern_allow([^CAPSICUM_LIB$])
+m4trace:configure.ac:752: -1- m4_pattern_allow([^HAVE_CAPSICUM$])
+m4trace:configure.ac:778: -1- gl_VISIBILITY
+m4trace:configure.ac:778: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2625: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
 m4/visibility.m4:23: gl_VISIBILITY is expanded from...
-configure.ac:777: the top level])
-m4trace:configure.ac:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+configure.ac:778: the top level])
+m4trace:configure.ac:778: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2625: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
 m4/visibility.m4:23: gl_VISIBILITY is expanded from...
-configure.ac:777: the top level])
-m4trace:configure.ac:777: -1- AC_SUBST([CFLAG_VISIBILITY])
-m4trace:configure.ac:777: -1- AC_SUBST_TRACE([CFLAG_VISIBILITY])
-m4trace:configure.ac:777: -1- m4_pattern_allow([^CFLAG_VISIBILITY$])
-m4trace:configure.ac:777: -1- AC_SUBST([HAVE_VISIBILITY])
-m4trace:configure.ac:777: -1- AC_SUBST_TRACE([HAVE_VISIBILITY])
-m4trace:configure.ac:777: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
-m4trace:configure.ac:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VISIBILITY])
-m4trace:configure.ac:777: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
-m4trace:configure.ac:777: -1- AH_OUTPUT([HAVE_VISIBILITY], [/* Define to 1 or 0, depending whether the compiler supports simple visibility
-   declarations. */
-@%:@undef HAVE_VISIBILITY])
-m4trace:configure.ac:849: -1- AM_CONDITIONAL([COND_GNULIB], [test -n "$LIBOBJS"])
-m4trace:configure.ac:849: -1- AC_SUBST([COND_GNULIB_TRUE])
-m4trace:configure.ac:849: -1- AC_SUBST_TRACE([COND_GNULIB_TRUE])
-m4trace:configure.ac:849: -1- m4_pattern_allow([^COND_GNULIB_TRUE$])
-m4trace:configure.ac:849: -1- AC_SUBST([COND_GNULIB_FALSE])
-m4trace:configure.ac:849: -1- AC_SUBST_TRACE([COND_GNULIB_FALSE])
-m4trace:configure.ac:849: -1- m4_pattern_allow([^COND_GNULIB_FALSE$])
-m4trace:configure.ac:849: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_TRUE])
-m4trace:configure.ac:849: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_FALSE])
-m4trace:configure.ac:852: -1- AC_SUBST([AM_CFLAGS])
-m4trace:configure.ac:852: -1- AC_SUBST_TRACE([AM_CFLAGS])
-m4trace:configure.ac:852: -1- m4_pattern_allow([^AM_CFLAGS$])
-m4trace:configure.ac:856: -1- AC_SUBST([xz])
-m4trace:configure.ac:856: -1- AC_SUBST_TRACE([xz])
-m4trace:configure.ac:856: -1- m4_pattern_allow([^xz$])
-m4trace:configure.ac:858: -1- AC_CONFIG_FILES([
-	Doxyfile
-	Makefile
-	po/Makefile.in
-	lib/Makefile
-	src/Makefile
-	src/liblzma/Makefile
-	src/liblzma/api/Makefile
-	src/xz/Makefile
-	src/xzdec/Makefile
-	src/lzmainfo/Makefile
-	src/scripts/Makefile
-	tests/Makefile
-	debug/Makefile
-])
-m4trace:configure.ac:873: -1- AC_CONFIG_FILES([src/scripts/xzdiff], [chmod +x src/scripts/xzdiff])
-m4trace:configure.ac:874: -1- AC_CONFIG_FILES([src/scripts/xzgrep], [chmod +x src/scripts/xzgrep])
-m4trace:configure.ac:875: -1- AC_CONFIG_FILES([src/scripts/xzmore], [chmod +x src/scripts/xzmore])
-m4trace:configure.ac:876: -1- AC_CONFIG_FILES([src/scripts/xzless], [chmod +x src/scripts/xzless])
-m4trace:configure.ac:878: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:878: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:878: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:878: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:878: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:878: -1- AC_SUBST([am__EXEEXT_TRUE])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
-m4trace:configure.ac:878: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:878: -1- AC_SUBST([am__EXEEXT_FALSE])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
-m4trace:configure.ac:878: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:878: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:878: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([INSTALL])
-m4trace:configure.ac:878: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:878: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+configure.ac:778: the top level])
+m4trace:configure.ac:778: -1- m4_pattern_allow([^CFLAG_VISIBILITY$])
+m4trace:configure.ac:778: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
+m4trace:configure.ac:778: -1- m4_pattern_allow([^HAVE_VISIBILITY$])
+m4trace:configure.ac:850: -1- AM_CONDITIONAL([COND_GNULIB], [test -n "$LIBOBJS"])
+m4trace:configure.ac:850: -1- m4_pattern_allow([^COND_GNULIB_TRUE$])
+m4trace:configure.ac:850: -1- m4_pattern_allow([^COND_GNULIB_FALSE$])
+m4trace:configure.ac:850: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_TRUE])
+m4trace:configure.ac:850: -1- _AM_SUBST_NOTMAKE([COND_GNULIB_FALSE])
+m4trace:configure.ac:853: -1- m4_pattern_allow([^AM_CFLAGS$])
+m4trace:configure.ac:857: -1- m4_pattern_allow([^xz$])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:879: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:879: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:879: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:879: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:879: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:879: -1- AM_RUN_LOG([cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles])
+m4trace:configure.ac:879: -1- _LT_PROG_LTMAIN
diff --git a/configure b/configure
index acf0d0e..e1a0a98 100755
--- a/configure
+++ b/configure
@@ -707,7 +707,6 @@
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
-am__quote
 am__include
 DEPDIR
 OBJEXT
@@ -856,6 +855,9 @@
 build_vendor
 build_cpu
 build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
 target_alias
 host_alias
 build_alias
@@ -875,6 +877,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -893,10 +896,12 @@
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_maintainer_mode
 enable_debug
 enable_encoders
 enable_decoders
@@ -982,6 +987,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1234,6 +1240,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1371,7 +1386,7 @@
 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
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1524,6 +1539,7 @@
   --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]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1562,6 +1578,9 @@
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
   --enable-debug          Enable debugging code.
   --enable-encoders=LIST  Comma-separated list of encoders to build.
                           Default=all. Available encoders: lzma1 lzma2 delta
@@ -2947,6 +2966,29 @@
 ac_config_headers="$ac_config_headers config.h"
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
 echo
 echo "$PACKAGE_STRING"
 
@@ -4246,7 +4288,7 @@
 # http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354
 # The -Wno-unsupported is used to silence warnings about missing
 # "subdir-objects".
-am__api_version='1.14'
+am__api_version='1.16'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -4418,8 +4460,8 @@
 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`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -4438,7 +4480,7 @@
 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\	*)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -4762,12 +4804,12 @@
 
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
@@ -4814,7 +4856,7 @@
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -4824,6 +4866,7 @@
     as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
   fi
 fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
@@ -4840,45 +4883,45 @@
 
 ac_config_commands="$ac_config_commands depfiles"
 
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
 am__doit:
-	@echo this is the am__doit target
+	@echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  case $?:`cat confinc.out 2>/dev/null` in #(
+  '0:this is the am__doit target') :
+    case $s in #(
+  BSD) :
+    am__include='.include' am__quote='"' ;; #(
+  *) :
+    am__include='include' am__quote='' ;;
+esac ;; #(
+  *) :
      ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
 
 # Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
@@ -19124,6 +19167,10 @@
 LTLIBOBJS=$ac_ltlibobjs
 
 
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${COND_W32_TRUE}" && test -z "${COND_W32_FALSE}"; then
   as_fn_error $? "conditional \"COND_W32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19952,7 +19999,7 @@
 #
 # INIT-COMMANDS
 #
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
 
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
@@ -20942,29 +20989,35 @@
   # Older Autoconf 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
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  case $CONFIG_FILES in #(
+  *\'*) :
+    eval set x "$CONFIG_FILES" ;; #(
+  *) :
+    set x $CONFIG_FILES ;; #(
+  *) :
+     ;;
+esac
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_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
+    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$am_mf" : 'X\(//\)[^/]' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -20982,53 +21035,48 @@
 	    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"`
-    # 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'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+    am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)[^/].*/{
+	  /^X\/\(\/\/\)$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
+	  /^X\/\(\/\).*/{
 	    s//\1/
 	    q
 	  }
 	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    { echo "$as_me:$LINENO: cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles" >&5
+   (cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+  { am_dirpart=; unset am_dirpart;}
+  { am_filepart=; unset am_filepart;}
+  { am_mf=; unset am_mf;}
+  { am_rc=; unset am_rc;}
+  rm -f conftest-deps.mk
 }
  ;;
     "libtool":C)
diff --git a/configure.ac b/configure.ac
index 81f445e..d0a9391 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,6 +23,7 @@
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_HEADER([config.h])
+AM_MAINTAINER_MODE
 
 echo
 echo "$PACKAGE_STRING"
diff --git a/debug/Makefile.in b/debug/Makefile.in
index 03cc9a5..ed61fc2 100644
--- a/debug/Makefile.in
+++ b/debug/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,8 +93,6 @@
 	known_sizes$(EXEEXT) hex2bin$(EXEEXT)
 @COND_GNULIB_TRUE@am__append_1 = $(top_builddir)/lib/libgnu.a
 subdir = debug
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -104,6 +112,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -163,7 +172,11 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/crc32.Po ./$(DEPDIR)/full_flush.Po \
+	./$(DEPDIR)/hex2bin.Po ./$(DEPDIR)/known_sizes.Po \
+	./$(DEPDIR)/memusage.Po ./$(DEPDIR)/repeat.Po \
+	./$(DEPDIR)/sync_flush.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -211,6 +224,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -270,6 +285,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -352,6 +368,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -374,7 +391,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -386,22 +403,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign debug/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign debug/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -448,13 +464,19 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full_flush.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hex2bin.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/known_sizes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memusage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repeat.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_flush.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full_flush.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hex2bin.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/known_sizes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memusage.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repeat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_flush.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -535,7 +557,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -605,7 +630,13 @@
 	mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/crc32.Po
+	-rm -f ./$(DEPDIR)/full_flush.Po
+	-rm -f ./$(DEPDIR)/hex2bin.Po
+	-rm -f ./$(DEPDIR)/known_sizes.Po
+	-rm -f ./$(DEPDIR)/memusage.Po
+	-rm -f ./$(DEPDIR)/repeat.Po
+	-rm -f ./$(DEPDIR)/sync_flush.Po
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -651,7 +682,13 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/crc32.Po
+	-rm -f ./$(DEPDIR)/full_flush.Po
+	-rm -f ./$(DEPDIR)/hex2bin.Po
+	-rm -f ./$(DEPDIR)/known_sizes.Po
+	-rm -f ./$(DEPDIR)/memusage.Po
+	-rm -f ./$(DEPDIR)/repeat.Po
+	-rm -f ./$(DEPDIR)/sync_flush.Po
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -672,9 +709,9 @@
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -686,6 +723,8 @@
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # 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.
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 374abbf..f07b922 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,8 +89,6 @@
 build_triplet = @build@
 host_triplet = @host@
 subdir = lib
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am getopt.c \
-	getopt1.c $(top_srcdir)/build-aux/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -100,6 +108,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -127,7 +136,8 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = $(DEPDIR)/getopt.Po $(DEPDIR)/getopt1.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -159,6 +169,8 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp getopt.c getopt1.c
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -218,6 +230,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -300,6 +313,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -321,7 +335,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -333,22 +347,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign lib/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -366,8 +379,14 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -402,7 +421,10 @@
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -476,7 +498,8 @@
 	mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf $(DEPDIR)
+		-rm -f $(DEPDIR)/getopt.Po
+	-rm -f $(DEPDIR)/getopt1.Po
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic
 
@@ -521,7 +544,8 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf $(DEPDIR)
+		-rm -f $(DEPDIR)/getopt.Po
+	-rm -f $(DEPDIR)/getopt1.Po
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -542,18 +566,20 @@
 
 .MAKE: all check install install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	clean-noinstLIBRARIES cscopelist-am ctags-am distclean \
-	distclean-compile distclean-generic distclean-libtool distdir \
-	dvi dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am
+.PHONY: all all-am am--depfiles check check-am clean clean-generic \
+	clean-libtool clean-noinstLIBRARIES cscopelist-am ctags-am \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
 
 
 getopt.h: getopt.in.h
diff --git a/src/Makefile.in b/src/Makefile.in
index 052223a..888fd1b 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,7 +91,6 @@
 @COND_LZMAINFO_TRUE@am__append_2 = lzmainfo
 @COND_SCRIPTS_TRUE@am__append_3 = scripts
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -101,6 +110,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -139,7 +149,7 @@
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
+	distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -160,6 +170,7 @@
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = liblzma xzdec xz lzmainfo scripts
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -244,6 +255,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -326,6 +338,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -362,7 +375,7 @@
 all: all-recursive
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -374,22 +387,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -498,7 +510,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -669,6 +684,8 @@
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # 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.
diff --git a/src/liblzma/Makefile.in b/src/liblzma/Makefile.in
index 434425b..b07301e 100644
--- a/src/liblzma/Makefile.in
+++ b/src/liblzma/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,12 +93,6 @@
 @COND_SYMVERS_TRUE@	-Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma.map
 
 @COND_THREADS_TRUE@am__append_2 = ../common/tuklib_cpucores.c
-DIST_COMMON = $(srcdir)/common/Makefile.inc \
-	$(srcdir)/check/Makefile.inc $(srcdir)/lz/Makefile.inc \
-	$(srcdir)/lzma/Makefile.inc $(srcdir)/rangecoder/Makefile.inc \
-	$(srcdir)/delta/Makefile.inc $(srcdir)/simple/Makefile.inc \
-	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp
 @COND_THREADS_TRUE@am__append_3 = common/hardware_cputhreads.c
 @COND_MAIN_ENCODER_TRUE@am__append_4 = \
 @COND_MAIN_ENCODER_TRUE@	common/alone_encoder.c \
@@ -253,6 +257,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -452,11 +457,88 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/liblzma_la-alone_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-alone_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-arm.Plo \
+	./$(DEPDIR)/liblzma_la-armthumb.Plo \
+	./$(DEPDIR)/liblzma_la-auto_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_buffer_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_header_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_header_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-block_util.Plo \
+	./$(DEPDIR)/liblzma_la-check.Plo \
+	./$(DEPDIR)/liblzma_la-common.Plo \
+	./$(DEPDIR)/liblzma_la-crc32_fast.Plo \
+	./$(DEPDIR)/liblzma_la-crc32_small.Plo \
+	./$(DEPDIR)/liblzma_la-crc32_table.Plo \
+	./$(DEPDIR)/liblzma_la-crc32_x86.Plo \
+	./$(DEPDIR)/liblzma_la-crc64_fast.Plo \
+	./$(DEPDIR)/liblzma_la-crc64_small.Plo \
+	./$(DEPDIR)/liblzma_la-crc64_table.Plo \
+	./$(DEPDIR)/liblzma_la-crc64_x86.Plo \
+	./$(DEPDIR)/liblzma_la-delta_common.Plo \
+	./$(DEPDIR)/liblzma_la-delta_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-delta_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-easy_buffer_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-easy_decoder_memusage.Plo \
+	./$(DEPDIR)/liblzma_la-easy_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo \
+	./$(DEPDIR)/liblzma_la-easy_preset.Plo \
+	./$(DEPDIR)/liblzma_la-fastpos_table.Plo \
+	./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-filter_common.Plo \
+	./$(DEPDIR)/liblzma_la-filter_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-filter_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-filter_flags_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-filter_flags_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-hardware_cputhreads.Plo \
+	./$(DEPDIR)/liblzma_la-hardware_physmem.Plo \
+	./$(DEPDIR)/liblzma_la-ia64.Plo \
+	./$(DEPDIR)/liblzma_la-index.Plo \
+	./$(DEPDIR)/liblzma_la-index_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-index_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-index_hash.Plo \
+	./$(DEPDIR)/liblzma_la-lz_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-lz_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo \
+	./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-lzma_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-lzma_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo \
+	./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo \
+	./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo \
+	./$(DEPDIR)/liblzma_la-outqueue.Plo \
+	./$(DEPDIR)/liblzma_la-powerpc.Plo \
+	./$(DEPDIR)/liblzma_la-price_table.Plo \
+	./$(DEPDIR)/liblzma_la-sha256.Plo \
+	./$(DEPDIR)/liblzma_la-simple_coder.Plo \
+	./$(DEPDIR)/liblzma_la-simple_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-simple_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-sparc.Plo \
+	./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-stream_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-stream_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo \
+	./$(DEPDIR)/liblzma_la-stream_flags_common.Plo \
+	./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo \
+	./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo \
+	./$(DEPDIR)/liblzma_la-vli_decoder.Plo \
+	./$(DEPDIR)/liblzma_la-vli_encoder.Plo \
+	./$(DEPDIR)/liblzma_la-vli_size.Plo \
+	./$(DEPDIR)/liblzma_la-x86.Plo
 am__mv = mv -f
 CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
-LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
+LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CCASFLAGS) $(CCASFLAGS)
@@ -505,7 +587,7 @@
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
+	distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -526,6 +608,11 @@
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/check/Makefile.inc \
+	$(srcdir)/common/Makefile.inc $(srcdir)/delta/Makefile.inc \
+	$(srcdir)/lz/Makefile.inc $(srcdir)/lzma/Makefile.inc \
+	$(srcdir)/rangecoder/Makefile.inc \
+	$(srcdir)/simple/Makefile.inc $(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -610,6 +697,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -692,6 +780,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -750,7 +839,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .S .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/common/Makefile.inc $(srcdir)/check/Makefile.inc $(srcdir)/lz/Makefile.inc $(srcdir)/lzma/Makefile.inc $(srcdir)/rangecoder/Makefile.inc $(srcdir)/delta/Makefile.inc $(srcdir)/simple/Makefile.inc $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/common/Makefile.inc $(srcdir)/check/Makefile.inc $(srcdir)/lz/Makefile.inc $(srcdir)/lzma/Makefile.inc $(srcdir)/rangecoder/Makefile.inc $(srcdir)/delta/Makefile.inc $(srcdir)/simple/Makefile.inc $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -762,23 +851,22 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/liblzma/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/liblzma/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
-$(srcdir)/common/Makefile.inc $(srcdir)/check/Makefile.inc $(srcdir)/lz/Makefile.inc $(srcdir)/lzma/Makefile.inc $(srcdir)/rangecoder/Makefile.inc $(srcdir)/delta/Makefile.inc $(srcdir)/simple/Makefile.inc:
+$(srcdir)/common/Makefile.inc $(srcdir)/check/Makefile.inc $(srcdir)/lz/Makefile.inc $(srcdir)/lzma/Makefile.inc $(srcdir)/rangecoder/Makefile.inc $(srcdir)/delta/Makefile.inc $(srcdir)/simple/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -826,83 +914,89 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-alone_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-alone_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-arm.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-armthumb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-auto_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_buffer_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_header_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_header_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_util.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-check.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_fast.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_small.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_x86.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_fast.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_small.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_x86.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-delta_common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-delta_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-delta_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_buffer_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_decoder_memusage.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_preset.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-fastpos_table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_flags_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_flags_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-hardware_cputhreads.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-hardware_physmem.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-ia64.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index_hash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-outqueue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-powerpc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-price_table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-sha256.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_coder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-sparc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_size.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-x86.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-alone_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-alone_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-arm.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-armthumb.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-auto_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_buffer_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_header_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_header_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_util.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-check.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-common.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_fast.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_small.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_table.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc32_x86.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_fast.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_small.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_table.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-crc64_x86.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-delta_common.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-delta_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-delta_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_buffer_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_decoder_memusage.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_preset.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-fastpos_table.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_common.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_flags_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_flags_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-hardware_cputhreads.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-hardware_physmem.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-ia64.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-index_hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-outqueue.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-powerpc.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-price_table.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-sha256.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_coder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-sparc.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_common.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_decoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_encoder.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_size.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-x86.Plo@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .S.o:
 @am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -926,18 +1020,18 @@
 @am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $<
 
 liblzma_la-crc32_x86.lo: check/crc32_x86.S
-@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT liblzma_la-crc32_x86.lo -MD -MP -MF $(DEPDIR)/liblzma_la-crc32_x86.Tpo -c -o liblzma_la-crc32_x86.lo `test -f 'check/crc32_x86.S' || echo '$(srcdir)/'`check/crc32_x86.S
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT liblzma_la-crc32_x86.lo -MD -MP -MF $(DEPDIR)/liblzma_la-crc32_x86.Tpo -c -o liblzma_la-crc32_x86.lo `test -f 'check/crc32_x86.S' || echo '$(srcdir)/'`check/crc32_x86.S
 @am__fastdepCCAS_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-crc32_x86.Tpo $(DEPDIR)/liblzma_la-crc32_x86.Plo
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='check/crc32_x86.S' object='liblzma_la-crc32_x86.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o liblzma_la-crc32_x86.lo `test -f 'check/crc32_x86.S' || echo '$(srcdir)/'`check/crc32_x86.S
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o liblzma_la-crc32_x86.lo `test -f 'check/crc32_x86.S' || echo '$(srcdir)/'`check/crc32_x86.S
 
 liblzma_la-crc64_x86.lo: check/crc64_x86.S
-@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT liblzma_la-crc64_x86.lo -MD -MP -MF $(DEPDIR)/liblzma_la-crc64_x86.Tpo -c -o liblzma_la-crc64_x86.lo `test -f 'check/crc64_x86.S' || echo '$(srcdir)/'`check/crc64_x86.S
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT liblzma_la-crc64_x86.lo -MD -MP -MF $(DEPDIR)/liblzma_la-crc64_x86.Tpo -c -o liblzma_la-crc64_x86.lo `test -f 'check/crc64_x86.S' || echo '$(srcdir)/'`check/crc64_x86.S
 @am__fastdepCCAS_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-crc64_x86.Tpo $(DEPDIR)/liblzma_la-crc64_x86.Plo
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='check/crc64_x86.S' object='liblzma_la-crc64_x86.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o liblzma_la-crc64_x86.lo `test -f 'check/crc64_x86.S' || echo '$(srcdir)/'`check/crc64_x86.S
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o liblzma_la-crc64_x86.lo `test -f 'check/crc64_x86.S' || echo '$(srcdir)/'`check/crc64_x86.S
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1632,7 +1726,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -1732,7 +1829,83 @@
 	mostlyclean-am
 
 distclean: distclean-recursive
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/liblzma_la-alone_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-alone_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-arm.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-armthumb.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-auto_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_header_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_header_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_util.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-check.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_fast.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_small.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_x86.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_fast.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_small.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_x86.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-delta_common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-delta_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-delta_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_decoder_memusage.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_preset.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-fastpos_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_flags_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_flags_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-hardware_cputhreads.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-hardware_physmem.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-ia64.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index_hash.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lz_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lz_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-outqueue.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-powerpc.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-price_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-sha256.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-simple_coder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-simple_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-simple_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-sparc.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_flags_common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-vli_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-vli_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-vli_size.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-x86.Plo
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -1778,7 +1951,83 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/liblzma_la-alone_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-alone_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-arm.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-armthumb.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-auto_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_header_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_header_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-block_util.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-check.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_fast.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_small.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc32_x86.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_fast.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_small.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-crc64_x86.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-delta_common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-delta_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-delta_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_decoder_memusage.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-easy_preset.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-fastpos_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_flags_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-filter_flags_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-hardware_cputhreads.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-hardware_physmem.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-ia64.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-index_hash.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lz_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lz_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-outqueue.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-powerpc.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-price_table.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-sha256.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-simple_coder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-simple_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-simple_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-sparc.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_flags_common.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-vli_decoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-vli_encoder.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-vli_size.Plo
+	-rm -f ./$(DEPDIR)/liblzma_la-x86.Plo
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1800,10 +2049,10 @@
 
 .MAKE: $(am__recursive_targets) install-am install-strip
 
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-	check-am clean clean-generic clean-libLTLIBRARIES \
-	clean-libtool clean-local cscopelist-am ctags ctags-am \
-	distclean distclean-compile distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--depfiles check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool clean-local cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-docDATA install-dvi install-dvi-am \
@@ -1817,6 +2066,8 @@
 	tags tags-am uninstall uninstall-am uninstall-docDATA \
 	uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
 
+.PRECIOUS: Makefile
+
 
 # Windows resource compiler support. libtool knows what to do with .rc
 # files, but Automake (<= 1.11 at least) doesn't know.
diff --git a/src/liblzma/api/Makefile.in b/src/liblzma/api/Makefile.in
index c1755f5..7cc4acb 100644
--- a/src/liblzma/api/Makefile.in
+++ b/src/liblzma/api/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,8 +89,6 @@
 build_triplet = @build@
 host_triplet = @host@
 subdir = src/liblzma/api
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(nobase_include_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -100,6 +108,8 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(nobase_include_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -171,6 +181,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -230,6 +241,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -312,6 +324,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -341,7 +354,7 @@
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -353,22 +366,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/liblzma/api/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/liblzma/api/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -454,7 +466,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -603,6 +618,8 @@
 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
 	uninstall-am uninstall-nobase_includeHEADERS
 
+.PRECIOUS: Makefile
+
 
 # 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.
diff --git a/src/lzmainfo/Makefile.in b/src/lzmainfo/Makefile.in
index e60558c..03d9323 100644
--- a/src/lzmainfo/Makefile.in
+++ b/src/lzmainfo/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -82,8 +92,6 @@
 @COND_W32_TRUE@am__append_1 = lzmainfo_w32res.rc
 @COND_GNULIB_TRUE@am__append_2 = $(top_builddir)/lib/libgnu.a
 subdir = src/lzmainfo
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp $(dist_man_MANS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -103,6 +111,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -137,7 +146,10 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/lzmainfo-lzmainfo.Po \
+	./$(DEPDIR)/lzmainfo-tuklib_exit.Po \
+	./$(DEPDIR)/lzmainfo-tuklib_progname.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -213,6 +225,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -272,6 +286,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -354,6 +369,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,7 +394,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -390,22 +406,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/lzmainfo/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/lzmainfo/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
@@ -468,9 +483,15 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmainfo-lzmainfo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmainfo-tuklib_exit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmainfo-tuklib_progname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmainfo-lzmainfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmainfo-tuklib_exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmainfo-tuklib_progname.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -636,7 +657,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -708,7 +732,9 @@
 clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/lzmainfo-lzmainfo.Po
+	-rm -f ./$(DEPDIR)/lzmainfo-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/lzmainfo-tuklib_progname.Po
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -754,7 +780,9 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/lzmainfo-lzmainfo.Po
+	-rm -f ./$(DEPDIR)/lzmainfo-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/lzmainfo-tuklib_progname.Po
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -777,7 +805,7 @@
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
 	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
 	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
@@ -792,6 +820,8 @@
 	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-binPROGRAMS uninstall-man uninstall-man1
 
+.PRECIOUS: Makefile
+
 
 # Windows resource compiler support
 .rc.o:
diff --git a/src/scripts/Makefile.in b/src/scripts/Makefile.in
index 0bbbd82..7dbd2dd 100644
--- a/src/scripts/Makefile.in
+++ b/src/scripts/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -88,9 +98,6 @@
 @COND_LZMALINKS_TRUE@	xzless-lzless
 
 subdir = src/scripts
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/xzdiff.in $(srcdir)/xzgrep.in $(srcdir)/xzmore.in \
-	$(srcdir)/xzless.in $(dist_man_MANS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -110,6 +117,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES = xzdiff xzgrep xzmore xzless
@@ -166,6 +174,9 @@
 NROFF = nroff
 MANS = $(dist_man_MANS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
+	$(srcdir)/xzdiff.in $(srcdir)/xzgrep.in $(srcdir)/xzless.in \
+	$(srcdir)/xzmore.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -225,6 +236,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -307,6 +319,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -322,7 +335,7 @@
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -334,22 +347,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/scripts/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/scripts/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 xzdiff: $(top_builddir)/config.status $(srcdir)/xzdiff.in
@@ -451,7 +463,10 @@
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -607,6 +622,8 @@
 	uninstall-am uninstall-hook uninstall-man uninstall-man1 \
 	uninstall-nodist_binSCRIPTS
 
+.PRECIOUS: Makefile
+
 
 install-exec-hook:
 	cd $(DESTDIR)$(bindir) && \
diff --git a/src/xz/Makefile.in b/src/xz/Makefile.in
index bcc954a..a5535d1 100644
--- a/src/xz/Makefile.in
+++ b/src/xz/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -87,8 +97,6 @@
 @COND_GNULIB_TRUE@am__append_3 = $(top_builddir)/lib/libgnu.a
 @COND_LZMALINKS_TRUE@am__append_4 = lzma unlzma lzcat
 subdir = src/xz
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp $(dist_man_MANS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -108,6 +116,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -152,7 +161,17 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/xz-args.Po ./$(DEPDIR)/xz-coder.Po \
+	./$(DEPDIR)/xz-file_io.Po ./$(DEPDIR)/xz-hardware.Po \
+	./$(DEPDIR)/xz-list.Po ./$(DEPDIR)/xz-main.Po \
+	./$(DEPDIR)/xz-message.Po ./$(DEPDIR)/xz-mytime.Po \
+	./$(DEPDIR)/xz-options.Po ./$(DEPDIR)/xz-signals.Po \
+	./$(DEPDIR)/xz-suffix.Po ./$(DEPDIR)/xz-tuklib_exit.Po \
+	./$(DEPDIR)/xz-tuklib_mbstr_fw.Po \
+	./$(DEPDIR)/xz-tuklib_mbstr_width.Po \
+	./$(DEPDIR)/xz-tuklib_open_stdxxx.Po \
+	./$(DEPDIR)/xz-tuklib_progname.Po ./$(DEPDIR)/xz-util.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -228,6 +247,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -287,6 +308,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -369,6 +391,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -401,7 +424,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -413,22 +436,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/xz/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/xz/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
@@ -491,23 +513,29 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-args.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-coder.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-file_io.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-hardware.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-list.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-message.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-mytime.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-options.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-signals.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-suffix.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_exit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_mbstr_fw.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_mbstr_width.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_open_stdxxx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_progname.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-util.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-args.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-coder.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-file_io.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-hardware.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-list.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-message.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-mytime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-options.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-signals.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-suffix.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_mbstr_fw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_mbstr_width.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_open_stdxxx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_progname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-util.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -869,7 +897,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -941,7 +972,23 @@
 clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/xz-args.Po
+	-rm -f ./$(DEPDIR)/xz-coder.Po
+	-rm -f ./$(DEPDIR)/xz-file_io.Po
+	-rm -f ./$(DEPDIR)/xz-hardware.Po
+	-rm -f ./$(DEPDIR)/xz-list.Po
+	-rm -f ./$(DEPDIR)/xz-main.Po
+	-rm -f ./$(DEPDIR)/xz-message.Po
+	-rm -f ./$(DEPDIR)/xz-mytime.Po
+	-rm -f ./$(DEPDIR)/xz-options.Po
+	-rm -f ./$(DEPDIR)/xz-signals.Po
+	-rm -f ./$(DEPDIR)/xz-suffix.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_mbstr_fw.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_mbstr_width.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_open_stdxxx.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_progname.Po
+	-rm -f ./$(DEPDIR)/xz-util.Po
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -989,7 +1036,23 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/xz-args.Po
+	-rm -f ./$(DEPDIR)/xz-coder.Po
+	-rm -f ./$(DEPDIR)/xz-file_io.Po
+	-rm -f ./$(DEPDIR)/xz-hardware.Po
+	-rm -f ./$(DEPDIR)/xz-list.Po
+	-rm -f ./$(DEPDIR)/xz-main.Po
+	-rm -f ./$(DEPDIR)/xz-message.Po
+	-rm -f ./$(DEPDIR)/xz-mytime.Po
+	-rm -f ./$(DEPDIR)/xz-options.Po
+	-rm -f ./$(DEPDIR)/xz-signals.Po
+	-rm -f ./$(DEPDIR)/xz-suffix.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_mbstr_fw.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_mbstr_width.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_open_stdxxx.Po
+	-rm -f ./$(DEPDIR)/xz-tuklib_progname.Po
+	-rm -f ./$(DEPDIR)/xz-util.Po
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1014,7 +1077,7 @@
 .MAKE: install-am install-data-am install-exec-am install-strip \
 	uninstall-am
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
 	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
 	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
@@ -1030,6 +1093,8 @@
 	uninstall-am uninstall-binPROGRAMS uninstall-hook \
 	uninstall-man uninstall-man1
 
+.PRECIOUS: Makefile
+
 
 # Windows resource compiler support
 .rc.o:
diff --git a/src/xzdec/Makefile.in b/src/xzdec/Makefile.in
index 6b8679d..e2f4bf9 100644
--- a/src/xzdec/Makefile.in
+++ b/src/xzdec/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -85,8 +95,6 @@
 @COND_XZDEC_TRUE@am__append_4 = xzdec
 @COND_LZMADEC_TRUE@am__append_5 = lzmadec
 subdir = src/xzdec
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp $(dist_man_MANS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -106,6 +114,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -155,7 +164,12 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/lzmadec-tuklib_exit.Po \
+	./$(DEPDIR)/lzmadec-tuklib_progname.Po \
+	./$(DEPDIR)/lzmadec-xzdec.Po ./$(DEPDIR)/xzdec-tuklib_exit.Po \
+	./$(DEPDIR)/xzdec-tuklib_progname.Po \
+	./$(DEPDIR)/xzdec-xzdec.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -231,6 +245,8 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -290,6 +306,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -372,6 +389,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -401,7 +419,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -413,22 +431,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/xzdec/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/xzdec/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
@@ -495,12 +512,18 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmadec-tuklib_exit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmadec-tuklib_progname.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmadec-xzdec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xzdec-tuklib_exit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xzdec-tuklib_progname.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xzdec-xzdec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmadec-tuklib_exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmadec-tuklib_progname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzmadec-xzdec.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xzdec-tuklib_exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xzdec-tuklib_progname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xzdec-xzdec.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -708,7 +731,10 @@
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -784,7 +810,12 @@
 clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/lzmadec-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/lzmadec-tuklib_progname.Po
+	-rm -f ./$(DEPDIR)/lzmadec-xzdec.Po
+	-rm -f ./$(DEPDIR)/xzdec-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/xzdec-tuklib_progname.Po
+	-rm -f ./$(DEPDIR)/xzdec-xzdec.Po
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -831,7 +862,12 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/lzmadec-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/lzmadec-tuklib_progname.Po
+	-rm -f ./$(DEPDIR)/lzmadec-xzdec.Po
+	-rm -f ./$(DEPDIR)/xzdec-tuklib_exit.Po
+	-rm -f ./$(DEPDIR)/xzdec-tuklib_progname.Po
+	-rm -f ./$(DEPDIR)/xzdec-xzdec.Po
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -855,7 +891,7 @@
 
 .MAKE: install-am install-data-am install-strip uninstall-am
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
 	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
 	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
@@ -871,6 +907,8 @@
 	uninstall-am uninstall-binPROGRAMS uninstall-hook \
 	uninstall-man uninstall-man1
 
+.PRECIOUS: Makefile
+
 
 # Windows resource compiler support. It's fine to use xz_CPPFLAGS
 # also for lzmadec.
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 8da5508..8b57c3f 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -88,8 +98,6 @@
 	test_compress.sh $(am__append_2)
 @COND_SCRIPTS_TRUE@am__append_2 = test_scripts.sh
 subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
@@ -109,6 +117,7 @@
 	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -172,7 +181,12 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/create_compress_files.Po \
+	./$(DEPDIR)/test_bcj_exact_size.Po \
+	./$(DEPDIR)/test_block_header.Po ./$(DEPDIR)/test_check.Po \
+	./$(DEPDIR)/test_filter_flags.Po ./$(DEPDIR)/test_index.Po \
+	./$(DEPDIR)/test_stream_flags.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -244,6 +258,8 @@
     std='[m'; \
   fi; \
 }
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -303,6 +319,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -385,6 +402,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -416,7 +434,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -428,22 +446,21 @@
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign tests/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -490,13 +507,19 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/create_compress_files.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bcj_exact_size.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_block_header.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_check.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_filter_flags.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_index.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stream_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/create_compress_files.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bcj_exact_size.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_block_header.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_check.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_filter_flags.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_index.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stream_flags.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -670,7 +693,10 @@
 	  test "$$failed" -eq 0; \
 	else :; fi
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -742,7 +768,13 @@
 	mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/create_compress_files.Po
+	-rm -f ./$(DEPDIR)/test_bcj_exact_size.Po
+	-rm -f ./$(DEPDIR)/test_block_header.Po
+	-rm -f ./$(DEPDIR)/test_check.Po
+	-rm -f ./$(DEPDIR)/test_filter_flags.Po
+	-rm -f ./$(DEPDIR)/test_index.Po
+	-rm -f ./$(DEPDIR)/test_stream_flags.Po
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -788,7 +820,13 @@
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/create_compress_files.Po
+	-rm -f ./$(DEPDIR)/test_bcj_exact_size.Po
+	-rm -f ./$(DEPDIR)/test_block_header.Po
+	-rm -f ./$(DEPDIR)/test_check.Po
+	-rm -f ./$(DEPDIR)/test_filter_flags.Po
+	-rm -f ./$(DEPDIR)/test_index.Po
+	-rm -f ./$(DEPDIR)/test_stream_flags.Po
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -809,19 +847,21 @@
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool clean-local \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
 
 
 clean-local:
