m4trace:/usr/share/aclocal-1.11/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version.  Point them to the right macro.
m4_if([$1], [1.11.1], [],
      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
m4trace:/usr/share/aclocal-1.11/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
m4trace:/usr/share/aclocal-1.11/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.11/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl
 ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
m4_define([_AM_COND_VALUE_$1], [$2])dnl
if $2; then
  $1_TRUE=
  $1_FALSE='#'
else
  $1_TRUE='#'
  $1_FALSE=
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
  AC_MSG_ERROR([[conditional "$1" was never defined.
Usually this means the macro was only invoked conditionally.]])
fi])])
m4trace:/usr/share/aclocal-1.11/depend.m4:28: -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

ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
                   [depcc="$$1"   am_compiler_list=])

AC_CACHE_CHECK([dependency style of $depcc],
               [am_cv_$1_dependencies_compiler_type],
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
  # We make a subdir and do the tests there.  Otherwise we can end up
  # making bogus files that we don't know about and never remove.  For
  # instance it was reported that on HP-UX the gcc test will end up
  # making a dummy file named `D' -- because `-MD' means `put the output
  # in D'.
  mkdir conftest.dir
  # Copy depcomp to subdir because otherwise we won't find it if we're
  # using a relative directory.
  cp "$am_depcomp" conftest.dir
  cd conftest.dir
  # We will build objects and dependencies in a subdirectory because
  # it helps to detect inapplicable dependency modes.  For instance
  # both Tru64's cc and ICC support -MD to output dependencies as a
  # side effect of compilation, but ICC will put the dependencies in
  # the current directory while Tru64 will put them in the object
  # directory.
  mkdir sub

  am_cv_$1_dependencies_compiler_type=none
  if test "$am_compiler_list" = ""; then
     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
  fi
  am__universal=false
  m4_case([$1], [CC],
    [case " $depcc " in #(
     *\ -arch\ *\ -arch\ *) am__universal=true ;;
     esac],
    [CXX],
    [case " $depcc " in #(
     *\ -arch\ *\ -arch\ *) am__universal=true ;;
     esac])

  for depmode in $am_compiler_list; do
    # Setup a source with many dependencies, because some compilers
    # like to wrap large dependency lists on column 80 (with \), and
    # we should not choose a depcomp mode which is confused by this.
    #
    # We need to recreate these files for each test, as the compiler may
    # overwrite some of them when testing with obscure command lines.
    # This happens at least with the AIX C compiler.
    : > sub/conftest.c
    for i in 1 2 3 4 5 6; do
      echo '#include "conftst'$i'.h"' >> sub/conftest.c
      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
      # Solaris 8's {/usr,}/bin/sh.
      touch sub/conftst$i.h
    done
    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf

    # We check with `-c' and `-o' for the sake of the "dashmstdout"
    # mode.  It turns out that the SunPro C++ compiler does not properly
    # handle `-M -o', and we need to detect this.  Also, some Intel
    # versions had trouble with output in subdirs
    am__obj=sub/conftest.${OBJEXT-o}
    am__minus_obj="-o $am__obj"
    case $depmode in
    gcc)
      # This depmode causes a compiler race in universal mode.
      test "$am__universal" = false || continue
      ;;
    nosideeffect)
      # after this tag, mechanisms are not by side-effect, so they'll
      # only be used when explicitly requested
      if test "x$enable_dependency_tracking" = xyes; then
	continue
      else
	break
      fi
      ;;
    msvisualcpp | msvcmsys)
      # This compiler won't grok `-c -o', but also, the minuso test has
      # not run yet.  These depmodes are late enough in the game, and
      # so weak that their functioning should not be impacted.
      am__obj=conftest.${OBJEXT-o}
      am__minus_obj=
      ;;
    none) break ;;
    esac
    if depmode=$depmode \
       source=sub/conftest.c object=$am__obj \
       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
         >/dev/null 2>conftest.err &&
       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
      # icc doesn't choke on unknown options, it will just issue warnings
      # or remarks (even with -Werror).  So we grep stderr for any message
      # that says an option was ignored or not supported.
      # When given -MP, icc 7.0 and 7.1 complain thusly:
      #   icc: Command line warning: ignoring option '-M'; no argument required
      # The diagnosis changed in icc 8.0:
      #   icc: Command line remark: option '-MP' not supported
      if (grep 'ignoring option' conftest.err ||
          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
        am_cv_$1_dependencies_compiler_type=$depmode
        break
      fi
    fi
  done

  cd ..
  rm -rf conftest.dir
else
  am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
  test "x$enable_dependency_tracking" != xno \
  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
])
m4trace:/usr/share/aclocal-1.11/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.11/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking,
[  --disable-dependency-tracking  speeds up one-time build
  --enable-dependency-tracking   do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
  am_depcomp="$ac_aux_dir/depcomp"
  AMDEPBACKSLASH='\'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
])
m4trace:/usr/share/aclocal-1.11/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
  # Autoconf 2.62 quotes --file arguments for eval, but not when files
  # are listed without --file.  Let's play safe and only enable the eval
  # if we detect the quoting.
  case $CONFIG_FILES in
  *\'*) eval set x "$CONFIG_FILES" ;;
  *)   set x $CONFIG_FILES ;;
  esac
  shift
  for mf
  do
    # Strip MF so we end up with the name of the file.
    mf=`echo "$mf" | sed -e 's/:.*$//'`
    # Check whether this is an Automake generated Makefile or not.
    # We used to match only the files named `Makefile.in', but
    # some people rename them; so instead we look at the file content.
    # Grep'ing the first line is not enough: some people post-process
    # each Makefile.in and add a new line on top of each file to say so.
    # Grep'ing the whole file is not good either: AIX grep has a line
    # limit of 2048, but all sed's we know have understand at least 4000.
    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
      dirpart=`AS_DIRNAME("$mf")`
    else
      continue
    fi
    # Extract the definition of DEPDIR, am__include, and am__quote
    # from the Makefile without running `make'.
    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
    test -z "$DEPDIR" && continue
    am__include=`sed -n 's/^am__include = //p' < "$mf"`
    test -z "am__include" && continue
    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
    # When using ansi2knr, U may be empty or an underscore; expand it
    U=`sed -n 's/^U = //p' < "$mf"`
    # Find all dependency output files, they are included files with
    # $(DEPDIR) in their names.  We invoke sed twice because it is the
    # simplest approach to changing $(DEPDIR) to its actual value in the
    # expansion.
    for file in `sed -n "
      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
      # Make sure the directory exists.
      test -f "$dirpart/$file" && continue
      fdir=`AS_DIRNAME(["$file"])`
      AS_MKDIR_P([$dirpart/$fdir])
      # echo "creating $dirpart/$file"
      echo '# dummy' > "$dirpart/$file"
    done
  done
}
])
m4trace:/usr/share/aclocal-1.11/depout.m4:75: -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.11/header.m4:12: -1- AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
m4trace:/usr/share/aclocal-1.11/header.m4:12: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete.
You should run autoupdate.])dnl
AC_CONFIG_HEADERS($@)])
m4trace:/usr/share/aclocal-1.11/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl
dnl Autoconf wants to disallow AM_ names.  We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
if test "`cd $srcdir && pwd`" != "`pwd`"; then
  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
  # is not polluted with repeated "-I."
  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
  # test to see if srcdir already configured
  if test -f $srcdir/config.status; then
    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
  fi
fi

# test whether we have cygpath
if test -z "$CYGPATH_W"; then
  if (cygpath --version) >/dev/null 2>/dev/null; then
    CYGPATH_W='cygpath -w'
  else
    CYGPATH_W=echo
  fi
fi
AC_SUBST([CYGPATH_W])

# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
 AC_SUBST([PACKAGE], [$1])dnl
 AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
 AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl

_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl

# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo)
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
# We need awk for the "check" target.  The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
			     [_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
		  [_AM_DEPENDENCIES(CC)],
		  [define([AC_PROG_CC],
			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
		  [_AM_DEPENDENCIES(CXX)],
		  [define([AC_PROG_CXX],
			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
		  [_AM_DEPENDENCIES(OBJC)],
		  [define([AC_PROG_OBJC],
			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
])
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
m4trace:/usr/share/aclocal-1.11/init.m4:126: -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.11/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.11/lead-dot.m4:12: -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.11/maintainer.m4:19: -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 am_maintainer_other maintainer-specific portions of Makefiles])
  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
  AC_ARG_ENABLE([maintainer-mode],
[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
			  (and sometimes confusing) to the casual installer],
      [USE_MAINTAINER_MODE=$enableval],
      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
  MAINT=$MAINTAINER_MODE_TRUE
  AC_SUBST([MAINT])dnl

])
m4trace:/usr/share/aclocal-1.11/maintainer.m4:39: -1- AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
m4trace:/usr/share/aclocal-1.11/maintainer.m4:39: -1- AC_DEFUN([jm_MAINTAINER_MODE], [AC_DIAGNOSE([obsolete], [The macro `jm_MAINTAINER_MODE' is obsolete.
You should run autoupdate.])dnl
AM_MAINTAINER_MODE])
m4trace:/usr/share/aclocal-1.11/make.m4:14: -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.11/missing.m4:14: -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.11/missing.m4:24: -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 --run true"; then
  am_missing_run="$MISSING --run "
else
  am_missing_run=
  AC_MSG_WARN([`missing' script is too old or missing])
fi
])
m4trace:/usr/share/aclocal-1.11/mkdirp.m4:11: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
dnl while keeping a definition of mkdir_p for backward compatibility.
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
dnl Makefile.ins that do not define MKDIR_P, so we do our own
dnl adjustment using top_builddir (which is defined more often than
dnl MKDIR_P).
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
case $mkdir_p in
  [[\\/$]]* | ?:[[\\/]]*) ;;
  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
esac
])
m4trace:/usr/share/aclocal-1.11/options.m4:13: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
m4trace:/usr/share/aclocal-1.11/options.m4:19: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
m4trace:/usr/share/aclocal-1.11/options.m4:25: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
m4trace:/usr/share/aclocal-1.11/options.m4:31: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
m4trace:/usr/share/aclocal-1.11/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.11/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name.  Accept space and tab only in the latter.
am_lf='
'
case `pwd` in
  *[[\\\"\#\$\&\'\`$am_lf]]*)
    AC_MSG_ERROR([unsafe absolute working directory name]);;
esac
case $srcdir in
  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
esac

# Do `set' in a subshell so we don't clobber the current shell's
# arguments.  Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
   if test "$[*]" = "X"; then
      # -L didn't work.
      set X `ls -t "$srcdir/configure" conftest.file`
   fi
   rm -f conftest.file
   if test "$[*]" != "X $srcdir/configure conftest.file" \
      && test "$[*]" != "X conftest.file $srcdir/configure"; then

      # If neither matched, then we have a broken ls.  This can happen
      # if, for instance, CONFIG_SHELL is bash and it inherits a
      # broken ls alias from the environment.  This has actually
      # happened.  Such a system could not be considered "sane".
      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
alias in your environment])
   fi

   test "$[2]" = conftest.file
   )
then
   # Ok.
   :
else
   AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT(yes)])
m4trace:/usr/share/aclocal-1.11/silent.m4:14: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules],
[  --enable-silent-rules          less verbose build output (undo: `make V=1')
  --disable-silent-rules         verbose build output (undo: `make V=0')])
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
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
m4trace:/usr/share/aclocal-1.11/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.11/substnot.m4:14: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
m4trace:/usr/share/aclocal-1.11/substnot.m4:19: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
m4trace:/usr/share/aclocal-1.11/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.
AM_MISSING_PROG([AMTAR], [tar])
m4_if([$1], [v7],
     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
     [m4_case([$1], [ustar],, [pax],,
              [m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
# Solaris sh will not grok spaces in the rhs of `-'.
for _am_tool in $_am_tools
do
  case $_am_tool in
  gnutar)
    for _am_tar in tar gnutar gtar;
    do
      AM_RUN_LOG([$_am_tar --version]) && break
    done
    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
    am__untar="$_am_tar -xf -"
    ;;
  plaintar)
    # Must skip GNU tar: if it does not support --format= it doesn't create
    # ustar tarball either.
    (tar --version) >/dev/null 2>&1 && continue
    am__tar='tar chf - "$$tardir"'
    am__tar_='tar chf - "$tardir"'
    am__untar='tar xf -'
    ;;
  pax)
    am__tar='pax -L -x $1 -w "$$tardir"'
    am__tar_='pax -L -x $1 -w "$tardir"'
    am__untar='pax -r'
    ;;
  cpio)
    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
    am__untar='cpio -i -H $1 -d'
    ;;
  none)
    am__tar=false
    am__tar_=false
    am__untar=false
    ;;
  esac

  # If the value was cached, stop now.  We just wanted to have am__tar
  # and am__untar set.
  test -n "${am_cv_prog_tar_$1}" && break

  # tar/untar a dummy directory, and stop if the command works
  rm -rf conftest.dir
  mkdir conftest.dir
  echo GrepMe > conftest.dir/file
  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
  rm -rf conftest.dir
  if test -s conftest.tar; then
    AM_RUN_LOG([$am__untar <conftest.tar])
    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/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:607: -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) 2010 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."

while test $[#] != 0
do
  case $[1] in
    --version | --v* | -V )
      echo "$lt_cl_version"; exit 0 ;;
    --help | --h* | -h )
      echo "$lt_cl_help"; exit 0 ;;
    --debug | --d* | -d )
      debug=: ;;
    --quiet | --q* | --silent | --s* | -q )
      lt_cl_silent=: ;;

    -*) AC_MSG_ERROR([unrecognized option: $[1]
Try \`$[0] --help' for more information.]) ;;

    *) AC_MSG_ERROR([unrecognized argument: $[1]
Try \`$[0] --help' for more information.]) ;;
  esac
  shift
done

if $lt_cl_silent; then
  exec AS_MESSAGE_FD>/dev/null
fi
_LTEOF

cat >>"$CONFIG_LT" <<_LTEOF
_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
_LTEOF

cat >>"$CONFIG_LT" <<\_LTEOF
AC_MSG_NOTICE([creating $ofile])
_LT_OUTPUT_LIBTOOL_COMMANDS
AS_EXIT(0)
_LTEOF
chmod +x "$CONFIG_LT"

# configure is writing to config.log, but config.lt does its own redirection,
# appending to config.log, which fails on DOS, as config.log is still kept
# open by configure.  Here we exec the FD to /dev/null, effectively closing
# config.log, so it can be properly (re)opened and appended to by config.lt.
lt_cl_success=:
test "$silent" = yes &&
  lt_config_lt_args="$lt_config_lt_args --quiet"
exec AS_MESSAGE_LOG_FD>/dev/null
$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
exec AS_MESSAGE_LOG_FD>>config.log
$lt_cl_success || AS_EXIT(1)
])
m4trace:m4/libtool.m4:788: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
m4trace:m4/libtool.m4:799: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
m4_case([$1],
  [C],			[_LT_LANG(C)],
  [C++],		[_LT_LANG(CXX)],
  [Java],		[_LT_LANG(GCJ)],
  [Fortran 77],		[_LT_LANG(F77)],
  [Fortran],		[_LT_LANG(FC)],
  [Windows Resource],	[_LT_LANG(RC)],
  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
    [_LT_LANG($1)],
    [m4_fatal([$0: unsupported language: "$1"])])])dnl
])
m4trace:m4/libtool.m4:861: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
m4trace:m4/libtool.m4:861: -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:862: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
m4trace:m4/libtool.m4:862: -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:863: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
m4trace:m4/libtool.m4:863: -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:864: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
m4trace:m4/libtool.m4:864: -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:865: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
m4trace:m4/libtool.m4:865: -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:1181: -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:1445: -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:1487: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
m4trace:m4/libtool.m4:1487: -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:1496: -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:1531: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
m4trace:m4/libtool.m4:1531: -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:1538: -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
    ;;

  osf*)
    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
    # nice to cause kernel panics so lets avoid the loop below.
    # First set a reasonable default.
    lt_cv_sys_max_cmd_len=16384
    #
    if test -x /sbin/sysconfig; then
      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
        *1*) lt_cv_sys_max_cmd_len=-1 ;;
      esac
    fi
    ;;
  sco3.2v5*)
    lt_cv_sys_max_cmd_len=102400
    ;;
  sysv5* | sco5v6* | sysv4.2uw2*)
    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
    if test -n "$kargmax"; then
      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
    else
      lt_cv_sys_max_cmd_len=32768
    fi
    ;;
  *)
    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
    if test -n "$lt_cv_sys_max_cmd_len"; then
      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
    else
      # Make teststring a little bigger before we do anything with it.
      # a 1K string should be a reasonable start.
      for i in 1 2 3 4 5 6 7 8 ; do
        teststring=$teststring$teststring
      done
      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
      # If test is not a shell built-in, we'll probably end up computing a
      # maximum length that is only half of the actual maximum length, but
      # we can't tell.
      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
	      test $i != 17 # 1/2 MB should be enough
      do
        i=`expr $i + 1`
        teststring=$teststring$teststring
      done
      # Only check the string length outside the loop.
      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
      teststring=
      # Add a significant safety factor because C++ compilers can tack on
      # massive amounts of additional arguments before passing them to the
      # linker.  It appears as though 1/2 is a usable value.
      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
    fi
    ;;
  esac
])
if test -n $lt_cv_sys_max_cmd_len ; then
  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
else
  AC_MSG_RESULT(none)
fi
max_cmd_len=$lt_cv_sys_max_cmd_len
_LT_DECL([], [max_cmd_len], [0],
    [What is the maximum length of a command?])
])
m4trace:m4/libtool.m4:1671: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
m4trace:m4/libtool.m4:1671: -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:1782: -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:1899: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
m4trace:m4/libtool.m4:1899: -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:2884: -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:2946: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
m4trace:m4/libtool.m4:2946: -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:2969: -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:3058: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
m4trace:m4/libtool.m4:3058: -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:3059: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
m4trace:m4/libtool.m4:3059: -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:3353: -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:3443: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
m4trace:m4/libtool.m4:3443: -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:3444: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
m4trace:m4/libtool.m4:3444: -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:3514: -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:3533: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
m4trace:m4/libtool.m4:3533: -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:7498: -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:7507: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
m4trace:m4/libtool.m4:7507: -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:7514: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
])
m4trace:m4/libtool.m4:7519: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
m4trace:m4/libtool.m4:7519: -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:7639: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
m4trace:m4/libtool.m4:7639: -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/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:343: -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:343: -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'
macro_revision='1.3293'
_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/ost_cxx.m4:24: -1- AC_DEFUN([OST_CXX_PROGRAMMING], [
    AC_REQUIRE([OST_PROG_CC_POSIX])
    AC_PROG_CPP
    AC_PROG_CXX
    AC_PROG_CXXCPP

    dnl
    dnl Check for common C++ portability problems
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    dnl Check whether we have bool
    AC_CACHE_CHECK(whether ${CXX} has built-in bool type,
        ac_cv_cxx_bool_type,
        AC_TRY_COMPILE(,
            [bool b1=true; bool b2=false;],
            ac_cv_cxx_bool_type=yes,
            ac_cv_cxx_bool_type=no
        )
    )

    if test $ac_cv_cxx_bool_type = yes ; then
        AC_DEFINE(HAVE_BOOL_TYPE, [1], [have bool type])
    fi

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
    AH_BOTTOM([
#ifndef HAVE_BOOL_TYPE
typedef enum { true=1, false=0 } bool;
#endif


    ])
])
m4trace:m4/ost_cxx.m4:64: -1- AC_DEFUN([OST_CXX_NEW_INIT], [
AC_REQUIRE([OST_PROG_CC_POSIX])
# AC_PROG_CPP
# AC_PROG_CXX
# AC_PROG_CXXCPP

    dnl
    dnl Check for common C++ portability problems
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    dnl Check whether we have bool
    AC_CACHE_CHECK([whether ${CXX} has new(size_t,void*)],
        ac_cv_cxx_new_init,
        AC_TRY_COMPILE([#include <new>
#include <iostream>
using namespace std;],
        [int* p1 = new int();
int* p2 = new (p1) int();
return 0;],
            ac_cv_cxx_new_init=yes,
            ac_cv_cxx_new_init=no
        )
    )

    if test $ac_cv_cxx_new_init = yes ; then
        AC_DEFINE(CCXX_HAVE_NEW_INIT, [1], [have new with init])
    fi

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
    AH_BOTTOM([
#ifdef CCXX_NAMESPACES
#define USING(x) using namespace x;
#else
#define USING(x)
#endif

#ifdef  __KCC
#define KAI_NONSTD_IOSTREAM 1
#endif
    ])
])
m4trace:m4/ost_cxx.m4:112: -1- AC_DEFUN([OST_CXX_ARRAYS], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])
    dnl
    dnl Determine C++ support for dynamic sized arrays in stack frame.
    dnl

    AC_LANG_SAVE
    AC_LANG_CPLUSPLUS
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""

    AC_CACHE_CHECK(wheather dynamic arrays in stack frame,
        ost_cv_cxx_array,
        AC_TRY_COMPILE(,[
            int x;
            int y\[x\];
            return 0;
        ], ost_cv_cxx_array=no, ost_cv_array=yes)
    )
    if test "$ost_cv_cxx_array" = yes ; then
        AC_DEFINE(HAVE_DYN_ARRAY, [1], [c++ dynamic arrays in stack frame])
    fi
    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
])
m4trace:m4/ost_cxx.m4:138: -1- AC_DEFUN([OST_CXX_IOSTREAM], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])
    dnl
    dnl Determine kind of C++ iostream support.
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS
    AC_CACHE_CHECK(wheather old style iostreams,
        ost_cv_cxx_iostream,
        AC_TRY_COMPILE([
#include <iostream>
using namespace std;

class mystr : public streambuf, public iostream
{
    mystr();
};

mystr::mystr() : streambuf(), iostream((streambuf *)this)
{
}
        ],[return 0;],
            ost_cv_cxx_iostream=no,
            ost_cv_cxx_iostream=yes
        )
    )
    if test $ost_cv_cxx_iostream = yes ; then
        AC_DEFINE(HAVE_OLD_IOSTREAM, [1], [old style iostreams])
    fi
    AC_CHECK_HEADERS(sstream)

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
])
m4trace:m4/ost_cxx.m4:176: -1- AC_DEFUN([OST_CXX_NAMESPACE], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])

    dnl
    dnl Determine if C++ supports namespaces.
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS
    AC_CACHE_CHECK(whether ${CXX} supports namespace,
    ost_cv_cxx_namespace,
        AC_TRY_COMPILE([
#include <iostream>
namespace Test { using namespace std; }],[return 0;],
            ost_cv_cxx_namespace=yes,
            ost_cv_cxx_namespace=no
        )
    )

    if test "$ost_cv_cxx_namespace" = yes ; then
        AC_DEFINE(CCXX_NAMESPACES, [1], [has c++ namespaces])
    fi

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
])
m4trace:m4/ost_cxx.m4:205: -1- AC_DEFUN([OST_CXX_MUTABLE], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])

    dnl
    dnl Determine if C++ supports mutable members.
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    AC_CACHE_CHECK(whether ${CXX} supports mutable,
        ost_cv_cxx_mutable,
        AC_TRY_COMPILE([
class t {mutable int i;};], [return 0;],
            ost_cv_cxx_mutable=yes,
            ost_cv_cxx_mutable=no
        )
    )

    if test $ost_cv_cxx_mutable = no ; then
        COMMON_FLAGS="$COMMON_FLAGS -Dmutable"
    fi

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
])
m4trace:m4/ost_cxx.m4:234: -1- AC_DEFUN([OST_CXX_NOEXCEPTIONS], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])

    dnl
    dnl Disable C++ exception handling whenever possible.
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    dnl strip -fexceptions flag if used
    optflags=$CXXFLAGS
    if test ! -z "$optflags" ; then
        CXXFLAGS=""
        for opt in $optflags ; do
            case $opt in
            *rtti*)
                ;;
            *exceptions*)
                ;;
            *)
                CXXFLAGS="$CXXFLAGS $opt"
            ;;
            esac
        done
    fi
    AC_CACHE_CHECK(whether ${CXX} supports -fno-exceptions,
        ac_cv_cxx_noexception_flag,[
        echo 'void f(){}' >conftest.cpp
        if test -z "`${CXX} -fno-exceptions -c conftest.cpp 2>&1`"; then
            COMMON_FLAGS="$COMMON_FLAGS -fno-exceptions"
            ac_cv_cxx_noexception_flag=yes
        else
            ac_cv_cxx_noexception_flag=no
        fi
        rm -f conftest*
    ])

    AC_CACHE_CHECK(whether ${CXX} supports -fno-rtti,
        ac_cv_cxx_no_rtti_flag,[
        echo '#include <sstream>' >conftest.cpp
        echo 'void f(){}' >>conftest.cpp
        if test -z "`${CXX} -fno-rtti -c conftest.cpp 2>&1`"; then
            COMMON_FLAGS="$COMMON_FLAGS -fno-rtti"
            ac_cv_cxx_no_rtti_flag=yes
        else
            ac_cv_cxx_no_rtti_flag=no
        fi
        rm -f conftest*
    ])

    AC_CACHE_CHECK(whether ${CXX} supports -fno-check-new,
        ac_cv_cxx_no_check_new_flag,[
        echo 'void f(){}' >conftest.cpp
        if test -z "`${CXX} -fno-check-new -c conftest.cpp 2>&1`"; then
            COMMON_FLAGS="$COMMON_FLAGS -fno-check-new"
            ac_cv_cxx_no_check_new_flag=yes
        else
            ac_cv_cxx_no_check_new_flag=no
        fi
        rm -f conftest*
    ])

    AC_CACHE_CHECK(whether ${CXX} supports -finline,
        ac_cv_cxx_inline_flag,[
        echo 'void f(){}' >conftest.cpp
        if test -z "`${CXX} -finline -c conftest.cpp 2>&1`"; then
            COMMON_FLAGS="$COMMON_FLAGS -finline"
            ac_cv_cxx_inline_flag=yes
        else
            ac_cv_cxx_inline_flag=no
        fi
        rm -f conftest*
    ])


    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
])
m4trace:m4/ost_cxx.m4:316: -1- AC_DEFUN([OST_CXX_EXCEPTIONS], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])

    dnl
    dnl Enable C++ exception handling whenever possible.
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    dnl strip -fno-exceptions flag if used
    optflags=$CXXFLAGS
    if test ! -z "$optflags" ; then
        CXXFLAGS=""
        for opt in $optflags ; do
            case $opt in
            *no-rtti*)
                ;;
            *omit-frame-pointer*)
                ;;
            *no-exceptions*)
                ;;
            *)
                CXXFLAGS="$CXXFLAGS $opt"
            ;;
            esac
        done
    fi

    dnl Check for exception handling
    AC_CACHE_CHECK(whether ${CXX} supports -fhandle-exceptions,
        ac_cv_cxx_exception_flag,[
        echo 'void f(){}' >conftest.cpp
        if test -z "`${CXX} -fhandle-exceptions -c conftest.cpp 2>&1`"; then
            ac_cv_cxx_exception_flag=yes
            COMMON_FLAGS="$COMMON_FLAGS -fhandle-exceptions"
        else
            ac_cv_cxx_exception_flag=no
        fi
        rm -f conftest*
    ])

    if test $ac_cv_cxx_exception_flag = "yes" ; then
        ac_cv_cxx_exception_handling=yes
    else
        AC_CACHE_CHECK(whether ${CXX} supports exception handling,
        ac_cv_cxx_exception_handling,
        AC_TRY_COMPILE(
            [void f(void)
            {
                throw "abc";
            }
            void g(void)
            {
                try {
                    f();
                }
                catch(char*){}
            }
            ],,
            ac_cv_cxx_exception_handling=yes,
            ac_cv_cxx_exception_handling=no
        )
    )
    fi

    if test $ac_cv_cxx_exception_handling = yes ; then
        AC_DEFINE(CCXX_EXCEPTIONS, [1], [has c++ exception handling])
        AC_CHECK_HEADERS(exception)
    fi

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
    AH_BOTTOM([
#ifndef CCXX_EXCEPTIONS
/* disable HAVE_EXCEPTION */
#ifdef  HAVE_EXCEPTION
#undef  HAVE_EXCEPTION
#endif
/* throw - replacement to throw an exception */
#define THROW(x) abort()
/* throw - replacement to declare an exception */
#define THROWS(x)
/* throw - for empty list */
#define NEW_THROWS
#define THROWS_EMPTY
/*
 * work around dangeling if/else combinations:
 */
#else
#define THROW(x) throw x
#define THROWS(x) throw(x)
#define NEW_THROWS throw()
#define THROWS_EMPTY throw()
#endif

    ])
])
m4trace:m4/ost_debug.m4:23: -1- AC_DEFUN([OST_DEBUG], [
    AC_MSG_CHECKING(for debugging)
    AC_ARG_ENABLE(debug, [  --enable-debug          compile for debugging])
    if test -z "$enable_debug" ; then
        enable_debug="no"
    elif test $enable_debug = "yes" ; then
        CXXFLAGS="${CXXFLAGS} -g -DDEBUG"
#       CXXFLAGS=`echo $CFLAGS | sed 's/-O.//'`
    fi
    AC_MSG_RESULT([$enable_debug])
    AC_MSG_CHECKING(for profiling)
    AC_ARG_ENABLE(profiling, [  --enable-profiling      compile for profiling])
    if test -z "$enable_profiling" ; then
        enable_profiling="no"
    elif test "$enable_profiling" = "yes" ; then
        CXXFLAGS="${CXXFLAGS} -p"
    fi
    AC_MSG_RESULT([$enable_profiling])
])
m4trace:m4/ost_dynamic.m4:23: -1- AC_DEFUN([OST_CC_DYNAMIC], [
    DYN_LOADER=''
    ost_cv_dynloader=no
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_HEADERS(dlfcn.h)
    AC_CHECK_LIB(dld, shl_load,
        [DYN_LOADER=-ldld,
        AC_DEFINE(HAVE_SHL_LOAD, [1], [have shload plugins])])
    AC_CHECK_LIB(dl, dlopen, [DYN_LOADER=-ldl])
    if test ! -z "$DYN_LOADER" ; then
        ost_cv_dynloader=yes
        AC_DEFINE(HAVE_MODULES, [1], [support for plugin modules])
    else
        AC_CHECK_LIB(c, dlopen, [
            ost_cv_dynloader=yes
            AC_DEFINE(HAVE_MODULES, [1])
        ],[
            AC_CHECK_HEADERS(mach-o/dyld.h,[
                ost_cv_dynloader=yes
                AC_DEFINE(HAVE_MODULES, [1])
                AC_DEFINE(HAVE_MACH_DYLD, [1], [mach dybloader])
            ])
        ])
    fi
    AC_SUBST(DYN_LOADER)
])
m4trace:m4/ost_endian.m4:23: -1- AC_DEFUN([OST_CC_ENDIAN], [
    AC_REQUIRE([AC_CANONICAL_SYSTEM])
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_HEADER(endian.h,[
        AC_DEFINE(HAVE_ENDIAN_H, [1], [have endian header])
    ],[
        AC_CHECK_HEADER(sys/isa_defs.h,[
            AC_DEFINE(HAVE_SYS_ISA_DEFS_H, [1], [solaris endian])
            ],[
            case "$target_cpu" in
            alpha* | i?86)
                AC_DEFINE(__BYTE_ORDER, [1234], [endian byte order])
                ;;
            hppa* | m68* | mips* | powerpc* | sparc*)
                AC_DEFINE(__BYTE_ORDER, [4321])
                ;;
            esac
        ])
    ])
    AH_BOTTOM([
#if defined(HAVE_ENDIAN_H)
 #include <endian.h>
#elif defined(HAVE_SYS_ISA_DEFS_H)
 #include <sys/isa_defs.h>
 #ifdef _LITTLE_ENDIAN
  #define   __BYTE_ORDER 1234
 #else
  #define   __BYTE_ORDER 4321
 #endif
 #if _ALIGNMENT_REQUIRED > 0
  #define   __BYTE_ALIGNMENT _MAX_ALIGNMENT
 #else
  #define   __BYTE_ALIGNMENT 1
 #endif
#endif

#ifndef __LITTLE_ENDIAN
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#endif

#ifndef __BYTE_ORDER
#define __BYTE_ORDER 1234
#endif

#ifndef __BYTE_ALIGNMENT
#if defined(SPARC) || defined(sparc)
#if defined(__arch64__) || defined(__sparcv9)
#define __BYTE_ALIGNMENT 8
#else
#define __BYTE_ALIGNMENT 4
#endif
#endif
#endif

#ifndef __BYTE_ALIGNMENT
#define __BYTE_ALIGNMENT 1
#endif

    ])
])
m4trace:m4/ost_getopt.m4:23: -1- AC_DEFUN([OST_CC_GETOPT], [
    ost_cv_libgetopt_long=false
    GETOPT_LIBS=""
    LIBGETOPTOBJS=""
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_FUNCS(getopt,[
        AC_DEFINE(HAVE_GETOPT, [1], [have getopt header])
    ],[
        AC_CHECK_LIB(m, getopt,[
            AC_DEFINE(HAVE_GETOPT, [1])
            GETOPT_LIBS="-lm"
        ])
    ])
    AC_CHECK_HEADERS(getopt.h)
    AC_CHECK_LIB(gnugetopt, getopt_long,[
        AC_DEFINE(HAVE_GETOPT_LONG, [1], [have gnugetopt lib])
        GETOPT_LIBS="-lgnugetopt $GETOPT_LIBS"
        LIBS="$LIBS -lgnugetopt"],[
        AC_CHECK_FUNCS(getopt_long,[
            AC_DEFINE(HAVE_GETOPT_LONG, [1])
        ],[
            LIBGETOPTOBJS="getopt.c getopt1.c"
        ])
    ])
    AC_SUBST(GETOPT_LIBS)
    AC_SUBST(LIBGETOPTOBJS)
])
m4trace:m4/ost_maint.m4:23: -1- AC_DEFUN([OST_AUTOMAKE_MODE], [
    AC_MSG_CHECKING([for genorated automake files])
    if test -z "[$1]" ; then
        ost_AUTOMAKE_TEST=Makefile.in
    else
        ost_AUTOMAKE_TEST=[$1]
    fi
    if test ! -f $ost_AUTOMAKE_TEST ; then
        AC_MSG_RESULT(missing)
        automake -a
    else
        AC_MSG_RESULT(found)
    fi
])
m4trace:m4/ost_maint.m4:38: -1- AC_DEFUN([OST_MAINTAINER_MODE], [
    AM_MAINTAINER_MODE
    if test -z "$MAINT" ; then
        AC_MSG_CHECKING([for maintainer ftp distribution directory])
        if test -d ~ftp/pub ; then
            FTPDIR=~ftp/pub
            AC_MSG_RESULT(found)
        else
            AC_MSG_RESULT(missing)
        fi
    fi
    AC_SUBST(FTPDIR)
])
m4trace:m4/ost_maint.m4:52: -1- AC_DEFUN([AC_SUBST_DIR], [
    ifelse($2,,,$1="[$]$2")
    result="***"
    prior="A"
    while test "$prior" != "$result" ; do
        prior=`(echo "[$]$1")`
        $1=`(
        test "x$prefix" = xNONE && prefix="$ac_default_prefix"
        test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
        eval echo \""[$]$1"\"
        )`
        result=`(echo "[$]$1")`
    done
    AC_SUBST($1)
])
m4trace:m4/ost_misc.m4:23: -1- AC_DEFUN([OST_LIB_ZLIB], [
    AC_REQUIRE([OST_SYS_POSIX])
    ZSTREAM_LIBS=""
    ost_cv_lib_zlib=false
    AC_CHECK_HEADERS(zlib.h,[
        ZSTREAM_LIBS="-lz"
        AC_DEFINE(HAVE_ZLIB_H, [1], [have zlib header])
        ost_cv_lib_zlib=true])
    AC_SUBST(ZSTREAM_LIBS)
])
m4trace:m4/ost_misc.m4:34: -1- AC_DEFUN([OST_LIB_NOZLIB], [
    ZSTREAM_LIBS=""
    ost_cv_lib_zlib=false
    AC_SUBST(ZSTREAM_LIBS)
])
m4trace:m4/ost_poll.m4:23: -1- AC_DEFUN([OST_LIB_POLL], [
    AC_REQUIRE([OST_CC_SYSTIME])
    AC_CHECK_HEADERS(poll.h sys/poll.h sys/stream.h)
    AC_CHECK_FUNCS(poll)
    AH_BOTTOM([
#ifdef HAVE_POLL_H
#include <poll.h>
#else
#ifdef HAVE_SYS_POLL_H
#include <sys/poll.h>
#endif
#endif

#if defined(HAVE_POLL) && defined(POLLRDNORM)
#define USE_POLL
#endif

    ])
])
m4trace:m4/ost_posix.m4:23: -1- AC_DEFUN([OST_SYS_POSIX], [
    AC_REQUIRE([OST_PROG_CC_POSIX])
    AC_CACHE_CHECK(whether system meets Posix.1,
        ost_cv_sys_posix1,
        AC_TRY_COMPILE([
            #include <sys/types.h>
            #include <unistd.h>
        ],[
            #ifndef _POSIX_VERSION
            fatal
            #endif
        ],
            ost_cv_sys_posix1=yes,
            ost_cv_sys_posix1=no
        )
    )
    if test $ost_cv_sys_posix1 = no ; then
        AC_CHECK_HEADERS(unistd.h)
    else
        AC_DEFINE(HAVE_UNISTD_H, [1], [have unix header])
    fi
    AC_CHECK_HEADERS(features.h)
    AH_TOP([
/* hack for BROKEN autoheader, since it will not predicitably order
   macros by any obvious means. */

#undef HAVE_UNISTD_H
#undef HAVE_FEATURES_H
#undef HAVE_SYS_TYPES_H

#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif

#ifndef WIN32
#ifdef  HAVE_FEATURES_H
#include <features.h>
#endif
#endif

#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
    ])
])
m4trace:m4/ost_posix.m4:69: -1- AC_DEFUN([OST_CC_FCNTL], [
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_HEADERS(fcntl.h sys/fcntl.h)
AH_BOTTOM([

#ifndef HAVE_FCNTL_H
#ifdef HAVE_SYS_FCNTL_H
#include <sys/fcntl.h>
#endif
#else
#include <fcntl.h>
#ifndef O_NDELAY
#ifdef HAVE_SYS_FCNTL_H
#include <sys/fcntl.h>
#endif
#endif
#endif
    ])
])
m4trace:m4/ost_prog.m4:23: -1- AC_DEFUN([OST_PROG_CC_POSIX], [
    AC_PROG_CC
    AC_PROG_CPP
    AC_ISC_POSIX
    AC_MINIX
])
m4trace:m4/ost_prog.m4:30: -1- AC_DEFUN([OST_PROG_COMMON], [
    AC_REQUIRE([AC_PROG_INSTALL])
    AC_REQUIRE([AC_PROG_MAKE_SET])
])
m4trace:m4/ost_prog.m4:35: -1- AC_DEFUN([OST_PROJ_LIBRARY], [
    AC_REQUIRE([AM_PROG_LIBTOOL])
    AC_REQUIRE([AC_PROG_RANLIB])
    if test ! -z "[$2]" ; then
        if test ! -z "[$3]" ; then
            LT_[$1]_VERSION="-version-info [$3] -release [$2]"
        else
            LT_[$1]_VERSION="-release [$2]"
        fi
        AC_SUBST(LT_[$1]_VERSION)
    fi
])
m4trace:m4/ost_prog.m4:48: -1- AC_DEFUN([OST_PROG_LIBVER], [
    LT_MAJOR="`echo $LT_VERSION | sed s/:.*$//`"
    LT_MINOR="`echo $LT_VERSION | sed s/.*://`"
    LT_SUBVER="$LT_MAJOR.$LT_MINOR"
    AC_SUBST(LT_RELEASE)
    AC_SUBST(LT_SUBVER)
    AC_SUBST(LT_MAJOR)
    AC_SUBST(LT_MINOR)
])
m4trace:m4/ost_prog.m4:59: -1- AC_DEFUN([OST_PROG_LIBRARY], [
    AC_REQUIRE([AM_PROG_LIBTOOL])
    AC_REQUIRE([AC_PROG_RANLIB])
    if test ! -z "[$2]" ; then
        LT_[$1]_VERSION="-version-info [$2]"
        AC_SUBST(LT_[$1]_VERSION)
    fi
])
m4trace:m4/ost_pthread.m4:23: -1- AC_DEFUN([OST_LIB_PTHREAD], [
    AC_REQUIRE([OST_SYS_POSIX])
    AC_REQUIRE([OST_CC_SYSTIME])
    THREAD_FLAGS=""
    THREAD_LIBS=""
    ost_cv_thread_library="none"
    ost_cv_rt_library="none"
    ost_cv_cxx_mode=false

    AC_ARG_WITH(pthread, [  --with-pthread[=lib]      using specified pthread library],
        [if test "$withval" != "" ; then ost_cv_thread_library=$withval ; fi]
    )

    AC_ARG_WITH(linuxthreads, [  --with-linuxthreads       use linux kernel mode library
    ],[
        ost_cv_thread_library=lthread
        AC_DEFINE(WITH_LINUXTHREADS, [1], [bsd system using linuxthreads])
        if test "$withval" != "yes" ; then
            THREAD_FLAGS="-D__USE_GNU -D__USE_UNIX98 -I$withval $THREAD_FLAGS"
            CFLAGS="-D__USE_GNU -D__USE_UNIX98 -I$withval $CFLAGS"
        else
            THREAD_FLAGS="-D__USE_GNU -D__USE_UNIX98 -I/usr/local/include/pthread/linuxthreads $THREAD_FLAGS"
            CFLAGS="-D__USE_GNU -D__USE_UNIX98 -I/usr/local/include/pthread/linuxthreads $CFLAGS"
        fi
    ])

    AC_CHECK_HEADERS(pthread.h, [
        AC_DEFINE(HAVE_PTHREAD_H, [1], [posix thread header])
        ost_cv_posix_threads=yes],
        ost_cv_posix_threads=no)

    if test $ost_cv_posix_threads = no ; then
        AC_LANG_SAVE
        ac_save_CXXFLAGS="$CXXFLAGS"
        AC_LANG_CPLUSPLUS
        CXXFLAGS="$CXXFLAGS -pthread"
        AC_TRY_COMPILE([#include <pthread.h>],[],
            AC_DEFINE(HAVE_PTHREAD_H, [1])
            ost_cv_cxx_mode=true
            ost_cv_posix_threads=yes)
        CXXFLAGS="$ac_save_CXXFLAGS"
        AC_LANG_RESTORE
    fi

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    ost_cv_posix_atomic=no
    AC_CHECK_HEADERS(sys/atomic_op.h,[
        AC_DEFINE(HAVE_ATOMIC_AIX, [1], [atomic aix operations])
    ])
    AC_CHECK_HEADERS([sys/atomic.h],
        ost_cv_posix_sys_atomic=yes,
        ost_cv_posix_sys_atomic=no)
    if test $ost_cv_posix_sys_atomic = yes ; then
        AC_MSG_CHECKING([for atomic_t])
        AC_TRY_COMPILE([#include <sys/atomic.h>],[
            atomic_t at; at.counter = 1;
            atomic_dec_and_test(&at);
            atomic_sub(4, &at);
            atomic_inc(&at);
            atomic_add(3, &at);
        ],[
            ost_cv_posix_atomic=yes
            AC_DEFINE(HAVE_WORKING_SYS_ATOMIC_H, [1], [has usable atomic functions])],
            [ost_cv_posix_atomic=no])
        AC_MSG_RESULT($ost_cv_posix_atomic)
    fi

    if test 0 = 1 ; then
        dnl check for gcc's bits/atomicity and the atomic functions therein
        AC_CHECK_HEADERS([bits/atomicity.h],
            ost_cv_bits_atomicity=yes,
            ost_cv_bits_atomicity=no)
        if test $ost_cv_bits_atomicity = yes ; then
            AC_MSG_CHECKING([for _Atomic_word])
            AC_TRY_COMPILE([#include <bits/atomicity.h>],[
                _Atomic_word i = 0;
                __atomic_add(&i, 1);
                __exchange_and_add(&i, 1);
            ],
                [ost_cv_gcc_atomic=yes
                AC_DEFINE(HAVE_GCC_BITS_ATOMIC, [1], [has gcc atomic functions])],
                [ost_cv_gcc_atomic=no])
            AC_MSG_RESULT($ost_cv_gcc_atomic)

            AC_MSG_CHECKING([for __gnu_cxx::_Atomic_word])
            AC_TRY_COMPILE([#include <bits/atomicity.h>],[
                using namespace __gnu_cxx;
                _Atomic_word i = 0;
                __atomic_add(&i, 1);
                __exchange_and_add(&i, 1);
            ],[
                ost_cv_gcc_cxx_atomic=yes
                AC_DEFINE(HAVE_GCC_CXX_BITS_ATOMIC, [1],
                    [has __gnu_cxx atomic functions])
            ],[
                ost_cv_gcc_cxx_atomic=no
            ])
            AC_MSG_RESULT($ost_cv_gcc_cxx_atomic)
        fi
    fi

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"

    if test "$target" = NONE ; then
        targetdir=""
    else
        targetdir="$target"
    fi

    AC_CHECK_HEADERS(thread.h)
    if test "$prefix" = NONE ; then
        thrprefix="/usr/$targetdir/include"
        if test -d /usr/$targetdir/sys-include ; then
            thrprefix="$prefix/$targetdir/sys-include" ; fi
    else
        thrprefix="$prefix/$targetdir/include"
        if test -d "$prefix/$targetdir/sys-include" ; then
            thrprefix="$prefix/$targetdir/sys-include" ; fi
    fi

    if test ! -f $thrprefix/thread.h ; then
        thrprefix=/usr/include
    fi

    AC_SUBST(thrprefix)

    if test $ost_cv_posix_threads = yes ; then
        if test "$ost_cv_thread_library" = "none" ; then
            ost_cv_thread_flags=""
            for flags in -kthread -pthread -mthreads -pthreads -Kthread --threadsafe -mt ; do

                AC_MSG_CHECKING(whether ${CC-cc} accepts $flags)
                echo 'void f(){}' >conftest.c
                if test -z "`${CC-cc} $flags -c conftest.c 2>&1`"; then
                    ost_cv_thread_flags=$flags
                    AC_MSG_RESULT(yes)
                else
                    AC_MSG_RESULT(no)
                fi
                rm -f conftest*
                if test ! -z "$ost_cv_thread_flags" ; then break ; fi
            done
    #   if test "$ost_cv_prog_cc_pthread" = "no" ; then
    #      AC_CACHE_CHECK(whether ${CC-cc} accepts -mthreads,
    #       ost_cv_prog_cc_mthreads,
    #       [echo 'void f(){}' >conftest.c
    #       if test -z "`${CC-cc} -mthreads -c conftest.c 2>&1`"; then
    #           ost_cv_prog_cc_mthreads=yes
    # else
    #           ost_cv_prog_cc_mthreads=no
    #       fi
    #       rm -f conftest*
    #       ])
    #   fi
        ost_cv_thread_library=none
        AC_CHECK_LIB(pthread, pthread_self,
            ost_cv_thread_library=pthread,
            AC_CHECK_LIB(c_r, pthread_self,
                ost_cv_thread_library=c_r,
                AC_CHECK_LIB(pthread, pthread_kill,
                    ost_cv_thread_library=pthread,
                    AC_CHECK_LIB(pthreads, pthread_self,
                        ost_cv_thread_library=pthreads,
                        AC_CHECK_LIB(thread, pthread_self,
                            ost_cv_thread_library=thread)))))

        if test $ost_cv_thread_library = none ; then
            AC_CHECK_LIB(gthreads, pthread_self,[
                AC_CHECK_LIB(malloc, malloc)
                ost_cv_thread_library=gthreads])
        fi
        if test $ost_cv_thread_library = none ; then
            AC_CHECK_LIB(cma, pthread_self,
                ost_cv_thread_library=cma)
        fi

        if test $ost_cv_thread_library = none ; then
            AC_CHECK_LIB(c, pthread_self,
                ost_cv_thread_library=c)
        fi

        if test $ost_cv_thread_library = none ; then
            AC_MSG_ERROR(no library for posix threads found!)
        fi
    else
    #   ost_cv_prog_cc_pthread=no
    #   ost_cv_prog_cc_mthreads=no
        ost_cv_thread_flags=""
    fi

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_mach_thread_np,
        AC_DEFINE(HAVE_PTHREAD_MACH_THREAD_NP, [1], [has mach link])
        )

    AC_CHECK_LIB(${ost_cv_thread_library}, nanosleep,
        AC_DEFINE(HAVE_PTHREAD_NANOSLEEP, [1], [has nanosleep]),[
        AC_CHECK_LIB(posix4, nanosleep,[
            AC_DEFINE(HAVE_PTHREAD_NANOSLEEP, [1])
            THREAD_LIBS="$THREAD_LIBS -lposix4"
            ],[
            AC_CHECK_LIB(rt, nanosleep,[
                AC_DEFINE(HAVE_PTHREAD_NANOSLEEP, [1])
                ost_cv_rt_library="-lrt"])
            ])

        ])

    AC_CHECK_LIB(rt, clock_gettime,[
        ost_cv_rt_library="-lrt"
        AC_DEFINE(HAVE_HIRES_TIMER, [1], [have hires])
    ],[
        AC_CHECK_FUNCS(clock_gettime,[
            AC_DEFINE(HAVE_HIRES_TIMER, [1], [have hires])
        ])
    ])

    AC_CHECK_LIB(rt, mlockall,[
            AC_DEFINE(HAVE_MLOCK, [1], [have mlock])
            AC_DEFINE(HAVE_MLOCKALL, [1], [have memlockall])
            ost_cv_rt_library="-lrt"],
            [
            AC_CHECK_FUNCS(mlock)
            AC_CHECK_FUNCS(mlockall)
            ])

    if test "$ost_cv_rt_library" != "none" ; then
        THREAD_LIBS="$THREAD_LIBS $ost_cv_rt_library" ; fi

    if test ! -z "$ost_cv_thread_flags" ; then
        THREAD_LIBS="$THREAD_LIBS $ost_cv_thread_flags" ; fi
    if test "$ost_cv_thread_library" != "none" -a "$ost_cv_thread_library" != "c" ; then
        THREAD_LIBS="$THREAD_LIBS -l$ost_cv_thread_library" ; fi

    AC_MSG_CHECKING([if more special flags are required for pthreads])
        flag=no
        case "${host_cpu}-${host_os}" in
                *-aix* | *-freebsd*)     flag="-D_THREAD_SAFE";;
                *solaris* | alpha*-osf*) flag="-D_REENTRANT";;
        esac
        AC_MSG_RESULT(${flag})
        if test "x$flag" != xno; then
            THREAD_FLAGS="$flag"
        fi

    AC_SUBST(THREAD_FLAGS)
    AC_SUBST(THREAD_LIBS)
#   LIBS="$THREAD_LIBS $LIBS"
    if test "$ost_cv_thread_library" != "lthread" ; then
        AC_CHECK_HEADERS(pthread_np.h)
    fi
    AC_CHECK_HEADERS(semaphore.h)
    AC_CHECK_HEADERS(sched.h)
    AC_CHECK_HEADERS(sys/sched.h)
        AC_CHECK_FUNCS(sched_getscheduler)
    AC_CACHE_CHECK([for recursive mutex type support], ost_cv_mutex_recursive,
    [
    ost_cv_mutex_recursive="none"

    if test "$ost_cv_cxx_mode" = true ; then
        AC_LANG_SAVE
        AC_LANG_CPLUSPLUS
            ac_save_CXXFLAGS="$CXXFLAGS"
            CXXFLAGS="$CXXFLAGS -pthread"
    fi

    AC_TRY_COMPILE(
        [#include <pthread.h>],
        [
        #ifndef PTHREAD_MUTEXTYPE_RECURSIVE
        #ifdef PTHREAD_MUTEX_RECURSIVE
        #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE
        #endif
        #endif
        return (int)PTHREAD_MUTEXTYPE_RECURSIVE;
        ],
        ost_cv_mutex_recursive="portable",
        [
        AC_EGREP_HEADER(PTHREAD_MUTEXTYPE_RECURSIVE_NP,pthread.h,
            ost_cv_mutex_recursive=non-portable)
        AC_EGREP_HEADER(PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP, pthread.h,
            ost_cv_mutex_recursive=lthread)
        AC_EGREP_HEADER(PTHREAD_MUTEX_RECURSIVE_NP,pthread.h,
            ost_cv_mutex_recursive=linux)
        AC_EGREP_HEADER(MUTEX_TYPE_COUNTING_FAST,pthread.h,
            ost_cv_mutex_recursive=counting)
        ])
        if test $ost_cv_mutex_recursive = "none" ; then
            if test $ost_cv_thread_library = "lthread" ; then
                ost_cv_mutex_recursive=linux
            fi
        fi
    rm -f conftest*
    ])

    if test $ost_cv_mutex_recursive = "none" ; then
        AC_TRY_COMPILE(
            [#include <pthread.h>],
            [return MUTEX_TYPE_COUNTING_FAST;],
            ost_cv_mutex_recursive=counting)
    fi

    if test "$ost_cv_cxx_mode" = true ; then
        CXXFLAGS="$ac_save_CXXFLAGS"
        AC_LANG_RESTORE
    fi


    case $ost_cv_mutex_recursive in
    non-portable)
        AC_DEFINE(PTHREAD_MUTEXTYPE_RECURSIVE,
            PTHREAD_MUTEXTYPE_RECURSIVE_NP, [mutex type])
        ;;
    linux)
        AC_DEFINE(PTHREAD_MUTEXTYPE_RECURSIVE,
            PTHREAD_MUTEX_RECURSIVE_NP)
        ;;
    counting)
        AC_DEFINE(PTHREAD_MUTEXTYPE_RECURSIVE,
            MUTEX_TYPE_COUNTING_FAST)
        ;;
    esac

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_mutexattr_settype,
        AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETTYPE, [1], [has setttype]),
        [
        AC_CHECK_LIB(${ost_cv_thread_library}, pthread_mutexattr_settype_np,
            AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETTYPE_NP,
                [1], [has non portable settype]))
        AC_CHECK_LIB(${ost_cv_thread_library}, pthread_mutexattr_setkind_np,
            AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETKIND_NP,
                [1], [has non portable setkind]))
        ]
    )

    ost_cv_thread_rwlock=false
    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_rwlock_init,[
        ost_cv_thread_rwlock=true
        AC_DEFINE(HAVE_PTHREAD_RWLOCK, [1], [has rwlock support])])

    AC_CHECK_LIB(c, pread,[
        AC_DEFINE(HAVE_PREAD_PWRITE, [1], [has pwrite])],[
        AC_CHECK_LIB(${ost_cv_thread_library}, pread,[
            AC_DEFINE(HAVE_PREAD_PWRITE, [1])],[
            AC_CHECK_LIB(c_r, pread,[AC_DEFINE(HAVE_PREAD_PWRITE)])
        ])
    ])

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_suspend,
        AC_DEFINE(HAVE_PTHREAD_SUSPEND, [1], [has suspend]))

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_attr_setstacksize,
        AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE, [1], [has stack size]))

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_yield_np,
        AC_DEFINE(HAVE_PTHREAD_YIELD_NP, [1], [has np yield]),[
        AC_CHECK_LIB(${ost_cv_thread_library}, pthread_yield,
            AC_DEFINE(HAVE_PTHREAD_YIELD, [1], [has yield]),[
            AC_CHECK_LIB(${ost_cv_thread_library}, sched_yield,
                AC_DEFINE(HAVE_PTHREAD_SCHED_YIELD, [1], [has sched yield]))
            ])
        ])

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_cancel,[
        AC_DEFINE(HAVE_PTHREAD_CANCEL, [1], [has cancel])
        AC_CHECK_LIB(${ost_cv_thread_library},
            pthread_setcanceltype,
            AC_DEFINE(HAVE_PTHREAD_SETCANCELTYPE, [1], [has setcanceltype]),
            AC_CHECK_LIB($ost_cv_thread_library, pthread_setcanel,
                AC_DEFINE(HAVE_PTHREAD_SETCANCEL, [1], [has setcancel])))
        ],[
        AC_CHECK_LIB(${ost_cv_thread_library},
            pthread_setcanceltype,[
            AC_DEFINE(HAVE_PTHREAD_CANCEL)
            AC_DEFINE(HAVE_PTHREAD_SETCANCELTYPE)])

        ])

    AC_CHECK_LIB(${ost_cv_thread_library}, pthread_delay_np,
        AC_DEFINE(HAVE_PTHREAD_DELAY_NP, [1], [has non portable delay]))

    fi

    UNAME=`uname`
    if test "$UNAME" = "AIX" ; then
        AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
        CC=$PTHREAD_CC
        AC_DEFINE(COMMON_AIX_FIXES, [1], [aix fixes needed])
    fi

    AH_BOTTOM([
#ifdef HAVE_THREAD_H
#include "@thrprefix@/thread.h"
#if defined(i386) && defined(__svr4__) && !defined(__sun)
#define _THR_UNIXWARE
#endif
#if defined(__SVR4) && defined(__sun)
#define _THR_SUNOS5
#else
#if defined(__SVR4__) && defined(__SUN__)
#define _THR_SUNOS5
#endif
#endif
#endif

#ifdef HAVE_WORKING_SYS_ATOMIC_H
#include <sys/atomic.h>
#define HAVE_ATOMIC
#elif defined(HAVE_ATOMIC_AIX)
#include <sys/atomic_op.h>
#ifndef HAVE_ATOMIC
#define HAVE_ATOMIC
#endif
#endif

#if defined(__cplusplus)
#if defined(HAVE_GCC_BITS_ATOMIC) || defined(HAVE_GCC_CXX_BITS_ATOMIC)
#include <bits/atomicity.h>
#define HAVE_ATOMIC
#endif
#endif

#if defined(HAVE_PTHREAD_H) && ( defined(_THREAD_SAFE) || defined(_REENTRANT) )

#ifdef  __QNX__
#define __EXT_QNX
#endif

#include <pthread.h>

#ifdef HAVE_PTHREAD_NP_H
#include <pthread_np.h>
#endif

#ifdef HAVE_SEMAPHORE_H
#include <semaphore.h>
#endif
#ifdef _POSIX_PRIORITY_SCHEDULING
#ifdef HAVE_SCHED_H
#include <sched.h>
#else
#ifdef HAVE_SYS_SCHED_H
#include <sys/sched.h>
#endif
#endif
#endif

#define __PTHREAD_H__
#ifndef PTHREAD_MUTEXTYPE_RECURSIVE
#ifdef  MUTEX_TYPE_COUNTING_FAST
#define PTHREAD_MUTEXTYPE_RECURSIVE MUTEX_TYPE_COUNTING_FAST
#endif
#endif
#ifndef PTHREAD_MUTEXTYPE_RECURSIVE
#ifdef  PTHREAD_MUTEX_RECURSIVE
#define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE
#endif
#endif
#ifndef HAVE_PTHREAD_MUTEXATTR_SETTYPE
#if     HAVE_PTHREAD_MUTEXATTR_SETKIND_NP
#ifndef PTHREAD_MUTEXTYPE_RECURSIVE
#define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
#endif
#define pthread_mutexattr_gettype(x, y) pthread_mutexattr_getkind_np(x, y)
#define pthread_mutexattr_settype(x, y) pthread_mutexattr_setkind_np(x, y)
#endif
#if     HAVE_PTHREAD_MUTEXATTR_SETTYPE_NP
#ifndef PTHREAD_MUTEXTYPE_RECURSIVE
#define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEXTYPE_RECURSIVE_NP
#endif
#define pthread_mutexattr_settype(x, y) pthread_mutexattr_settype_np(x, y)
#define pthread_mutexattr_gettype(x, y) pthread_mutexattr_gettype_np(x, y)
#endif
#endif

#ifdef  HAVE_PTHREAD_MACH_THREAD_NP
#define _THR_MACH
#endif

#ifndef HAVE_PTHREAD_YIELD
#ifdef  HAVE_PTHREAD_YIELD_NP
#define pthread_yield() pthread_yield_np()
#define HAVE_PTHREAD_YIELD
#endif
#endif

#ifndef HAVE_PTHREAD_YIELD
#ifdef HAVE_PTHREAD_SCHED_YIELD
#define pthread_yield() sched_yield()
#define HAVE_PTHREAD_YIELD
#endif
#endif

#ifndef HAVE_PTHREAD_DELAY
#ifdef HAVE_PTHREAD_DELAY_NP
#define HAVE_PTHREAD_DELAY
#define pthread_delay(x) pthread_delay_np(x)
#endif
#if defined(HAVE_PTHREAD_NANOSLEEP)
#ifndef HAVE_PTHREAD_DELAY
#define HAVE_PTHREAD_DELAY
#ifdef __FreeBSD__
#ifdef __cplusplus
extern "C" int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
#endif
#endif
#define pthread_delay(x) nanosleep(x, NULL)
#endif
#endif
#endif

#ifdef HAVE_PTHREAD_ATTR_SETSTACK
#ifndef PTHREAD_STACK_MIN
#define PTHREAD_STACK_MIN 32768
#endif
#endif

#ifndef HAVE_PTHREAD_CANCEL
#ifdef SIGCANCEL
#define CCXX_SIG_THREAD_CANCEL SIGCANCEL
#else
#define CCXX_SIG_THREAD_CANCEL SIGQUIT
#endif
#define pthread_cancel(x) pthread_kill(x, CCXX_SIG_THREAD_CANCEL)
#define pthread_setcanceltype(x, y)
#define pthread_setcancelstate(x, y)
#endif

#ifndef HAVE_PTHREAD_SETCANCELTYPE
#ifdef HAVE_PTHREAD_SETCANCEL
enum
{ PTHREAD_CANCEL_ASYNCHRONOUS = CANCEL_ON,
  PTHREAD_CANCEL_DEFERRED = CANCEL_OFF};
enum
{ PTHREAD_CANCEL_ENABLE = CANCEL_ON,
  PTHREAD_CANCEL_DISABLE = CANCEL_OFF};
#define pthread_setcancelstate(x, y) \
        (y == NULL) ? pthread_setcancel(x) : *y = pthread_setcancel
#define pthread_setcanceltype(x, y) \
        (y == NULL) ? pthread_setasynccancel(x) | *y = pthread_setasynccancel(x)
#else
#define pthread_setcanceltype(x, y)
#define pthread_setcancelstate(x, y)
#endif
#endif

#ifdef  _AIX
#ifdef  HAVE_PTHREAD_SUSPEND
#undef  HAVE_PTHREAD_SUSPEND
#endif
#endif

#endif


    ])

])
m4trace:m4/ost_reentrant.m4:23: -1- AC_DEFUN([OST_LIB_REENTRANT], [
    reentrant_lib=${ost_cv_thread_library}
    if test -z "$reentrant_lib" ; then
        reentrant_lib=c_r
    fi
    if test "c" = "$reentrant_lib" ; then
        reentrant_lib=c_r
    fi
    if test "none" = "$reentrant_lib" ; then
        reentrant_lib=c_r
    fi

    AC_CHECK_FUNCS(setenv)
    AC_CHECK_LIB($reentrant_lib, localtime_r,[
        AC_DEFINE(HAVE_STRTOK_R, [1], [reentrant strtok])
        AC_DEFINE(HAVE_LOCALTIME_R, [1], [reentrant localtime])],[
        AC_CHECK_LIB(c, strtok_r, AC_DEFINE(HAVE_STRTOK_R))
        AC_CHECK_LIB(c, localtime_r, AC_DEFINE(HAVE_LOCALTIME_R))
    ])
        AC_CHECK_LIB($reentrant_lib, readdir_r,[
            AC_DEFINE(HAVE_READDIR_R, [1], [reentrant readdir])],[
            AC_CHECK_LIB(c, readdir_r, AC_DEFINE(HAVE_READDIR_R, [1]))
    ])
    AC_CHECK_LIB($reentrant_lib, strerror_r,[
        AC_DEFINE(HAVE_STRERROR_R, [1], [reentrant strerror])],[
        AC_CHECK_LIB(c, strerror_r, AC_DEFINE(HAVE_STRERROR_R, [1]))
    ])
    AC_CHECK_LIB($reentrant_lib, getpwuid_r,[
        AC_DEFINE(HAVE_GETPWUID_R, [1], [reentrant getuid])
        AC_DEFINE(HAVE_GETPWNAM_R, [1], [reentrant getnam])],[
        AC_CHECK_LIB(c, getpwuid_r, AC_DEFINE(HAVE_GETPWUID_R))
        AC_CHECK_LIB(c, getpwnam_r, AC_DEFINE(HAVE_GETPWNAM_R))
    ])
    AC_CHECK_LIB($reentrant_lib, getgrnam_r,[
        AC_DEFINE(HAVE_GETGRNAM_R, [1], [reentrant getgrnam])],[
        AC_CHECK_LIB(c, getgrnam_r, AC_DEFINE(HAVE_GETGRNAM_R))
    ])
    AH_BOTTOM([

#ifndef HAVE_STRERROR_R
#define strerror_r(e, b, l) b = ::strerror(e)
#endif

#ifndef HAVE_GETPWUID_R
#define getpwuid_r(uid, rec, buf, size, ptr) ptr = ::getpwuid(uid)
#define getpwnam_r(name, rec, buf, size, ptr) ptr = ::getpwnam(name)
#endif

    ])
])
m4trace:m4/ost_signal.m4:23: -1- AC_DEFUN([OST_CC_SIGNAL], [
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_FUNCS(sigaction)
    AC_CHECK_FUNCS(setitimer)
    AC_CHECK_FUNCS(sigwait)
    AC_CHECK_HEADERS(bsd/signal.h)
    AC_TYPE_SIGNAL
    AC_CACHE_CHECK(whether sigwait has 2 arguments,
        ac_cv_ost_sigwait2,
        AC_TRY_COMPILE([
            #ifndef _POSIX_PTHREAD_SEMANTICS
            #define _POSIX_PTHREAD_SEMANTICS
            #endif
            #ifndef _GNU_SOURCE
            #define _GNU_SOURCE
            #endif
            #include <stdio.h>
            #include <signal.h>
        ],[
            sigset_t sigs; int signo; sigwait(&sigs, &signo);],
            ac_cv_ost_sigwait2=yes,
            ac_cv_ost_sigwait2=no
        )
    )
    if test "$ac_cv_ost_sigwait2" = "yes" ; then
        AC_DEFINE(HAVE_SIGWAIT2, [1], [2 argument form])
    fi
AH_BOTTOM([
#ifdef HAVE_SIGACTION
#ifdef HAVE_BSD_SIGNAL_H
#undef HAVE_BSD_SIGNAL_H
#endif
#endif

/* Cause problem with Solaris... and perhaps Digital Unix?
  However, the autoconf test in ost_signal defines _POSIX_PTHREAD_SEMANTICS
 when trying to compile sigwait2. */

#ifdef  HAVE_SIGWAIT2
#ifndef _POSIX_PTHREAD_SEMANTICS
#define _POSIX_PTHREAD_SEMANTICS
#endif
#endif

#ifdef HAVE_BSD_SIGNAL_H
#include <bsd/signal.h>
#else
#include <signal.h>
#endif
#ifndef SA_ONESHOT
#define SA_ONESHOT SA_RESETHAND
#endif

    ])
])
m4trace:m4/ost_socket.m4:23: -1- AC_DEFUN([OST_SYS_SOCKET], [
    AC_REQUIRE([OST_CC_SYSTIME])
    AC_REQUIRE([OST_CC_TYPES])
    ost_cv_inet_sockets=no
    ost_cv_unix_sockets=no
    ost_cv_lib_socket="c"
    ost_cv_ipv6=yes
    ost_cv_nat=yes
    ost_cv_nat_detected=no
    SOCKET_LIBS=""
    AC_CHECK_HEADERS(net/if.h)
    AC_CHECK_HEADERS(sys/socket.h,[
        AC_CHECK_HEADERS(select.h sys/select.h netinet/in_systm.h netinet/ip.h)
        AC_CHECK_HEADERS(netinet/inet.h netinet/in.h)
        AC_CHECK_HEADERS(arpa/inet.h, ost_cv_inet_sockets=yes)
        AC_CHECK_HEADERS(sys/sockio.h)
        AC_CHECK_HEADERS(sys/un.h, ost_cv_unix_sockets=yes)
    ],[
        AC_CHECK_HEADERS(winsock2.h winsock.h,[
            ost_cv_lib_socket="wsock32"
            SOCKET_LIBS="-lwsock32 -liberty -lws2_32"
            ost_cv_inet_sockets=yes
        ])
    ])
    AC_CHECK_LIB(socket, socket, [
        ost_cv_lib_socket="socket"
        SOCKET_LIBS="-lsocket"
    ])

    if test $ost_cv_inet_sockets = yes ; then
        AC_CHECK_LIB(${ost_cv_lib_socket}, getaddrinfo,[
            AC_DEFINE(HAVE_GETADDRINFO, [1], [getaddrinfo interface support])
        ])
        AC_ARG_WITH(ipv6, [  --without-ipv6          Disable ipv6],
            ost_cv_ipv6=no,[
            AC_CHECK_HEADERS(netinet6/in6.h linux/in6.h)
            AC_CHECK_LIB(${ost_cv_lib_socket}, inet_pton,[
                AC_DEFINE(HAVE_INET_PTON, [1], [ipv6 support])])
            AC_CHECK_LIB(${ost_cv_lib_socket}, gethostbyname2,[
                AC_DEFINE(HAVE_GETHOSTBYNAME2, [1], [ipv6 host lookup])])
        ])
        AC_CHECK_HEADERS(sys/libcsys.h)
        AC_DEFINE(HAVE_INET_SOCKETS, [1], [inet sockets])
        AC_CHECK_LIB(${ost_cv_lib_socket}, inet_aton,[
            AC_DEFINE(HAVE_INET_ATON, [1], [has inet_aton])])
        AC_CACHE_CHECK([for socklen_t defined], ost_cv_socklen_t, [
            ost_cv_socklen_t='no'
            AC_EGREP_HEADER(socklen_t, sys/socket.h,
                ost_cv_socklen_t='yes',[
                AC_EGREP_HEADER(socklen_t, cygwin/socket.h,
                    ost_cv_socklen_t='yes')])
        ])
        if test $ost_cv_socklen_t = yes ; then
            AC_DEFINE(HAVE_SOCKLEN_T, [1], [has socklen_t type])
        fi

        AC_ARG_WITH([nat],
            [AC_HELP_STRING([--without-nat],[ Disable NAT class interface (pf, ipf or netfilter), default is enabled.])],
            [ost_cv_nat=no]
        )

        if test "$ost_cv_nat" = "yes" ; then

            AC_CHECK_HEADERS([errno.h limits.h sys/types.h sys/socket.h sys/ioctl.h unistd.h])
            AC_CHECK_HEADERS([net/if.h],,,
                [#ifdef HAVE_SYS_SOCKET_H
                #include <sys/socket.h>
                #endif])

            if test "$ost_cv_nat_detected" = "no" ; then
                AC_CHECK_HEADERS([linux/netfilter_ipv4.h linux/netfilter_ipv6.h],,,
                    [#ifdef HAVE_LIMITS_H
                    #include <limits.h>
                    #endif])
                if test "$ac_cv_header_linux_netfilter_ipv4_h" = "yes" &&
                   [ test "$ac_cv_header_linux_netfilter_ipv6_h" = "yes" &&
                     test "$ost_cv_ipv6" = "yes" ||
                     test "$ost_cv_ipv6" = "no" ] ; then
                    AC_DEFINE(HAVE_NAT_NETFILTER, [1], [NetFilter NAT support])
                    ost_cv_nat_detected="yes"
                fi
            fi

            if test "$ost_cv_nat_detected" = "no" ; then
                ip_filter_compat="no"
                AC_CHECK_HEADERS([netinet/ip_compat.h ip_compat.h netinet/ip_fil_compat.h ip_fil_compat.h],
                    [ip_filter_compat=$ac_header
                    break],,
                    [#ifdef HAVE_SYS_TYPES_H
                    #include <sys/types.h>
                    #endif
                    #ifdef HAVE_SYS_SOCKET_H
                    #include <sys/socket.h>
                    #endif
                    #ifdef HAVE_NETINET_IN_H
                    #include <netinet/in.h>
                    #endif])
                if test "$ip_filter_compat" != "no" ; then
                    ip_filter_fil="no"
                    AC_CHECK_HEADERS([netinet/ip_fil.h ip_fil.h],
                        [ip_filter_fil=$ac_header
                        break],,
                                            [#ifdef HAVE_SYS_TYPES_H
                        #include <sys/types.h>
                        #endif
                        #ifdef HAVE_SYS_SOCKET_H
                        #include <sys/socket.h>
                        #endif
                        #ifdef HAVE_NETINET_IN_H
                        #include <netinet/in.h>
                        #endif
                        #include <$ip_filter_compat>])
                    ip_filter_nat="no"
                    AC_CHECK_HEADERS([netinet/ip_nat.h ip_nat.h],
                        [ip_filter_nat=$ac_header
                        break],,
                                            [#ifdef HAVE_SYS_TYPES_H
                        #include <sys/types.h>
                        #endif
                        #ifdef HAVE_SYS_SOCKET_H
                        #include <sys/socket.h>
                        #endif
                        #ifdef HAVE_NETINET_IN_H
                        #include <netinet/in.h>
                        #endif
                        #include <$ip_filter_compat>
                        #include <$ip_filter_fil>
                        #ifdef HAVE_NET_IF_H
                        #include <net/if.h>
                        #endif])
                    if test "$ip_filter_fil" != "no" &&
                       test "$ip_filter_nat" != "no" ; then
                        AC_DEFINE(HAVE_NAT_IPF, [1], [IPF NAT support])
                        ost_cv_nat_detected="yes"
                    fi
                fi
            fi

            if test "$ost_cv_nat_detected" = "no" ; then
                AC_CHECK_HEADERS([net/pfvar.h],,,
                [#ifdef HAVE_SYS_TYPES_H
                #include <sys/types.h>
                #endif
                #ifdef HAVE_SYS_SOCKET_H
                #include <sys/socket.h>
                #endif
                #ifdef HAVE_NET_IF_H
                #include <net/if.h>
                #endif
                #ifdef HAVE_NETINET_IN_H
                #include <netinet/in.h>
                #endif])
                if test "$ac_cv_header_net_pfvar.h" = "yes" ; then
                    AC_DEFINE(HAVE_NAT_PF, [1], [PF NAT support])
                    ost_cv_nat_detected="yes"
                fi
            fi

            if test "$ost_cv_nat_detected" = "yes"; then
                AC_DEFINE(CCXX_NAT, [1], [NAT support])
            else
                AC_MSG_WARN([-------------------------------------------------------])
                AC_MSG_WARN([Could not autodetect NAT engine - pf, ipf or netfilter.])
                AC_MSG_WARN([NAT engine c++ class interface support was disabled.   ])
                AC_MSG_WARN([This is not necessarilly a problem. If you do not plan ])
                AC_MSG_WARN([to use or don't know what this is, than it is safe to  ])
                AC_MSG_WARN([assume that you don't need it.             ])
                AC_MSG_WARN([-------------------------------------------------------])
                ost_cv_nat="no"
            fi
        fi
    fi

    if test $ost_cv_unix_sockets = yes ; then
        AC_DEFINE(HAVE_UNIX_SOCKETS, [1], [has unix domain sockets])
    fi
    THREAD_LIBS="$SOCKET_LIBS $THREAD_LIBS"
    AC_SUBST(SOCKET_LIBS)
    AH_BOTTOM([

#ifdef HAVE_SYS_LIBCSYS_H
#include <sys/libcsys.h>
#endif

#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#else
#ifdef HAVE_WINSOCK_H
#include <winsock.h>
#else
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#ifdef HAVE_SELECT_H
#include <select.h>
#else
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
#endif

#ifdef HAVE_NETINET_IN_H
#if defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
#undef _XOPEN_SOURCE_EXTENDED
#endif
#include <netinet/in.h>
#ifdef  __hpux
#define _XOPEN_SOURCE_EXTENDED
#endif
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#include <netdb.h>
#endif

#ifdef  HAVE_NETINET6_IN6_H
#include <netinet6/in6.h>
#endif

#ifdef  HAVE_LINIX_IN6_H
#include <linux/in6.h>
#endif

#ifdef HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
#ifdef HAVE_NETINET_IP_H
#include <netinet/ip.h>
#endif
#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif
#endif
#endif
#endif

#ifndef HAVE_INET_ATON
#define inet_aton(cp, addr) (((*(unsigned long int *)(addr)) = inet_addr(cp)) != -1)
#endif

#ifndef SUN_LEN
#ifdef SCM_RIGHTS
#define HAVE_UN_LEN
#endif
#ifdef __linux__
#define HAVE_UN_LEN
#endif
#ifdef HAVE_UN_LEN
#define SUN_LEN(ptr) sizeof(sockaddr_un.sun_len) + sizeof(sockaddr_un.sun_family) + sizeof(sockaddr_un.sun_path) + 1
#else
#define SUN_LEN(ptr) ((size_t)((struct sockaddr_un *)0)->sun_path) + strlen((ptr)->sun_path))
#endif
#endif

#ifndef _OSF_SOURCE
#ifndef HAVE_SOCKLEN_T
#if defined(i386) && defined(__svr4__)
#define HAVE_SOCKLEN_U
#else
#if defined(__CYGWIN32__)
#define socklen_t int
#else
typedef int socklen_t;
#endif
#endif

#ifdef HAVE_SOCKLEN_U
#if !defined(__CYGWIN32__) && !defined(__MINGW32__)
typedef unsigned socklen_t;
#else
typedef int socklen_t;
#endif
#endif
#endif
#endif

#ifdef  __hpux
#ifdef  mutable
#undef  mutable
#endif
#endif

#if defined(AF_INET6) && defined(HAVE_INET_PTON)
#define CCXX_IPV6
#endif

#define CCXX_MULTIFAMILY_IP

    ])
])
m4trace:m4/ost_ssl.m4:23: -1- AC_DEFUN([OST_LIB_NOSSL], [
    SSL_LIBS=""
    AC_SUBST(SSL_LIBS)
])
m4trace:m4/ost_ssl.m4:28: -1- AC_DEFUN([OST_LIB_SSL], [
    SSL_LIBS=""
#
#   WE CANNOT YET USE GNUTLS BECAUSE GNUTLS OPENSSL EMULATION DOES
#   NOT SUPPORT THREAD SAFETY, SO ssl.cpp MUST BE REWRITTEN TO USE
#   NATIVE GNUTLS API.
#
#   AC_CHECK_HEADER(gnutls/gnutls.h,[
#       AC_CHECK_LIB(gnutls, gnutls_init, [
#           SSL_LIBS="-lgnutls -lgcrypt -ltasn1"
#           ost_cv_ssl=true
#           AC_DEFINE(CCXX_SSL, [GNUTLS], [defines ssl])
#           AC_DEFINE(CCXX_GNUTLS, [1], [define gnutls])
#       ])
#   ],[
        AC_CHECK_HEADER(openssl/ssl.h,[
            SSL_LIBS="-lssl"
            ost_cv_ssl=true
            AC_DEFINE(CCXX_OPENSSL, [1], [define openssl])
            AC_DEFINE(CCXX_SSL, [OPENSSL], [defines ssl])
        ])
#   ])
    AC_SUBST(SSL_LIBS)
])
m4trace:m4/ost_stlport.m4:29: -1- AC_DEFUN([OST_SEARCH_LIBS], [
    AC_PREREQ([2.13])
    AC_CACHE_CHECK([for library containing $1], [ost_cv_search_$1],[
        ac_func_search_save_LIBS="$LIBS"
        ost_cv_search_$1="no"
        AC_TRY_LINK([$2], [$3], [ost_cv_search_$1="none required"])
        test "$ost_cv_search_$1" = "no" && for i in $4; do
            LIBS="-l$i $7 $ac_func_search_save_LIBS"
            AC_TRY_LINK([$2], [$3],[
                ost_cv_search_$1="-l$i"
                break
            ])
        done
        LIBS="$ac_func_search_save_LIBS"
    ])
    if test "$ost_cv_search_$1" != "no"; then
        test "$ost_cv_search_$1" = "none required" || LIBS="$ost_cv_search_$1 $LIBS"
        $5
    else :
        $6
    fi
])
m4trace:m4/ost_stlport.m4:53: -1- AC_DEFUN([OST_SGI_STLPORT], [
    AC_REQUIRE([OST_CXX_PROGRAMMING])

    dnl
    dnl Check for sgi/stlport portable c++ library
    dnl

    AC_LANG_SAVE
    ac_save_CXXFLAGS="$CXXFLAGS"
    CXXFLAGS=""
    AC_LANG_CPLUSPLUS

    AC_ARG_WITH(stlport, [  --with-stlport[=dir]        using SGI portable C++ stream library
                            ie: /usr/local, not all include directory],[
        if test "$withval" = "" ; then
            COMMON_FLAGS="-I$(includedir)/stlport $COMMON_FLAGS"
        else
            COMMON_FLAGS="-I$withval/include/stlport $COMMON_FLAGS"
            LIBS="-L$withval/lib $LIBS"
        fi
        dnl AC_SEARCH_LIBS do not run (consider name mangling)
        OST_SEARCH_LIBS(__stl_throw_invalid_argument, [
            namespace _STL { void __stl_throw_invalid_argument(const char*); }
        ], [_STL::__stl_throw_invalid_argument("x")], [stlport_gcc stlport_cygwin stlport_mingw32 stlport_sunpro stlport_watcom])
    ])

    AC_LANG_RESTORE
    CXXFLAGS="$ac_save_CXXFLAGS"
])
m4trace:m4/ost_string.m4:23: -1- AC_DEFUN([OST_CC_STRING], [
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_FUNCS(strcasecmp)
    AC_CHECK_HEADERS(strings.h alloca.h)

AH_BOTTOM([
#include <cstring>
#ifdef HAVE_STRINGS_H
#ifndef _AIX
#include <strings.h>
#endif
#endif

#ifdef HAVE_ALLOCA_H
#include <alloca.h>
#endif

#ifndef HAVE_SNPRINTF
#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER < 1400
#define snprintf        _snprintf
#define vsnprintf       _vsnprintf
#endif
#endif

#ifdef HAVE_STRCASECMP
#ifndef stricmp
#define stricmp(x,y) strcasecmp(x,y)
#endif
#ifndef strnicmp
#define strnicmp(x,y,n) strncasecmp(x,y,n)
#endif
#ifndef stristr
#define stristr(x, y) strcasestr(x,y)
#endif
#endif

    ])
])
m4trace:m4/ost_systime.m4:23: -1- AC_DEFUN([OST_CC_SYSTIME], [
    AC_HEADER_TIME
    AC_CHECK_HEADERS(sys/time.h)
AH_TOP([
#undef HAVE_SYS_TIME_H
#undef TIME_WITH_SYS_TIME
#if TIME_WITH_SYS_TIME
#include <sys/time.h>
#else
#if HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#endif
    ])

])
m4trace:m4/ost_types.m4:23: -1- AC_DEFUN([OST_CC_TYPES], [
    AC_REQUIRE([OST_SYS_POSIX])
    AC_CHECK_HEADERS(sys/types.h bits/wordsize.h)
    AC_EGREP_HEADER(u_int8_t,sys/types.h,[
        AC_DEFINE(HAVE_SYS_TYPES_STD, [1], [have systypes])
        AC_EGREP_HEADER(u_int64_t,sys/types.h,[
            AC_DEFINE(HAVE_SYS_TYPES_64, [1], [have 64 bit longs])
        ])
    ])
    AC_EGREP_HEADER(long long,sys/types.h,[
        AC_DEFINE(HAVE_LONG_LONG, [1], [have long longs])
    ])
    AH_TOP([

#undef HAVE_SYS_TYPES_STD
#undef HAVE_SYS_TYPES_64
#undef HAVE_LONG_LONG
#undef HAVE_SYS_TYPES

#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif

#ifdef  HAVE_BITS_WORSIZE_H
#include <bits/wordtypes.h>
#endif

#ifdef HAVE_SYS_TYPES_STD
typedef int8_t int8;
typedef u_int8_t uint8;
typedef int16_t int16;
typedef u_int16_t uint16;
typedef int32_t int32;
typedef u_int32_t uint32;
#ifdef HAVE_SYS_TYPES_64
#define HAVE_64_BITS
typedef int64_t int64;
typedef u_int64_t uint64;
#endif
#else
typedef char int8;
typedef unsigned char uint8;
typedef short int16;
typedef unsigned short uint16;
typedef int int32;
typedef unsigned int uint32;
#endif

#ifndef HAVE_SYS_TYPES_64
#if defined(__WORDSIZE) || defined(__arch64__)
#if __WORDSIZE >= 64 || defined(__arch64__)
typedef long int int64;
typedef unsigned long int uint64;
#define HAVE_SYS_TYPES_64
#define HAVE_64_BITS
#endif
#endif
#endif

#ifndef HAVE_SYS_TYPES_64
#ifdef  __GNUC__
#if defined(HAVE_LONG_LONG) || defined(_LONGLONG)
__extension__
typedef long long int int64;
__extension__
typedef unsigned long long int uint64;
#define HAVE_SYS_TYPES_64
#define HAVE_64_BITS
#endif
#endif
#endif

#ifndef HAVE_SYS_TYPES_64
#if defined(HAVE_LONG_LONG) || defined(_LONGLONG)
#define HAVE_64_BITS
typedef long long int64;
typedef unsigned long long uint64;
#endif
#endif
    ])
])
m4trace:m4/ost_win32.m4:23: -1- AC_DEFUN([OST_WINVER], [
    WINVERSION="`echo $VERSION | sed 's/\./,/g'`,0"
    AC_SUBST(WINVERSION)
])
m4trace:m4/ost_win32.m4:28: -1- AC_DEFUN([OST_WIN32], [
    AC_REQUIRE([OST_PROG_CC_POSIX])
    AC_CACHE_CHECK(for Win32 gnu environment, ost_cv_gnuwin32,[
        ac_save_CFLAGS="$CFLAGS"
        CFLAGS=""
        AC_TRY_COMPILE([
            #ifdef  __WIN32__
            #ifdef __MINGW32__
            #define __RETURN_WIN32__ __MINGW32__
            #endif
            #ifdef __CYGWIN32__
            #define __RETURN_WIN32__ __CYGWIN32__
            #endif
            #endif
        ],[return __RETURN_WIN32__;],
        [ost_cv_gnuwin32=yes
        ],[ost_cv_gnuwin32=no])
        rm -f conftest*
        CFLAGS="$ac_save_CFLAGS"
    ])
])
m4trace:m4/win32msc.m4:22: -1- AC_DEFUN([NP_FIND_DOSENV], [
    save_IFS="$IFS"
    $3=no
    IFS=","
    ENVVAR=`echo $$2 | tr ';' ','`
    for i in $ENVVAR ; do
        f=`cygpath -u "$i"`
        if test -r "$f/$1" ; then
            $3="$f"
            break
        fi
    done
    IFS="$save_IFS"
])
m4trace:m4/win32msc.m4:37: -1- AC_DEFUN([NP_PROG_MSC], [
    AC_ARG_WITH(wininc,
        [  --with-wininc=DIR       define windows include directory],
        [win32inc="$withval"],[win32inc=no]
    )
    AC_ARG_WITH(winlib,
        [  --with-winlib=DIR       define windows lib directory],
        [win32lib="$withval"],[win32lib=no]
    )
    AC_CACHE_CHECK(for MSC environment, np_cv_prog_msc, [
        np_cv_prog_msc=no
        cat > conftest.c <<EOF
#ifndef _MSC_VER
#error NOMSC
#endif
int main() {}
EOF
        RET=`cl -nologo -c conftest.c 2>&1`
        case "$RET" in
            conftest.c?)
                np_cv_prog_msc=yes
                ;;
            *)
                ;;
        esac
    ])
    if test "x$np_cv_prog_msc" = "xyes" ; then
        if test "$win32inc" = "no" ; then
            AC_MSG_CHECKING(for Win32 include dir)
            NP_FIND_DOSENV(ras.h,INCLUDE,win32inc)
            AC_MSG_RESULT("$win32inc")
        fi
        if test "$win32inc" = "no" ; then
            AC_MSG_ERROR([Unable to get Win32 include dir from environment.])
            AC_MSG_ERROR([use --with-wininc=DIR to set it manually])
        fi
        if test "$win32lib" = "no" ; then
            AC_MSG_CHECKING(for Win32 lib dir)
            NP_FIND_DOSENV(wsock32.lib,LIB,win32lib)
            AC_MSG_RESULT("$win32lib")
        fi
        if test "$win32lib" = "no" ; then
            AC_MSG_ERROR([Unable to get Win32 lib dir from environment.])
            AC_MSG_ERROR([use --with-winlib=DIR to set it manually])
        fi
        CC="cl -nologo -GX -D__WIN32__ -D_MT -D_WIN32_WINNT=0x0400 -I$win32inc"
        CXX="cl -nologo -GX -D__WIN32__ -D_MT -D_WIN32_WINNT=0x0400 -I$win32inc"
        LD="link /libpath:$win32lib"
        AS=masm
    fi
    AM_CONDITIONAL(MSWIN32, test $np_cv_prog_msc = yes)
])
m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:12: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:12: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.ac:12: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.ac:12: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.ac:12: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^bindir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^includedir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^docdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^psdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^libdir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^localedir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.ac:12: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.ac:14: -1- m4_pattern_allow([LT_VERSION])
m4trace:configure.ac:30: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:30: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:30: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:30: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:30: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:61: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:62: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:63: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:64: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:65: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:66: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:81: -1- m4_pattern_allow([^ccincludedir$])
m4trace:configure.ac:84: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:1858: AC_CANONICAL_SYSTEM is expanded from...
configure.ac:84: the top level])
m4trace:configure.ac:84: -1- m4_pattern_allow([^build$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^build_os$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^target$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^target_cpu$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^target_vendor$])
m4trace:configure.ac:84: -1- m4_pattern_allow([^target_os$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:85: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:86: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^ac_ct_CXX$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:87: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:88: -1- m4_pattern_allow([^ac_ct_CXX$])
m4trace:configure.ac:89: -1- OST_PROG_CC_POSIX
m4trace:configure.ac:89: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:89: -1- _m4_warn([obsolete], [The macro `AC_ISC_POSIX' is obsolete.
You should run autoupdate.], [../../lib/autoconf/specific.m4:442: AC_ISC_POSIX is expanded from...
m4/ost_prog.m4:23: OST_PROG_CC_POSIX is expanded from...
configure.ac:89: the top level])
m4trace:configure.ac:89: -1- _m4_warn([obsolete], [The macro `AC_MINIX' is obsolete.
You should run autoupdate.], [../../lib/autoconf/specific.m4:437: AC_MINIX is expanded from...
m4/ost_prog.m4:23: OST_PROG_CC_POSIX is expanded from...
configure.ac:89: the top level])
m4trace:configure.ac:89: -1- AC_PROG_EGREP
m4trace:configure.ac:89: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_POSIX_SOURCE$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_MINIX$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^__EXTENSIONS__$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_ALL_SOURCE$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_GNU_SOURCE$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
m4trace:configure.ac:89: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
m4trace:configure.ac:90: -1- NP_PROG_MSC
m4trace:configure.ac:90: -1- NP_FIND_DOSENV([ras.h], [INCLUDE], [win32inc])
m4trace:configure.ac:90: -1- NP_FIND_DOSENV([wsock32.lib], [LIB], [win32lib])
m4trace:configure.ac:90: -1- AM_CONDITIONAL([MSWIN32], [test $np_cv_prog_msc = yes])
m4trace:configure.ac:90: -1- m4_pattern_allow([^MSWIN32_TRUE$])
m4trace:configure.ac:90: -1- m4_pattern_allow([^MSWIN32_FALSE$])
m4trace:configure.ac:90: -1- _AM_SUBST_NOTMAKE([MSWIN32_TRUE])
m4trace:configure.ac:90: -1- _AM_SUBST_NOTMAKE([MSWIN32_FALSE])
m4trace:configure.ac:91: -1- AC_LIBTOOL_WIN32_DLL
m4trace:configure.ac:91: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
You should run autoupdate.], [m4/ltoptions.m4:146: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:91: the top level])
m4trace:configure.ac:91: -1- m4_pattern_allow([^AS$])
m4trace:configure.ac:91: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:91: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:91: -1- _m4_warn([obsolete], [AC_LIBTOOL_WIN32_DLL: Remove this warning and the call to _LT_SET_OPTION when you
put the `win32-dll' option into LT_INIT's first parameter.], [m4/ltoptions.m4:146: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:91: the top level])
m4trace:configure.ac:92: -1- AM_PROG_LIBTOOL
m4trace:configure.ac:92: -1- _m4_warn([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
You should run autoupdate.], [m4/libtool.m4:108: AM_PROG_LIBTOOL is expanded from...
configure.ac:92: the top level])
m4trace:configure.ac:92: -1- LT_INIT
m4trace:configure.ac:92: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.ac:92: -1- LTOPTIONS_VERSION
m4trace:configure.ac:92: -1- LTSUGAR_VERSION
m4trace:configure.ac:92: -1- LTVERSION_VERSION
m4trace:configure.ac:92: -1- LTOBSOLETE_VERSION
m4trace:configure.ac:92: -1- _LT_PROG_LTMAIN
m4trace:configure.ac:92: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.ac:92: -1- _LT_PREPARE_SED_QUOTE_VARS
m4trace:configure.ac:92: -1- _LT_PROG_ECHO_BACKSLASH
m4trace:configure.ac:92: -1- LT_PATH_LD
m4trace:configure.ac:92: -1- m4_pattern_allow([^SED$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:92: -1- LT_PATH_NM
m4trace:configure.ac:92: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^NM$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.ac:92: -1- LT_CMD_MAX_LEN
m4trace:configure.ac:92: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^AWK$])
m4trace:configure.ac:92: -1- _LT_WITH_SYSROOT
m4trace:configure.ac:92: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.ac:92: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.ac:92: -1- _LT_CC_BASENAME([$compiler])
m4trace:configure.ac:92: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
m4trace:configure.ac:92: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
m4trace:configure.ac:92: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.ac:92: -1- _LT_COMPILER_BOILERPLATE
m4trace:configure.ac:92: -1- _LT_LINKER_BOILERPLATE
m4trace:configure.ac:92: -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:92: -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:92: -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:92: -1- m4_pattern_allow([^MANIFEST_TOOL$])
m4trace:configure.ac:92: -1- _LT_REQUIRED_DARWIN_CHECKS
m4trace:configure.ac:92: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.ac:92: -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:92: -1- LT_SYS_DLOPEN_SELF
m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:92: -1- LT_LANG([CXX])
m4trace:configure.ac:92: -1- LT_SUPPORTED_TAG([CXX])
m4trace:configure.ac:92: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:92: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:92: -1- _LT_COMPILER_BOILERPLATE
m4trace:configure.ac:92: -1- _LT_LINKER_BOILERPLATE
m4trace:configure.ac:92: -1- _LT_CC_BASENAME([$compiler])
m4trace:configure.ac:92: -1- LT_PATH_LD
m4trace:configure.ac:92: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:92: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t@m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in
     "" | " "*) ;;
     *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;;
     esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)=
     _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no])
m4trace:configure.ac:92: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=])
m4trace:configure.ac:93: -1- AM_INIT_AUTOMAKE([commoncpp2], [$VERSION])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.ac:93: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
m4trace:configure.ac:93: -1- AM_AUTOMAKE_VERSION([1.11.1])
m4trace:configure.ac:93: -1- _AM_AUTOCONF_VERSION([2.68])
m4trace:configure.ac:93: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.ac:93: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:93: -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:93: -2- _AM_MANGLE_OPTION([no-define])
m4trace:configure.ac:93: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:93: -1- AM_SANITY_CHECK
m4trace:configure.ac:93: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
m4trace:configure.ac:93: -1- AM_MISSING_HAS_RUN
m4trace:configure.ac:93: -1- AM_AUX_DIR_EXPAND
m4trace:configure.ac:93: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.ac:93: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.ac:93: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.ac:93: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.ac:93: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
m4trace:configure.ac:93: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.ac:93: -1- AM_PROG_INSTALL_SH
m4trace:configure.ac:93: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.ac:93: -1- AM_PROG_INSTALL_STRIP
m4trace:configure.ac:93: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.ac:93: -1- AM_PROG_MKDIR_P
m4trace:configure.ac:93: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:93: -1- AM_SET_LEADING_DOT
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.ac:93: -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:93: -2- _AM_MANGLE_OPTION([tar-ustar])
m4trace:configure.ac:93: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
m4trace:configure.ac:93: -2- _AM_MANGLE_OPTION([tar-pax])
m4trace:configure.ac:93: -1- _AM_PROG_TAR([v7])
m4trace:configure.ac:93: -1- AM_MISSING_PROG([AMTAR], [tar])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.ac:93: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
		  [_AM_DEPENDENCIES(CC)],
		  [define([AC_PROG_CC],
			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
		  [_AM_DEPENDENCIES(CXX)],
		  [define([AC_PROG_CXX],
			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
		  [_AM_DEPENDENCIES(OBJC)],
		  [define([AC_PROG_OBJC],
			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
])
m4trace:configure.ac:93: -2- _AM_MANGLE_OPTION([no-dependencies])
m4trace:configure.ac:93: -1- _AM_DEPENDENCIES([CC])
m4trace:configure.ac:93: -1- AM_SET_DEPDIR
m4trace:configure.ac:93: -1- m4_pattern_allow([^DEPDIR$])
m4trace:configure.ac:93: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
m4trace:configure.ac:93: -1- AM_MAKE_INCLUDE
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__include$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__quote$])
m4trace:configure.ac:93: -1- AM_DEP_TRACK
m4trace:configure.ac:93: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AMDEP_TRUE$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AMDEP_FALSE$])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
m4trace:configure.ac:93: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
m4trace:configure.ac:93: -1- m4_pattern_allow([^CCDEPMODE$])
m4trace:configure.ac:93: -1- AM_CONDITIONAL([am__fastdepCC], [
  test "x$enable_dependency_tracking" != xno \
  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
m4trace:configure.ac:93: -1- _AM_DEPENDENCIES([CXX])
m4trace:configure.ac:93: -1- m4_pattern_allow([^CXXDEPMODE$])
m4trace:configure.ac:93: -1- AM_CONDITIONAL([am__fastdepCXX], [
  test "x$enable_dependency_tracking" != xno \
  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
m4trace:configure.ac:93: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
m4trace:configure.ac:93: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
m4trace:configure.ac:93: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])
m4trace:configure.ac:93: -2- _AM_MANGLE_OPTION([silent-rules])
m4trace:configure.ac:94: -1- AM_CONFIG_HEADER([config.h])
m4trace:configure.ac:94: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete.
You should run autoupdate.], [/usr/share/aclocal-1.11/header.m4:12: AM_CONFIG_HEADER is expanded from...
configure.ac:94: the top level])
m4trace:configure.ac:96: -1- m4_pattern_allow([^restrict$])
m4trace:configure.ac:96: -1- m4_pattern_allow([^restrict$])
m4trace:configure.ac:97: -1- m4_pattern_allow([^volatile$])
m4trace:configure.ac:202: -1- OST_PROG_COMMON
m4trace:configure.ac:203: -1- OST_PROG_LIBVER
m4trace:configure.ac:203: -1- m4_pattern_allow([^LT_RELEASE$])
m4trace:configure.ac:203: -1- m4_pattern_allow([^LT_SUBVER$])
m4trace:configure.ac:203: -1- m4_pattern_allow([^LT_MAJOR$])
m4trace:configure.ac:203: -1- m4_pattern_allow([^LT_MINOR$])
m4trace:configure.ac:204: -1- OST_PROG_LIBRARY([CCXX], [$LT_VERSION])
m4trace:configure.ac:204: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:204: -1- m4_pattern_allow([^LT_CCXX_VERSION$])
m4trace:configure.ac:205: -1- OST_AUTOMAKE_MODE
m4trace:configure.ac:206: -1- OST_MAINTAINER_MODE
m4trace:configure.ac:206: -1- AM_MAINTAINER_MODE
m4trace:configure.ac:206: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
m4trace:configure.ac:206: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
m4trace:configure.ac:206: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
m4trace:configure.ac:206: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:206: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:206: -1- m4_pattern_allow([^MAINT$])
m4trace:configure.ac:206: -1- m4_pattern_allow([^FTPDIR$])
m4trace:configure.ac:207: -1- OST_WINVER
m4trace:configure.ac:207: -1- m4_pattern_allow([^WINVERSION$])
m4trace:configure.ac:208: -1- OST_WIN32
m4trace:configure.ac:208: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
m4/ost_win32.m4:28: OST_WIN32 is expanded from...
configure.ac:208: the top level])
m4trace:configure.ac:209: -1- OST_CC_FCNTL
m4trace:configure.ac:209: -1- OST_SYS_POSIX
m4trace:configure.ac:209: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_posix.m4:23: OST_SYS_POSIX is expanded from...
m4/ost_posix.m4:69: OST_CC_FCNTL is expanded from...
configure.ac:209: the top level])
m4trace:configure.ac:209: -1- m4_pattern_allow([^HAVE_UNISTD_H$])
m4trace:configure.ac:209: -1- m4_pattern_allow([^HAVE_UNISTD_H$])
m4trace:configure.ac:209: -1- m4_pattern_allow([^HAVE_FEATURES_H$])
m4trace:configure.ac:210: -1- OST_CC_SYSTIME
m4trace:configure.ac:210: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$])
m4trace:configure.ac:211: -1- OST_CC_TYPES
m4trace:configure.ac:211: -1- m4_pattern_allow([^HAVE_SYS_TYPES_STD$])
m4trace:configure.ac:211: -1- m4_pattern_allow([^HAVE_SYS_TYPES_64$])
m4trace:configure.ac:211: -1- m4_pattern_allow([^HAVE_LONG_LONG$])
m4trace:configure.ac:212: -1- OST_CC_ENDIAN
m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_ENDIAN_H$])
m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_SYS_ISA_DEFS_H$])
m4trace:configure.ac:212: -1- m4_pattern_allow([^__BYTE_ORDER$])
m4trace:configure.ac:212: -1- m4_pattern_allow([^__BYTE_ORDER$])
m4trace:configure.ac:213: -1- OST_CC_SIGNAL
m4trace:configure.ac:213: -1- m4_pattern_allow([^HAVE_SIGACTION$])
m4trace:configure.ac:213: -1- m4_pattern_allow([^HAVE_SETITIMER$])
m4trace:configure.ac:213: -1- m4_pattern_allow([^HAVE_SIGWAIT$])
m4trace:configure.ac:213: -1- m4_pattern_allow([^HAVE_BSD_SIGNAL_H$])
m4trace:configure.ac:213: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
You should run autoupdate.], [../../lib/autoconf/types.m4:738: AC_TYPE_SIGNAL is expanded from...
m4/ost_signal.m4:23: OST_CC_SIGNAL is expanded from...
configure.ac:213: the top level])
m4trace:configure.ac:213: -1- m4_pattern_allow([^RETSIGTYPE$])
m4trace:configure.ac:213: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_signal.m4:23: OST_CC_SIGNAL is expanded from...
configure.ac:213: the top level])
m4trace:configure.ac:213: -1- m4_pattern_allow([^HAVE_SIGWAIT2$])
m4trace:configure.ac:214: -1- OST_CC_STRING
m4trace:configure.ac:214: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
m4trace:configure.ac:215: -1- OST_CC_GETOPT
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT_H$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^HAVE_GETOPT_LONG$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^GETOPT_LIBS$])
m4trace:configure.ac:215: -1- m4_pattern_allow([^LIBGETOPTOBJS$])
m4trace:configure.ac:216: -1- OST_CC_DYNAMIC
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_SHL_LOAD$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MODULES$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MODULES$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MACH_O_DYLD_H$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MODULES$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^HAVE_MACH_DYLD$])
m4trace:configure.ac:216: -1- m4_pattern_allow([^DYN_LOADER$])
m4trace:configure.ac:217: -1- OST_LIB_PTHREAD
m4trace:configure.ac:217: -1- m4_pattern_allow([^WITH_LINUXTHREADS$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_H$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_H$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_SYS_ATOMIC_OP_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_ATOMIC_AIX$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_SYS_ATOMIC_H$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_WORKING_SYS_ATOMIC_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_BITS_ATOMICITY_H$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_GCC_BITS_ATOMIC$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_GCC_CXX_BITS_ATOMIC$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_THREAD_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^thrprefix$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_LIBMALLOC$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_MACH_THREAD_NP$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_NANOSLEEP$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_NANOSLEEP$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_NANOSLEEP$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_HIRES_TIMER$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_HIRES_TIMER$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_MLOCK$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_MLOCKALL$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_MLOCK$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_MLOCKALL$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^THREAD_FLAGS$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^THREAD_LIBS$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_NP_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_SEMAPHORE_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_SCHED_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_SYS_SCHED_H$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_SCHED_GETSCHEDULER$])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_pthread.m4:23: OST_LIB_PTHREAD is expanded from...
configure.ac:217: the top level])
m4trace:configure.ac:217: -1- m4_pattern_allow([^PTHREAD_MUTEXTYPE_RECURSIVE$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^PTHREAD_MUTEXTYPE_RECURSIVE$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^PTHREAD_MUTEXTYPE_RECURSIVE$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_MUTEXATTR_SETTYPE$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_MUTEXATTR_SETTYPE_NP$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_MUTEXATTR_SETKIND_NP$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_RWLOCK$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PREAD_PWRITE$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PREAD_PWRITE$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PREAD_PWRITE$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_SUSPEND$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_ATTR_SETSTACKSIZE$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_YIELD_NP$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_YIELD$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_SCHED_YIELD$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_CANCEL$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_SETCANCELTYPE$])
m4trace:configure.ac:217: -3- m4_pattern_allow([^HAVE_PTHREAD_SETCANCEL$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_CANCEL$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_PTHREAD_SETCANCELTYPE$])
m4trace:configure.ac:217: -2- m4_pattern_allow([^HAVE_PTHREAD_DELAY_NP$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^PTHREAD_CC$])
m4trace:configure.ac:217: -1- m4_pattern_allow([^COMMON_AIX_FIXES$])
m4trace:configure.ac:218: -1- OST_LIB_REENTRANT
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_SETENV$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_STRTOK_R$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_LOCALTIME_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_STRTOK_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_LOCALTIME_R$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_READDIR_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_READDIR_R$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_STRERROR_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_STRERROR_R$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_GETPWUID_R$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_GETPWNAM_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_GETPWUID_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_GETPWNAM_R$])
m4trace:configure.ac:218: -1- m4_pattern_allow([^HAVE_GETGRNAM_R$])
m4trace:configure.ac:218: -2- m4_pattern_allow([^HAVE_GETGRNAM_R$])
m4trace:configure.ac:219: -1- OST_LIB_POLL
m4trace:configure.ac:219: -1- m4_pattern_allow([^HAVE_POLL$])
m4trace:configure.ac:220: -1- OST_SYS_SOCKET
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_NET_IF_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_SYS_SOCKET_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_ARPA_INET_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_SYS_SOCKIO_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_SYS_UN_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_GETADDRINFO$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_INET_PTON$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME2$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_SYS_LIBCSYS_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_INET_SOCKETS$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_INET_ATON$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_SOCKLEN_T$])
m4trace:configure.ac:220: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
m4/ost_socket.m4:23: OST_SYS_SOCKET is expanded from...
configure.ac:220: the top level])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_NET_IF_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_NAT_NETFILTER$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_NAT_IPF$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_NET_PFVAR_H$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_NAT_PF$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^CCXX_NAT$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^HAVE_UNIX_SOCKETS$])
m4trace:configure.ac:220: -1- m4_pattern_allow([^SOCKET_LIBS$])
m4trace:configure.ac:223: -1- m4_pattern_allow([^USE_MONOTONIC_TIMER$])
m4trace:configure.ac:227: -1- OST_LIB_NOZLIB
m4trace:configure.ac:227: -1- m4_pattern_allow([^ZSTREAM_LIBS$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^HAVE_EXTRAS$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^CCXX_SSL$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^CCXX_GNUTLS$])
m4trace:configure.ac:227: -1- OST_LIB_SSL
m4trace:configure.ac:227: -1- m4_pattern_allow([^CCXX_OPENSSL$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^CCXX_SSL$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^SSL_LIBS$])
m4trace:configure.ac:227: -1- OST_LIB_NOSSL
m4trace:configure.ac:227: -1- m4_pattern_allow([^SSL_LIBS$])
m4trace:configure.ac:227: -1- OST_LIB_NOZLIB
m4trace:configure.ac:227: -1- m4_pattern_allow([^ZSTREAM_LIBS$])
m4trace:configure.ac:227: -1- OST_LIB_ZLIB
m4trace:configure.ac:227: -1- m4_pattern_allow([^HAVE_ZLIB_H$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^HAVE_ZLIB_H$])
m4trace:configure.ac:227: -1- m4_pattern_allow([^ZSTREAM_LIBS$])
m4trace:configure.ac:254: -1- m4_pattern_allow([^COMMON_MEMORY_AUDIT$])
m4trace:configure.ac:266: -1- m4_pattern_allow([^CPPUNIT_LIBS$])
m4trace:configure.ac:268: -1- AM_CONDITIONAL([WITH_CPPUNIT_TESTS], [test "$CPPUNIT_LIBS" != " "])
m4trace:configure.ac:268: -1- m4_pattern_allow([^WITH_CPPUNIT_TESTS_TRUE$])
m4trace:configure.ac:268: -1- m4_pattern_allow([^WITH_CPPUNIT_TESTS_FALSE$])
m4trace:configure.ac:268: -1- _AM_SUBST_NOTMAKE([WITH_CPPUNIT_TESTS_TRUE])
m4trace:configure.ac:268: -1- _AM_SUBST_NOTMAKE([WITH_CPPUNIT_TESTS_FALSE])
m4trace:configure.ac:276: -1- OST_CXX_PROGRAMMING
m4trace:configure.ac:276: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^ac_ct_CXX$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:276: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:276: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:24: OST_CXX_PROGRAMMING is expanded from...
configure.ac:276: the top level])
m4trace:configure.ac:276: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:24: OST_CXX_PROGRAMMING is expanded from...
configure.ac:276: the top level])
m4trace:configure.ac:276: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_cxx.m4:24: OST_CXX_PROGRAMMING is expanded from...
configure.ac:276: the top level])
m4trace:configure.ac:276: -1- m4_pattern_allow([^HAVE_BOOL_TYPE$])
m4trace:configure.ac:276: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:24: OST_CXX_PROGRAMMING is expanded from...
configure.ac:276: the top level])
m4trace:configure.ac:281: -1- OST_CXX_NOEXCEPTIONS
m4trace:configure.ac:281: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:234: OST_CXX_NOEXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:281: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:234: OST_CXX_NOEXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:281: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:234: OST_CXX_NOEXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:281: -1- OST_CXX_EXCEPTIONS
m4trace:configure.ac:281: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:316: OST_CXX_EXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:281: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:316: OST_CXX_EXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:281: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_cxx.m4:316: OST_CXX_EXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:281: -1- m4_pattern_allow([^CCXX_EXCEPTIONS$])
m4trace:configure.ac:281: -1- m4_pattern_allow([^HAVE_EXCEPTION$])
m4trace:configure.ac:281: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:316: OST_CXX_EXCEPTIONS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
configure.ac:281: the top level])
m4trace:configure.ac:286: -1- OST_CXX_MUTABLE
m4trace:configure.ac:286: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:205: OST_CXX_MUTABLE is expanded from...
configure.ac:286: the top level])
m4trace:configure.ac:286: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:205: OST_CXX_MUTABLE is expanded from...
configure.ac:286: the top level])
m4trace:configure.ac:286: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_cxx.m4:205: OST_CXX_MUTABLE is expanded from...
configure.ac:286: the top level])
m4trace:configure.ac:286: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:205: OST_CXX_MUTABLE is expanded from...
configure.ac:286: the top level])
m4trace:configure.ac:287: -1- OST_CXX_NAMESPACE
m4trace:configure.ac:287: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:176: OST_CXX_NAMESPACE is expanded from...
configure.ac:287: the top level])
m4trace:configure.ac:287: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:176: OST_CXX_NAMESPACE is expanded from...
configure.ac:287: the top level])
m4trace:configure.ac:287: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_cxx.m4:176: OST_CXX_NAMESPACE is expanded from...
configure.ac:287: the top level])
m4trace:configure.ac:287: -1- m4_pattern_allow([^CCXX_NAMESPACES$])
m4trace:configure.ac:287: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:176: OST_CXX_NAMESPACE is expanded from...
configure.ac:287: the top level])
m4trace:configure.ac:288: -1- OST_CXX_IOSTREAM
m4trace:configure.ac:288: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:138: OST_CXX_IOSTREAM is expanded from...
configure.ac:288: the top level])
m4trace:configure.ac:288: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:138: OST_CXX_IOSTREAM is expanded from...
configure.ac:288: the top level])
m4trace:configure.ac:288: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_cxx.m4:138: OST_CXX_IOSTREAM is expanded from...
configure.ac:288: the top level])
m4trace:configure.ac:288: -1- m4_pattern_allow([^HAVE_OLD_IOSTREAM$])
m4trace:configure.ac:288: -1- m4_pattern_allow([^HAVE_SSTREAM$])
m4trace:configure.ac:288: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:138: OST_CXX_IOSTREAM is expanded from...
configure.ac:288: the top level])
m4trace:configure.ac:289: -1- OST_CXX_NEW_INIT
m4trace:configure.ac:289: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_cxx.m4:64: OST_CXX_NEW_INIT is expanded from...
configure.ac:289: the top level])
m4trace:configure.ac:289: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_cxx.m4:64: OST_CXX_NEW_INIT is expanded from...
configure.ac:289: the top level])
m4trace:configure.ac:289: -2- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
m4/ost_cxx.m4:64: OST_CXX_NEW_INIT is expanded from...
configure.ac:289: the top level])
m4trace:configure.ac:289: -1- m4_pattern_allow([^CCXX_HAVE_NEW_INIT$])
m4trace:configure.ac:289: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_cxx.m4:64: OST_CXX_NEW_INIT is expanded from...
configure.ac:289: the top level])
m4trace:configure.ac:290: -1- OST_SGI_STLPORT
m4trace:configure.ac:290: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:126: AC_LANG_SAVE is expanded from...
m4/ost_stlport.m4:53: OST_SGI_STLPORT is expanded from...
configure.ac:290: the top level])
m4trace:configure.ac:290: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:252: AC_LANG_CPLUSPLUS is expanded from...
m4/ost_stlport.m4:53: OST_SGI_STLPORT is expanded from...
configure.ac:290: the top level])
m4trace:configure.ac:290: -1- OST_SEARCH_LIBS([__stl_throw_invalid_argument], [
            namespace _STL { void __stl_throw_invalid_argument(const char*); }
        ], [_STL::__stl_throw_invalid_argument("x")], [stlport_gcc stlport_cygwin stlport_mingw32 stlport_sunpro stlport_watcom])
m4trace:configure.ac:290: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
m4/ost_stlport.m4:29: OST_SEARCH_LIBS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
m4/ost_stlport.m4:53: OST_SGI_STLPORT is expanded from...
configure.ac:290: the top level])
m4trace:configure.ac:290: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
m4/ost_stlport.m4:29: OST_SEARCH_LIBS is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:1482: AC_ARG_WITH is expanded from...
m4/ost_stlport.m4:53: OST_SGI_STLPORT is expanded from...
configure.ac:290: the top level])
m4trace:configure.ac:290: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/lang.m4:135: AC_LANG_RESTORE is expanded from...
m4/ost_stlport.m4:53: OST_SGI_STLPORT is expanded from...
configure.ac:290: the top level])
m4trace:configure.ac:298: -1- m4_pattern_allow([^WARN_FLAGS$])
m4trace:configure.ac:300: -1- OST_DEBUG
m4trace:configure.ac:312: -1- m4_pattern_allow([^LT_RELEASE$])
m4trace:configure.ac:313: -1- m4_pattern_allow([^KDOC_DIR$])
m4trace:configure.ac:314: -1- m4_pattern_allow([^CCXX_DIR$])
m4trace:configure.ac:315: -1- m4_pattern_allow([^incprefix$])
m4trace:configure.ac:316: -1- AM_CONDITIONAL([WIN32], [test $ost_cv_gnuwin32 = yes])
m4trace:configure.ac:316: -1- m4_pattern_allow([^WIN32_TRUE$])
m4trace:configure.ac:316: -1- m4_pattern_allow([^WIN32_FALSE$])
m4trace:configure.ac:316: -1- _AM_SUBST_NOTMAKE([WIN32_TRUE])
m4trace:configure.ac:316: -1- _AM_SUBST_NOTMAKE([WIN32_FALSE])
m4trace:configure.ac:317: -1- AM_CONDITIONAL([EXTRAS], [test $ost_cv_extras = yes])
m4trace:configure.ac:317: -1- m4_pattern_allow([^EXTRAS_TRUE$])
m4trace:configure.ac:317: -1- m4_pattern_allow([^EXTRAS_FALSE$])
m4trace:configure.ac:317: -1- _AM_SUBST_NOTMAKE([EXTRAS_TRUE])
m4trace:configure.ac:317: -1- _AM_SUBST_NOTMAKE([EXTRAS_FALSE])
m4trace:configure.ac:318: -1- m4_pattern_allow([^ost_cv_dynloader$])
m4trace:configure.ac:332: -1- m4_pattern_allow([^CYGWIN_IMPORTS$])
m4trace:configure.ac:339: -1- m4_pattern_allow([^_DARWIN6_$])
m4trace:configure.ac:349: -1- m4_pattern_allow([^COMMON_FLAGS$])
m4trace:configure.ac:350: -1- m4_pattern_allow([^SHARED_FLAGS$])
m4trace:configure.ac:351: -1- m4_pattern_allow([^MODULE_FLAGS$])
m4trace:configure.ac:352: -1- m4_pattern_allow([^BASE_LIB$])
m4trace:configure.ac:353: -1- m4_pattern_allow([^STAGE2$])
m4trace:configure.ac:355: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:356: -1- AC_SUBST_DIR([etc_confdir], [sysconfdir])
m4trace:configure.ac:356: -1- m4_pattern_allow([^etc_confdir$])
m4trace:configure.ac:359: -1- m4_pattern_allow([^ETC_PREFIX$])
m4trace:configure.ac:361: -1- m4_pattern_allow([^ETC_CONFDIR$])
m4trace:configure.ac:399: -1- m4_pattern_allow([^DOXYGEN$])
m4trace:configure.ac:400: -1- m4_pattern_allow([^DOXYGEN$])
m4trace:configure.ac:401: -1- AM_CONDITIONAL([DOXY], [test "$DOXYGEN" != "no"])
m4trace:configure.ac:401: -1- m4_pattern_allow([^DOXY_TRUE$])
m4trace:configure.ac:401: -1- m4_pattern_allow([^DOXY_FALSE$])
m4trace:configure.ac:401: -1- _AM_SUBST_NOTMAKE([DOXY_TRUE])
m4trace:configure.ac:401: -1- _AM_SUBST_NOTMAKE([DOXY_FALSE])
m4trace:configure.ac:403: -1- AM_CONDITIONAL([GETOPT_LONG], [test ! -z "$LIBGETOPTOBJS"])
m4trace:configure.ac:403: -1- m4_pattern_allow([^GETOPT_LONG_TRUE$])
m4trace:configure.ac:403: -1- m4_pattern_allow([^GETOPT_LONG_FALSE$])
m4trace:configure.ac:403: -1- _AM_SUBST_NOTMAKE([GETOPT_LONG_TRUE])
m4trace:configure.ac:403: -1- _AM_SUBST_NOTMAKE([GETOPT_LONG_FALSE])
m4trace:configure.ac:408: -1- m4_pattern_allow([^LIB_VERSION$])
m4trace:configure.ac:409: -1- m4_pattern_allow([^LIB_MAJOR$])
m4trace:configure.ac:411: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
You should run autoupdate.], [])
m4trace:configure.ac:411: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:411: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:411: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:411: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:411: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:411: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:411: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:411: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
m4trace:configure.ac:411: -1- _LT_PROG_LTMAIN
m4trace:configure.ac:411: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
