gdb: use libtool in GDB_AC_CHECK_BFD

Message ID 20221107194634.1313150-1-jose.marchesi@oracle.com
State Committed
Headers
Series gdb: use libtool in GDB_AC_CHECK_BFD |

Commit Message

Jose E. Marchesi Nov. 7, 2022, 7:46 p.m. UTC
  The GDB_AC_CHECK_BFD macro defined in gdb/acinclude.m4 uses the
AC_LINK_IFELSE autoconf macro in order to link a simple program to
check features of libbfd.

If libbfd's link dependencies change, it was necessary to reflect them
either in the definition of the macro, or as a consequence of checking
for them with an autoconf macro resulting in an addition to LIBS.

This patch modifies the definition of the GDB_CHECK_BFD macro in order
to use libtool to perform the test link.  This makes it possible to
not have to list dependencies of libbfd (which are indirect to GDB) at
all.

After this patch:

  configure:28555: checking for ELF support in BFD
  configure:28575: ./libtool --quiet --mode=link gcc -o conftest \
                   -I../../gdb/../include -I../bfd -I../../gdb/../bfd
                   -g -O2 -L../bfd -L../libiberty -L../zlib
                   conftest.c \
                   -lbfd -liberty -lz   -lncursesw -lm -ldl  >&5
  configure:28575: $? = 0
  configure:28585: result: yes
---
 gdb/acinclude.m4 |    3 +
 gdb/configure    | 1640 ++++++++++++++++++++++++++++++++++++++++++++++
 gdb/configure.ac |    3 +
 3 files changed, 1646 insertions(+)
  

Comments

Jose E. Marchesi Nov. 10, 2022, 10:02 a.m. UTC | #1
ping

> The GDB_AC_CHECK_BFD macro defined in gdb/acinclude.m4 uses the
> AC_LINK_IFELSE autoconf macro in order to link a simple program to
> check features of libbfd.
>
> If libbfd's link dependencies change, it was necessary to reflect them
> either in the definition of the macro, or as a consequence of checking
> for them with an autoconf macro resulting in an addition to LIBS.
>
> This patch modifies the definition of the GDB_CHECK_BFD macro in order
> to use libtool to perform the test link.  This makes it possible to
> not have to list dependencies of libbfd (which are indirect to GDB) at
> all.
>
> After this patch:
>
>   configure:28555: checking for ELF support in BFD
>   configure:28575: ./libtool --quiet --mode=link gcc -o conftest \
>                    -I../../gdb/../include -I../bfd -I../../gdb/../bfd
>                    -g -O2 -L../bfd -L../libiberty -L../zlib
>                    conftest.c \
>                    -lbfd -liberty -lz   -lncursesw -lm -ldl  >&5
>   configure:28575: $? = 0
>   configure:28585: result: yes
> ---
>  gdb/acinclude.m4 |    3 +
>  gdb/configure    | 1640 ++++++++++++++++++++++++++++++++++++++++++++++
>  gdb/configure.ac |    3 +
>  3 files changed, 1646 insertions(+)
>
> diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
> index 62fa66c7af3..bbe86f51f4d 100644
> --- a/gdb/acinclude.m4
> +++ b/gdb/acinclude.m4
> @@ -229,6 +229,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>    OLD_CFLAGS=$CFLAGS
>    OLD_LDFLAGS=$LDFLAGS
>    OLD_LIBS=$LIBS
> +  OLD_CC=$CC
>    # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
>    # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
>    # always want our bfd.
> @@ -237,6 +238,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>    LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
>    intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
>    LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
> +  CC="./libtool --quiet --mode=link $CC"
>    AC_CACHE_CHECK(
>      [$1],
>      [$2],
> @@ -252,6 +254,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>         [[$2]=no]
>       )]
>    )
> +  CC=$OLD_CC
>    CFLAGS=$OLD_CFLAGS
>    LDFLAGS=$OLD_LDFLAGS
>    LIBS=$OLD_LIBS])
> diff --git a/gdb/configure b/gdb/configure
> index b54ac671fe3..4d28a2503ae 100755
> --- a/gdb/configure
> +++ b/gdb/configure
> @@ -14800,6 +14800,1639 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
>  # Only expand once:
>  
>  
> +# ... and we need it soon, since it is used by some of the
> +# link tests in the configure script.
> +: ${CONFIG_LT=./config.lt}
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
> +$as_echo "$as_me: creating $CONFIG_LT" >&6;}
> +as_write_fail=0
> +cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
> +#! $SHELL
> +# Generated by $as_me.
> +# Run this file to recreate a libtool stub with the current configuration.
> +SHELL=\${CONFIG_SHELL-$SHELL}
> +export SHELL
> +_ASEOF
> +cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1
> +## -------------------- ##
> +## M4sh Initialization. ##
> +## -------------------- ##
> +
> +# Be more Bourne compatible
> +DUALCASE=1; export DUALCASE # for MKS sh
> +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
> +  emulate sh
> +  NULLCMD=:
> +  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
> +  # is contrary to our usage.  Disable this feature.
> +  alias -g '${1+"$@"}'='"$@"'
> +  setopt NO_GLOB_SUBST
> +else
> +  case `(set -o) 2>/dev/null` in #(
> +  *posix*) :
> +    set -o posix ;; #(
> +  *) :
> +     ;;
> +esac
> +fi
> +
> +
> +as_nl='
> +'
> +export as_nl
> +# Printing a long string crashes Solaris 7 /usr/bin/printf.
> +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
> +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
> +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
> +# Prefer a ksh shell builtin over an external printf program on Solaris,
> +# but without wasting forks for bash or zsh.
> +if test -z "$BASH_VERSION$ZSH_VERSION" \
> +    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
> +  as_echo='print -r --'
> +  as_echo_n='print -rn --'
> +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
> +  as_echo='printf %s\n'
> +  as_echo_n='printf %s'
> +else
> +  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
> +    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
> +    as_echo_n='/usr/ucb/echo -n'
> +  else
> +    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
> +    as_echo_n_body='eval
> +      arg=$1;
> +      case $arg in #(
> +      *"$as_nl"*)
> +	expr "X$arg" : "X\\(.*\\)$as_nl";
> +	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
> +      esac;
> +      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
> +    '
> +    export as_echo_n_body
> +    as_echo_n='sh -c $as_echo_n_body as_echo'
> +  fi
> +  export as_echo_body
> +  as_echo='sh -c $as_echo_body as_echo'
> +fi
> +
> +# The user is always right.
> +if test "${PATH_SEPARATOR+set}" != set; then
> +  PATH_SEPARATOR=:
> +  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
> +    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
> +      PATH_SEPARATOR=';'
> +  }
> +fi
> +
> +
> +# IFS
> +# We need space, tab and new line, in precisely that order.  Quoting is
> +# there to prevent editors from complaining about space-tab.
> +# (If _AS_PATH_WALK were called with IFS unset, it would disable word
> +# splitting by setting IFS to empty value.)
> +IFS=" ""	$as_nl"
> +
> +# Find who we are.  Look in the path if we contain no directory separator.
> +as_myself=
> +case $0 in #((
> +  *[\\/]* ) as_myself=$0 ;;
> +  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
> +for as_dir in $PATH
> +do
> +  IFS=$as_save_IFS
> +  test -z "$as_dir" && as_dir=.
> +    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
> +  done
> +IFS=$as_save_IFS
> +
> +     ;;
> +esac
> +# We did not find ourselves, most probably we were run as `sh COMMAND'
> +# in which case we are not to be found in the path.
> +if test "x$as_myself" = x; then
> +  as_myself=$0
> +fi
> +if test ! -f "$as_myself"; then
> +  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
> +  exit 1
> +fi
> +
> +# Unset variables that we do not need and which cause bugs (e.g. in
> +# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
> +# suppresses any "Segmentation fault" message there.  '((' could
> +# trigger a bug in pdksh 5.2.14.
> +for as_var in BASH_ENV ENV MAIL MAILPATH
> +do eval test x\${$as_var+set} = xset \
> +  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
> +done
> +PS1='$ '
> +PS2='> '
> +PS4='+ '
> +
> +# NLS nuisances.
> +LC_ALL=C
> +export LC_ALL
> +LANGUAGE=C
> +export LANGUAGE
> +
> +# CDPATH.
> +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
> +
> +
> +# as_fn_error STATUS ERROR [LINENO LOG_FD]
> +# ----------------------------------------
> +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
> +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
> +# script with STATUS, using 1 if that was 0.
> +as_fn_error ()
> +{
> +  as_status=$1; test $as_status -eq 0 && as_status=1
> +  if test "$4"; then
> +    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> +    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
> +  fi
> +  $as_echo "$as_me: error: $2" >&2
> +  as_fn_exit $as_status
> +} # as_fn_error
> +
> +
> +# as_fn_set_status STATUS
> +# -----------------------
> +# Set $? to STATUS, without forking.
> +as_fn_set_status ()
> +{
> +  return $1
> +} # as_fn_set_status
> +
> +# as_fn_exit STATUS
> +# -----------------
> +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
> +as_fn_exit ()
> +{
> +  set +e
> +  as_fn_set_status $1
> +  exit $1
> +} # as_fn_exit
> +
> +# as_fn_unset VAR
> +# ---------------
> +# Portably unset VAR.
> +as_fn_unset ()
> +{
> +  { eval $1=; unset $1;}
> +}
> +as_unset=as_fn_unset
> +# as_fn_append VAR VALUE
> +# ----------------------
> +# Append the text in VALUE to the end of the definition contained in VAR. Take
> +# advantage of any shell optimizations that allow amortized linear growth over
> +# repeated appends, instead of the typical quadratic growth present in naive
> +# implementations.
> +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
> +  eval 'as_fn_append ()
> +  {
> +    eval $1+=\$2
> +  }'
> +else
> +  as_fn_append ()
> +  {
> +    eval $1=\$$1\$2
> +  }
> +fi # as_fn_append
> +
> +# as_fn_arith ARG...
> +# ------------------
> +# Perform arithmetic evaluation on the ARGs, and store the result in the
> +# global $as_val. Take advantage of shells that can avoid forks. The arguments
> +# must be portable across $(()) and expr.
> +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
> +  eval 'as_fn_arith ()
> +  {
> +    as_val=$(( $* ))
> +  }'
> +else
> +  as_fn_arith ()
> +  {
> +    as_val=`expr "$@" || test $? -eq 1`
> +  }
> +fi # as_fn_arith
> +
> +
> +if expr a : '\(a\)' >/dev/null 2>&1 &&
> +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
> +  as_expr=expr
> +else
> +  as_expr=false
> +fi
> +
> +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
> +  as_basename=basename
> +else
> +  as_basename=false
> +fi
> +
> +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
> +  as_dirname=dirname
> +else
> +  as_dirname=false
> +fi
> +
> +as_me=`$as_basename -- "$0" ||
> +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
> +	 X"$0" : 'X\(//\)$' \| \
> +	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
> +$as_echo X/"$0" |
> +    sed '/^.*\/\([^/][^/]*\)\/*$/{
> +	    s//\1/
> +	    q
> +	  }
> +	  /^X\/\(\/\/\)$/{
> +	    s//\1/
> +	    q
> +	  }
> +	  /^X\/\(\/\).*/{
> +	    s//\1/
> +	    q
> +	  }
> +	  s/.*/./; q'`
> +
> +# Avoid depending upon Character Ranges.
> +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
> +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
> +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
> +as_cr_digits='0123456789'
> +as_cr_alnum=$as_cr_Letters$as_cr_digits
> +
> +ECHO_C= ECHO_N= ECHO_T=
> +case `echo -n x` in #(((((
> +-n*)
> +  case `echo 'xy\c'` in
> +  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
> +  xy)  ECHO_C='\c';;
> +  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
> +       ECHO_T='	';;
> +  esac;;
> +*)
> +  ECHO_N='-n';;
> +esac
> +
> +rm -f conf$$ conf$$.exe conf$$.file
> +if test -d conf$$.dir; then
> +  rm -f conf$$.dir/conf$$.file
> +else
> +  rm -f conf$$.dir
> +  mkdir conf$$.dir 2>/dev/null
> +fi
> +if (echo >conf$$.file) 2>/dev/null; then
> +  if ln -s conf$$.file conf$$ 2>/dev/null; then
> +    as_ln_s='ln -s'
> +    # ... but there are two gotchas:
> +    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
> +    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
> +    # In both cases, we have to default to `cp -pR'.
> +    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
> +      as_ln_s='cp -pR'
> +  elif ln conf$$.file conf$$ 2>/dev/null; then
> +    as_ln_s=ln
> +  else
> +    as_ln_s='cp -pR'
> +  fi
> +else
> +  as_ln_s='cp -pR'
> +fi
> +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
> +rmdir conf$$.dir 2>/dev/null
> +
> +
> +# as_fn_mkdir_p
> +# -------------
> +# Create "$as_dir" as a directory, including parents if necessary.
> +as_fn_mkdir_p ()
> +{
> +
> +  case $as_dir in #(
> +  -*) as_dir=./$as_dir;;
> +  esac
> +  test -d "$as_dir" || eval $as_mkdir_p || {
> +    as_dirs=
> +    while :; do
> +      case $as_dir in #(
> +      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
> +      *) as_qdir=$as_dir;;
> +      esac
> +      as_dirs="'$as_qdir' $as_dirs"
> +      as_dir=`$as_dirname -- "$as_dir" ||
> +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
> +	 X"$as_dir" : 'X\(//\)[^/]' \| \
> +	 X"$as_dir" : 'X\(//\)$' \| \
> +	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
> +$as_echo X"$as_dir" |
> +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
> +	    s//\1/
> +	    q
> +	  }
> +	  /^X\(\/\/\)[^/].*/{
> +	    s//\1/
> +	    q
> +	  }
> +	  /^X\(\/\/\)$/{
> +	    s//\1/
> +	    q
> +	  }
> +	  /^X\(\/\).*/{
> +	    s//\1/
> +	    q
> +	  }
> +	  s/.*/./; q'`
> +      test -d "$as_dir" && break
> +    done
> +    test -z "$as_dirs" || eval "mkdir $as_dirs"
> +  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
> +
> +
> +} # as_fn_mkdir_p
> +if mkdir -p . 2>/dev/null; then
> +  as_mkdir_p='mkdir -p "$as_dir"'
> +else
> +  test -d ./-p && rmdir ./-p
> +  as_mkdir_p=false
> +fi
> +
> +
> +# as_fn_executable_p FILE
> +# -----------------------
> +# Test if FILE is an executable regular file.
> +as_fn_executable_p ()
> +{
> +  test -f "$1" && test -x "$1"
> +} # as_fn_executable_p
> +as_test_x='test -x'
> +as_executable_p=as_fn_executable_p
> +
> +# Sed expression to map a string onto a valid CPP name.
> +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
> +
> +# Sed expression to map a string onto a valid variable name.
> +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
> +
> +
> +exec 6>&1
> +## --------------------------------- ##
> +## Main body of "$CONFIG_LT" script. ##
> +## --------------------------------- ##
> +_ASEOF
> +test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
> +
> +cat >>"$CONFIG_LT" <<\_LTEOF
> +lt_cl_silent=false
> +exec 5>>config.log
> +{
> +  echo
> +  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
> +## Running $as_me. ##
> +_ASBOX
> +} >&5
> +
> +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="\
> +config.lt
> +configured by $0, generated by GNU Autoconf 2.69.
> +
> +Copyright (C) 2009 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=: ;;
> +
> +    -*) as_fn_error $? "unrecognized option: $1
> +Try \`$0 --help' for more information." "$LINENO" 5 ;;
> +
> +    *) as_fn_error $? "unrecognized argument: $1
> +Try \`$0 --help' for more information." "$LINENO" 5 ;;
> +  esac
> +  shift
> +done
> +
> +if $lt_cl_silent; then
> +  exec 6>/dev/null
> +fi
> +_LTEOF
> +
> +cat >>"$CONFIG_LT" <<_LTEOF
> +
> +
> +# The HP-UX ksh and POSIX shell print the target directory to stdout
> +# if CDPATH is set.
> +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
> +
> +sed_quote_subst='$sed_quote_subst'
> +double_quote_subst='$double_quote_subst'
> +delay_variable_subst='$delay_variable_subst'
> +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
> +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
> +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
> +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
> +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
> +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
> +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
> +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
> +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
> +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
> +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
> +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
> +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
> +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
> +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
> +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
> +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
> +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
> +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
> +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
> +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
> +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
> +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
> +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
> +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
> +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
> +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
> +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
> +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
> +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
> +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
> +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
> +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
> +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
> +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
> +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
> +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
> +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
> +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
> +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
> +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
> +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
> +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
> +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
> +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
> +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
> +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
> +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
> +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
> +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
> +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
> +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
> +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
> +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
> +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
> +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
> +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
> +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
> +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
> +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
> +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
> +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
> +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
> +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
> +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
> +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
> +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
> +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
> +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
> +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
> +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
> +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
> +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
> +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
> +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
> +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
> +hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
> +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
> +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
> +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
> +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
> +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
> +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
> +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
> +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
> +fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
> +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
> +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
> +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
> +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
> +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
> +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
> +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
> +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
> +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
> +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
> +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
> +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
> +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
> +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
> +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
> +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
> +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
> +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
> +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
> +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
> +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
> +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
> +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
> +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
> +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
> +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
> +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
> +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
> +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
> +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
> +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
> +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
> +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
> +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
> +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
> +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
> +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
> +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
> +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
> +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
> +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
> +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
> +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
> +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
> +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
> +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
> +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
> +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
> +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
> +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
> +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
> +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
> +fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_CXX" | $SED "$delay_single_quote_subst"`'
> +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
> +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
> +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
> +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
> +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
> +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
> +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
> +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
> +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
> +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
> +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
> +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
> +
> +LTCC='$LTCC'
> +LTCFLAGS='$LTCFLAGS'
> +compiler='$compiler_DEFAULT'
> +
> +# A function that is used when there is no print builtin or printf.
> +func_fallback_echo ()
> +{
> +  eval 'cat <<_LTECHO_EOF
> +\$1
> +_LTECHO_EOF'
> +}
> +
> +# Quote evaled strings.
> +for var in SHELL \
> +ECHO \
> +SED \
> +GREP \
> +EGREP \
> +FGREP \
> +LD \
> +NM \
> +LN_S \
> +lt_SP2NL \
> +lt_NL2SP \
> +reload_flag \
> +OBJDUMP \
> +deplibs_check_method \
> +file_magic_cmd \
> +AR \
> +AR_FLAGS \
> +STRIP \
> +RANLIB \
> +CC \
> +CFLAGS \
> +compiler \
> +lt_cv_sys_global_symbol_pipe \
> +lt_cv_sys_global_symbol_to_cdecl \
> +lt_cv_sys_global_symbol_to_c_name_address \
> +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
> +lt_prog_compiler_no_builtin_flag \
> +lt_prog_compiler_wl \
> +lt_prog_compiler_pic \
> +lt_prog_compiler_static \
> +lt_cv_prog_compiler_c_o \
> +need_locks \
> +DSYMUTIL \
> +NMEDIT \
> +LIPO \
> +OTOOL \
> +OTOOL64 \
> +shrext_cmds \
> +export_dynamic_flag_spec \
> +whole_archive_flag_spec \
> +compiler_needs_object \
> +with_gnu_ld \
> +allow_undefined_flag \
> +no_undefined_flag \
> +hardcode_libdir_flag_spec \
> +hardcode_libdir_flag_spec_ld \
> +hardcode_libdir_separator \
> +fix_srcfile_path \
> +exclude_expsyms \
> +include_expsyms \
> +file_list_spec \
> +variables_saved_for_relink \
> +libname_spec \
> +library_names_spec \
> +soname_spec \
> +install_override_mode \
> +finish_eval \
> +old_striplib \
> +striplib \
> +compiler_lib_search_dirs \
> +predep_objects \
> +postdep_objects \
> +predeps \
> +postdeps \
> +compiler_lib_search_path \
> +LD_CXX \
> +reload_flag_CXX \
> +compiler_CXX \
> +lt_prog_compiler_no_builtin_flag_CXX \
> +lt_prog_compiler_wl_CXX \
> +lt_prog_compiler_pic_CXX \
> +lt_prog_compiler_static_CXX \
> +lt_cv_prog_compiler_c_o_CXX \
> +export_dynamic_flag_spec_CXX \
> +whole_archive_flag_spec_CXX \
> +compiler_needs_object_CXX \
> +with_gnu_ld_CXX \
> +allow_undefined_flag_CXX \
> +no_undefined_flag_CXX \
> +hardcode_libdir_flag_spec_CXX \
> +hardcode_libdir_flag_spec_ld_CXX \
> +hardcode_libdir_separator_CXX \
> +fix_srcfile_path_CXX \
> +exclude_expsyms_CXX \
> +include_expsyms_CXX \
> +file_list_spec_CXX \
> +compiler_lib_search_dirs_CXX \
> +predep_objects_CXX \
> +postdep_objects_CXX \
> +predeps_CXX \
> +postdeps_CXX \
> +compiler_lib_search_path_CXX; do
> +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
> +    *[\\\\\\\`\\"\\\$]*)
> +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
> +      ;;
> +    *)
> +      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
> +      ;;
> +    esac
> +done
> +
> +# Double-quote double-evaled strings.
> +for var in reload_cmds \
> +old_postinstall_cmds \
> +old_postuninstall_cmds \
> +old_archive_cmds \
> +extract_expsyms_cmds \
> +old_archive_from_new_cmds \
> +old_archive_from_expsyms_cmds \
> +archive_cmds \
> +archive_expsym_cmds \
> +module_cmds \
> +module_expsym_cmds \
> +export_symbols_cmds \
> +prelink_cmds \
> +postinstall_cmds \
> +postuninstall_cmds \
> +finish_cmds \
> +sys_lib_search_path_spec \
> +sys_lib_dlsearch_path_spec \
> +reload_cmds_CXX \
> +old_archive_cmds_CXX \
> +old_archive_from_new_cmds_CXX \
> +old_archive_from_expsyms_cmds_CXX \
> +archive_cmds_CXX \
> +archive_expsym_cmds_CXX \
> +module_cmds_CXX \
> +module_expsym_cmds_CXX \
> +export_symbols_cmds_CXX \
> +prelink_cmds_CXX; do
> +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
> +    *[\\\\\\\`\\"\\\$]*)
> +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
> +      ;;
> +    *)
> +      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
> +      ;;
> +    esac
> +done
> +
> +ac_aux_dir='$ac_aux_dir'
> +xsi_shell='$xsi_shell'
> +lt_shell_append='$lt_shell_append'
> +
> +# See if we are running on zsh, and set the options which allow our
> +# commands through without removal of \ escapes INIT.
> +if test -n "\${ZSH_VERSION+set}" ; then
> +   setopt NO_GLOB_SUBST
> +fi
> +
> +
> +    PACKAGE='$PACKAGE'
> +    VERSION='$VERSION'
> +    TIMESTAMP='$TIMESTAMP'
> +    RM='$RM'
> +    ofile='$ofile'
> +
> +
> +
> +
> +
> +_LTEOF
> +
> +cat >>"$CONFIG_LT" <<\_LTEOF
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
> +$as_echo "$as_me: creating $ofile" >&6;}
> +
> +
> +    # See if we are running on zsh, and set the options which allow our
> +    # commands through without removal of \ escapes.
> +    if test -n "${ZSH_VERSION+set}" ; then
> +      setopt NO_GLOB_SUBST
> +    fi
> +
> +    cfgfile="${ofile}T"
> +    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
> +    $RM "$cfgfile"
> +
> +    cat <<_LT_EOF >> "$cfgfile"
> +#! $SHELL
> +
> +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
> +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
> +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
> +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
> +#
> +#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
> +#                 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
> +#   Written by Gordon Matzigkeit, 1996
> +#
> +#   This file is part of GNU Libtool.
> +#
> +# GNU Libtool is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License as
> +# published by the Free Software Foundation; either version 2 of
> +# the License, or (at your option) any later version.
> +#
> +# As a special exception to the GNU General Public License,
> +# if you distribute this file as part of a program or library that
> +# is built using GNU Libtool, you may include this file under the
> +# same distribution terms that you use for the rest of that program.
> +#
> +# GNU Libtool is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with GNU Libtool; see the file COPYING.  If not, a copy
> +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
> +# obtained by writing to the Free Software Foundation, Inc.,
> +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
> +
> +
> +# The names of the tagged configurations supported by this script.
> +available_tags="CXX "
> +
> +# ### BEGIN LIBTOOL CONFIG
> +
> +# Which release of libtool.m4 was used?
> +macro_version=$macro_version
> +macro_revision=$macro_revision
> +
> +# Whether or not to build shared libraries.
> +build_libtool_libs=$enable_shared
> +
> +# Whether or not to build static libraries.
> +build_old_libs=$enable_static
> +
> +# What type of objects to build.
> +pic_mode=$pic_mode
> +
> +# Whether or not to optimize for fast installation.
> +fast_install=$enable_fast_install
> +
> +# Shell to use when invoking shell scripts.
> +SHELL=$lt_SHELL
> +
> +# An echo program that protects backslashes.
> +ECHO=$lt_ECHO
> +
> +# The host system.
> +host_alias=$host_alias
> +host=$host
> +host_os=$host_os
> +
> +# The build system.
> +build_alias=$build_alias
> +build=$build
> +build_os=$build_os
> +
> +# A sed program that does not truncate output.
> +SED=$lt_SED
> +
> +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
> +Xsed="\$SED -e 1s/^X//"
> +
> +# A grep program that handles long lines.
> +GREP=$lt_GREP
> +
> +# An ERE matcher.
> +EGREP=$lt_EGREP
> +
> +# A literal string matcher.
> +FGREP=$lt_FGREP
> +
> +# A BSD- or MS-compatible name lister.
> +NM=$lt_NM
> +
> +# Whether we need soft or hard links.
> +LN_S=$lt_LN_S
> +
> +# What is the maximum length of a command?
> +max_cmd_len=$max_cmd_len
> +
> +# Object file suffix (normally "o").
> +objext=$ac_objext
> +
> +# Executable file suffix (normally "").
> +exeext=$exeext
> +
> +# whether the shell understands "unset".
> +lt_unset=$lt_unset
> +
> +# turn spaces into newlines.
> +SP2NL=$lt_lt_SP2NL
> +
> +# turn newlines into spaces.
> +NL2SP=$lt_lt_NL2SP
> +
> +# An object symbol dumper.
> +OBJDUMP=$lt_OBJDUMP
> +
> +# Method to check whether dependent libraries are shared objects.
> +deplibs_check_method=$lt_deplibs_check_method
> +
> +# Command to use when deplibs_check_method == "file_magic".
> +file_magic_cmd=$lt_file_magic_cmd
> +
> +# The archiver.
> +AR=$lt_AR
> +AR_FLAGS=$lt_AR_FLAGS
> +
> +# A symbol stripping program.
> +STRIP=$lt_STRIP
> +
> +# Commands used to install an old-style archive.
> +RANLIB=$lt_RANLIB
> +old_postinstall_cmds=$lt_old_postinstall_cmds
> +old_postuninstall_cmds=$lt_old_postuninstall_cmds
> +
> +# Whether to use a lock for old archive extraction.
> +lock_old_archive_extraction=$lock_old_archive_extraction
> +
> +# A C compiler.
> +LTCC=$lt_CC
> +
> +# LTCC compiler flags.
> +LTCFLAGS=$lt_CFLAGS
> +
> +# Take the output of nm and produce a listing of raw symbols and C names.
> +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
> +
> +# Transform the output of nm in a proper C declaration.
> +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
> +
> +# Transform the output of nm in a C name address pair.
> +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
> +
> +# Transform the output of nm in a C name address pair when lib prefix is needed.
> +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
> +
> +# The name of the directory that contains temporary libtool files.
> +objdir=$objdir
> +
> +# Used to examine libraries when file_magic_cmd begins with "file".
> +MAGIC_CMD=$MAGIC_CMD
> +
> +# Must we lock files when doing compilation?
> +need_locks=$lt_need_locks
> +
> +# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
> +DSYMUTIL=$lt_DSYMUTIL
> +
> +# Tool to change global to local symbols on Mac OS X.
> +NMEDIT=$lt_NMEDIT
> +
> +# Tool to manipulate fat objects and archives on Mac OS X.
> +LIPO=$lt_LIPO
> +
> +# ldd/readelf like tool for Mach-O binaries on Mac OS X.
> +OTOOL=$lt_OTOOL
> +
> +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
> +OTOOL64=$lt_OTOOL64
> +
> +# Old archive suffix (normally "a").
> +libext=$libext
> +
> +# Shared library suffix (normally ".so").
> +shrext_cmds=$lt_shrext_cmds
> +
> +# The commands to extract the exported symbol list from a shared archive.
> +extract_expsyms_cmds=$lt_extract_expsyms_cmds
> +
> +# Variables whose values should be saved in libtool wrapper scripts and
> +# restored at link time.
> +variables_saved_for_relink=$lt_variables_saved_for_relink
> +
> +# Do we need the "lib" prefix for modules?
> +need_lib_prefix=$need_lib_prefix
> +
> +# Do we need a version for libraries?
> +need_version=$need_version
> +
> +# Library versioning type.
> +version_type=$version_type
> +
> +# Shared library runtime path variable.
> +runpath_var=$runpath_var
> +
> +# Shared library path variable.
> +shlibpath_var=$shlibpath_var
> +
> +# Is shlibpath searched before the hard-coded library search path?
> +shlibpath_overrides_runpath=$shlibpath_overrides_runpath
> +
> +# Format of library name prefix.
> +libname_spec=$lt_libname_spec
> +
> +# List of archive names.  First name is the real one, the rest are links.
> +# The last name is the one that the linker finds with -lNAME
> +library_names_spec=$lt_library_names_spec
> +
> +# The coded name of the library, if different from the real name.
> +soname_spec=$lt_soname_spec
> +
> +# Permission mode override for installation of shared libraries.
> +install_override_mode=$lt_install_override_mode
> +
> +# Command to use after installation of a shared archive.
> +postinstall_cmds=$lt_postinstall_cmds
> +
> +# Command to use after uninstallation of a shared archive.
> +postuninstall_cmds=$lt_postuninstall_cmds
> +
> +# Commands used to finish a libtool library installation in a directory.
> +finish_cmds=$lt_finish_cmds
> +
> +# As "finish_cmds", except a single script fragment to be evaled but
> +# not shown.
> +finish_eval=$lt_finish_eval
> +
> +# Whether we should hardcode library paths into libraries.
> +hardcode_into_libs=$hardcode_into_libs
> +
> +# Compile-time system search path for libraries.
> +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
> +
> +# Run-time system search path for libraries.
> +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
> +
> +# Whether dlopen is supported.
> +dlopen_support=$enable_dlopen
> +
> +# Whether dlopen of programs is supported.
> +dlopen_self=$enable_dlopen_self
> +
> +# Whether dlopen of statically linked programs is supported.
> +dlopen_self_static=$enable_dlopen_self_static
> +
> +# Commands to strip libraries.
> +old_striplib=$lt_old_striplib
> +striplib=$lt_striplib
> +
> +
> +# The linker used to build libraries.
> +LD=$lt_LD
> +
> +# How to create reloadable object files.
> +reload_flag=$lt_reload_flag
> +reload_cmds=$lt_reload_cmds
> +
> +# Commands used to build an old-style archive.
> +old_archive_cmds=$lt_old_archive_cmds
> +
> +# A language specific compiler.
> +CC=$lt_compiler
> +
> +# Is the compiler the GNU compiler?
> +with_gcc=$GCC
> +
> +# Compiler flag to turn off builtin functions.
> +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
> +
> +# How to pass a linker flag through the compiler.
> +wl=$lt_lt_prog_compiler_wl
> +
> +# Additional compiler flags for building library objects.
> +pic_flag=$lt_lt_prog_compiler_pic
> +
> +# Compiler flag to prevent dynamic linking.
> +link_static_flag=$lt_lt_prog_compiler_static
> +
> +# Does compiler simultaneously support -c and -o options?
> +compiler_c_o=$lt_lt_cv_prog_compiler_c_o
> +
> +# Whether or not to add -lc for building shared libraries.
> +build_libtool_need_lc=$archive_cmds_need_lc
> +
> +# Whether or not to disallow shared libs when runtime libs are static.
> +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
> +
> +# Compiler flag to allow reflexive dlopens.
> +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
> +
> +# Compiler flag to generate shared objects directly from archives.
> +whole_archive_flag_spec=$lt_whole_archive_flag_spec
> +
> +# Whether the compiler copes with passing no objects directly.
> +compiler_needs_object=$lt_compiler_needs_object
> +
> +# Create an old-style archive from a shared archive.
> +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
> +
> +# Create a temporary old-style archive to link instead of a shared archive.
> +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
> +
> +# Commands used to build a shared archive.
> +archive_cmds=$lt_archive_cmds
> +archive_expsym_cmds=$lt_archive_expsym_cmds
> +
> +# Commands used to build a loadable module if different from building
> +# a shared archive.
> +module_cmds=$lt_module_cmds
> +module_expsym_cmds=$lt_module_expsym_cmds
> +
> +# Whether we are building with GNU ld or not.
> +with_gnu_ld=$lt_with_gnu_ld
> +
> +# Flag that allows shared libraries with undefined symbols to be built.
> +allow_undefined_flag=$lt_allow_undefined_flag
> +
> +# Flag that enforces no undefined symbols.
> +no_undefined_flag=$lt_no_undefined_flag
> +
> +# Flag to hardcode \$libdir into a binary during linking.
> +# This must work even if \$libdir does not exist
> +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
> +
> +# If ld is used when linking, flag to hardcode \$libdir into a binary
> +# during linking.  This must work even if \$libdir does not exist.
> +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
> +
> +# Whether we need a single "-rpath" flag with a separated argument.
> +hardcode_libdir_separator=$lt_hardcode_libdir_separator
> +
> +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
> +# DIR into the resulting binary.
> +hardcode_direct=$hardcode_direct
> +
> +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
> +# DIR into the resulting binary and the resulting library dependency is
> +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
> +# library is relocated.
> +hardcode_direct_absolute=$hardcode_direct_absolute
> +
> +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
> +# into the resulting binary.
> +hardcode_minus_L=$hardcode_minus_L
> +
> +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
> +# into the resulting binary.
> +hardcode_shlibpath_var=$hardcode_shlibpath_var
> +
> +# Set to "yes" if building a shared library automatically hardcodes DIR
> +# into the library and all subsequent libraries and executables linked
> +# against it.
> +hardcode_automatic=$hardcode_automatic
> +
> +# Set to yes if linker adds runtime paths of dependent libraries
> +# to runtime path list.
> +inherit_rpath=$inherit_rpath
> +
> +# Whether libtool must link a program against all its dependency libraries.
> +link_all_deplibs=$link_all_deplibs
> +
> +# Fix the shell variable \$srcfile for the compiler.
> +fix_srcfile_path=$lt_fix_srcfile_path
> +
> +# Set to "yes" if exported symbols are required.
> +always_export_symbols=$always_export_symbols
> +
> +# The commands to list exported symbols.
> +export_symbols_cmds=$lt_export_symbols_cmds
> +
> +# Symbols that should not be listed in the preloaded symbols.
> +exclude_expsyms=$lt_exclude_expsyms
> +
> +# Symbols that must always be exported.
> +include_expsyms=$lt_include_expsyms
> +
> +# Commands necessary for linking programs (against libraries) with templates.
> +prelink_cmds=$lt_prelink_cmds
> +
> +# Specify filename containing input files.
> +file_list_spec=$lt_file_list_spec
> +
> +# How to hardcode a shared library path into an executable.
> +hardcode_action=$hardcode_action
> +
> +# The directories searched by this compiler when creating a shared library.
> +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
> +
> +# Dependencies to place before and after the objects being linked to
> +# create a shared library.
> +predep_objects=$lt_predep_objects
> +postdep_objects=$lt_postdep_objects
> +predeps=$lt_predeps
> +postdeps=$lt_postdeps
> +
> +# The library search path used internally by the compiler when linking
> +# a shared library.
> +compiler_lib_search_path=$lt_compiler_lib_search_path
> +
> +# ### END LIBTOOL CONFIG
> +
> +_LT_EOF
> +
> +  case $host_os in
> +  aix3*)
> +    cat <<\_LT_EOF >> "$cfgfile"
> +# AIX sometimes has problems with the GCC collect2 program.  For some
> +# reason, if we set the COLLECT_NAMES environment variable, the problems
> +# vanish in a puff of smoke.
> +if test "X${COLLECT_NAMES+set}" != Xset; then
> +  COLLECT_NAMES=
> +  export COLLECT_NAMES
> +fi
> +_LT_EOF
> +    ;;
> +  esac
> +
> +
> +ltmain="$ac_aux_dir/ltmain.sh"
> +
> +
> +  # We use sed instead of cat because bash on DJGPP gets confused if
> +  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
> +  # text mode, it properly converts lines to CR/LF.  This bash problem
> +  # is reportedly fixed, but why not run on old versions too?
> +  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
> +    || (rm -f "$cfgfile"; exit 1)
> +
> +  case $xsi_shell in
> +  yes)
> +    cat << \_LT_EOF >> "$cfgfile"
> +
> +# func_dirname file append nondir_replacement
> +# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
> +# otherwise set result to NONDIR_REPLACEMENT.
> +func_dirname ()
> +{
> +  case ${1} in
> +    */*) func_dirname_result="${1%/*}${2}" ;;
> +    *  ) func_dirname_result="${3}" ;;
> +  esac
> +}
> +
> +# func_basename file
> +func_basename ()
> +{
> +  func_basename_result="${1##*/}"
> +}
> +
> +# func_dirname_and_basename file append nondir_replacement
> +# perform func_basename and func_dirname in a single function
> +# call:
> +#   dirname:  Compute the dirname of FILE.  If nonempty,
> +#             add APPEND to the result, otherwise set result
> +#             to NONDIR_REPLACEMENT.
> +#             value returned in "$func_dirname_result"
> +#   basename: Compute filename of FILE.
> +#             value retuned in "$func_basename_result"
> +# Implementation must be kept synchronized with func_dirname
> +# and func_basename. For efficiency, we do not delegate to
> +# those functions but instead duplicate the functionality here.
> +func_dirname_and_basename ()
> +{
> +  case ${1} in
> +    */*) func_dirname_result="${1%/*}${2}" ;;
> +    *  ) func_dirname_result="${3}" ;;
> +  esac
> +  func_basename_result="${1##*/}"
> +}
> +
> +# func_stripname prefix suffix name
> +# strip PREFIX and SUFFIX off of NAME.
> +# PREFIX and SUFFIX must not contain globbing or regex special
> +# characters, hashes, percent signs, but SUFFIX may contain a leading
> +# dot (in which case that matches only a dot).
> +func_stripname ()
> +{
> +  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
> +  # positional parameters, so assign one to ordinary parameter first.
> +  func_stripname_result=${3}
> +  func_stripname_result=${func_stripname_result#"${1}"}
> +  func_stripname_result=${func_stripname_result%"${2}"}
> +}
> +
> +# func_opt_split
> +func_opt_split ()
> +{
> +  func_opt_split_opt=${1%%=*}
> +  func_opt_split_arg=${1#*=}
> +}
> +
> +# func_lo2o object
> +func_lo2o ()
> +{
> +  case ${1} in
> +    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
> +    *)    func_lo2o_result=${1} ;;
> +  esac
> +}
> +
> +# func_xform libobj-or-source
> +func_xform ()
> +{
> +  func_xform_result=${1%.*}.lo
> +}
> +
> +# func_arith arithmetic-term...
> +func_arith ()
> +{
> +  func_arith_result=$(( $* ))
> +}
> +
> +# func_len string
> +# STRING may not start with a hyphen.
> +func_len ()
> +{
> +  func_len_result=${#1}
> +}
> +
> +_LT_EOF
> +    ;;
> +  *) # Bourne compatible functions.
> +    cat << \_LT_EOF >> "$cfgfile"
> +
> +# func_dirname file append nondir_replacement
> +# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
> +# otherwise set result to NONDIR_REPLACEMENT.
> +func_dirname ()
> +{
> +  # Extract subdirectory from the argument.
> +  func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
> +  if test "X$func_dirname_result" = "X${1}"; then
> +    func_dirname_result="${3}"
> +  else
> +    func_dirname_result="$func_dirname_result${2}"
> +  fi
> +}
> +
> +# func_basename file
> +func_basename ()
> +{
> +  func_basename_result=`$ECHO "${1}" | $SED "$basename"`
> +}
> +
> +
> +# func_stripname prefix suffix name
> +# strip PREFIX and SUFFIX off of NAME.
> +# PREFIX and SUFFIX must not contain globbing or regex special
> +# characters, hashes, percent signs, but SUFFIX may contain a leading
> +# dot (in which case that matches only a dot).
> +# func_strip_suffix prefix name
> +func_stripname ()
> +{
> +  case ${2} in
> +    .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
> +    *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
> +  esac
> +}
> +
> +# sed scripts:
> +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
> +my_sed_long_arg='1s/^-[^=]*=//'
> +
> +# func_opt_split
> +func_opt_split ()
> +{
> +  func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
> +  func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
> +}
> +
> +# func_lo2o object
> +func_lo2o ()
> +{
> +  func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
> +}
> +
> +# func_xform libobj-or-source
> +func_xform ()
> +{
> +  func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
> +}
> +
> +# func_arith arithmetic-term...
> +func_arith ()
> +{
> +  func_arith_result=`expr "$@"`
> +}
> +
> +# func_len string
> +# STRING may not start with a hyphen.
> +func_len ()
> +{
> +  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
> +}
> +
> +_LT_EOF
> +esac
> +
> +case $lt_shell_append in
> +  yes)
> +    cat << \_LT_EOF >> "$cfgfile"
> +
> +# func_append var value
> +# Append VALUE to the end of shell variable VAR.
> +func_append ()
> +{
> +  eval "$1+=\$2"
> +}
> +_LT_EOF
> +    ;;
> +  *)
> +    cat << \_LT_EOF >> "$cfgfile"
> +
> +# func_append var value
> +# Append VALUE to the end of shell variable VAR.
> +func_append ()
> +{
> +  eval "$1=\$$1\$2"
> +}
> +
> +_LT_EOF
> +    ;;
> +  esac
> +
> +
> +  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
> +    || (rm -f "$cfgfile"; exit 1)
> +
> +  mv -f "$cfgfile" "$ofile" ||
> +    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
> +  chmod +x "$ofile"
> +
> +
> +    cat <<_LT_EOF >> "$ofile"
> +
> +# ### BEGIN LIBTOOL TAG CONFIG: CXX
> +
> +# The linker used to build libraries.
> +LD=$lt_LD_CXX
> +
> +# How to create reloadable object files.
> +reload_flag=$lt_reload_flag_CXX
> +reload_cmds=$lt_reload_cmds_CXX
> +
> +# Commands used to build an old-style archive.
> +old_archive_cmds=$lt_old_archive_cmds_CXX
> +
> +# A language specific compiler.
> +CC=$lt_compiler_CXX
> +
> +# Is the compiler the GNU compiler?
> +with_gcc=$GCC_CXX
> +
> +# Compiler flag to turn off builtin functions.
> +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
> +
> +# How to pass a linker flag through the compiler.
> +wl=$lt_lt_prog_compiler_wl_CXX
> +
> +# Additional compiler flags for building library objects.
> +pic_flag=$lt_lt_prog_compiler_pic_CXX
> +
> +# Compiler flag to prevent dynamic linking.
> +link_static_flag=$lt_lt_prog_compiler_static_CXX
> +
> +# Does compiler simultaneously support -c and -o options?
> +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
> +
> +# Whether or not to add -lc for building shared libraries.
> +build_libtool_need_lc=$archive_cmds_need_lc_CXX
> +
> +# Whether or not to disallow shared libs when runtime libs are static.
> +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
> +
> +# Compiler flag to allow reflexive dlopens.
> +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
> +
> +# Compiler flag to generate shared objects directly from archives.
> +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
> +
> +# Whether the compiler copes with passing no objects directly.
> +compiler_needs_object=$lt_compiler_needs_object_CXX
> +
> +# Create an old-style archive from a shared archive.
> +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
> +
> +# Create a temporary old-style archive to link instead of a shared archive.
> +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
> +
> +# Commands used to build a shared archive.
> +archive_cmds=$lt_archive_cmds_CXX
> +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
> +
> +# Commands used to build a loadable module if different from building
> +# a shared archive.
> +module_cmds=$lt_module_cmds_CXX
> +module_expsym_cmds=$lt_module_expsym_cmds_CXX
> +
> +# Whether we are building with GNU ld or not.
> +with_gnu_ld=$lt_with_gnu_ld_CXX
> +
> +# Flag that allows shared libraries with undefined symbols to be built.
> +allow_undefined_flag=$lt_allow_undefined_flag_CXX
> +
> +# Flag that enforces no undefined symbols.
> +no_undefined_flag=$lt_no_undefined_flag_CXX
> +
> +# Flag to hardcode \$libdir into a binary during linking.
> +# This must work even if \$libdir does not exist
> +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
> +
> +# If ld is used when linking, flag to hardcode \$libdir into a binary
> +# during linking.  This must work even if \$libdir does not exist.
> +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
> +
> +# Whether we need a single "-rpath" flag with a separated argument.
> +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
> +
> +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
> +# DIR into the resulting binary.
> +hardcode_direct=$hardcode_direct_CXX
> +
> +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
> +# DIR into the resulting binary and the resulting library dependency is
> +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
> +# library is relocated.
> +hardcode_direct_absolute=$hardcode_direct_absolute_CXX
> +
> +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
> +# into the resulting binary.
> +hardcode_minus_L=$hardcode_minus_L_CXX
> +
> +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
> +# into the resulting binary.
> +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
> +
> +# Set to "yes" if building a shared library automatically hardcodes DIR
> +# into the library and all subsequent libraries and executables linked
> +# against it.
> +hardcode_automatic=$hardcode_automatic_CXX
> +
> +# Set to yes if linker adds runtime paths of dependent libraries
> +# to runtime path list.
> +inherit_rpath=$inherit_rpath_CXX
> +
> +# Whether libtool must link a program against all its dependency libraries.
> +link_all_deplibs=$link_all_deplibs_CXX
> +
> +# Fix the shell variable \$srcfile for the compiler.
> +fix_srcfile_path=$lt_fix_srcfile_path_CXX
> +
> +# Set to "yes" if exported symbols are required.
> +always_export_symbols=$always_export_symbols_CXX
> +
> +# The commands to list exported symbols.
> +export_symbols_cmds=$lt_export_symbols_cmds_CXX
> +
> +# Symbols that should not be listed in the preloaded symbols.
> +exclude_expsyms=$lt_exclude_expsyms_CXX
> +
> +# Symbols that must always be exported.
> +include_expsyms=$lt_include_expsyms_CXX
> +
> +# Commands necessary for linking programs (against libraries) with templates.
> +prelink_cmds=$lt_prelink_cmds_CXX
> +
> +# Specify filename containing input files.
> +file_list_spec=$lt_file_list_spec_CXX
> +
> +# How to hardcode a shared library path into an executable.
> +hardcode_action=$hardcode_action_CXX
> +
> +# The directories searched by this compiler when creating a shared library.
> +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
> +
> +# Dependencies to place before and after the objects being linked to
> +# create a shared library.
> +predep_objects=$lt_predep_objects_CXX
> +postdep_objects=$lt_postdep_objects_CXX
> +predeps=$lt_predeps_CXX
> +postdeps=$lt_postdeps_CXX
> +
> +# The library search path used internally by the compiler when linking
> +# a shared library.
> +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
> +
> +# ### END LIBTOOL TAG CONFIG: CXX
> +_LT_EOF
> +
> +
> +as_fn_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 5>/dev/null
> +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
> +exec 5>>config.log
> +$lt_cl_success || as_fn_exit 1
> +
>  
>  # We require a C++11 compiler.  Check if one is available, and if
>  # necessary, set CXX_DIALECT to some -std=xxx switch.
> @@ -26909,6 +28542,7 @@ WIN32LIBS="$WIN32LIBS $WIN32APILIBS"
>    OLD_CFLAGS=$CFLAGS
>    OLD_LDFLAGS=$LDFLAGS
>    OLD_LIBS=$LIBS
> +  OLD_CC=$CC
>    # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
>    # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
>    # always want our bfd.
> @@ -26917,6 +28551,7 @@ WIN32LIBS="$WIN32LIBS $WIN32APILIBS"
>    LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
>    intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
>    LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
> +  CC="./libtool --quiet --mode=link $CC"
>    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF support in BFD" >&5
>  $as_echo_n "checking for ELF support in BFD... " >&6; }
>  if ${gdb_cv_var_elf+:} false; then :
> @@ -26949,6 +28584,7 @@ rm -f core conftest.err conftest.$ac_objext \
>  fi
>  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_var_elf" >&5
>  $as_echo "$gdb_cv_var_elf" >&6; }
> +  CC=$OLD_CC
>    CFLAGS=$OLD_CFLAGS
>    LDFLAGS=$OLD_LDFLAGS
>    LIBS=$OLD_LIBS
> @@ -27024,6 +28660,7 @@ fi
>    OLD_CFLAGS=$CFLAGS
>    OLD_LDFLAGS=$LDFLAGS
>    OLD_LIBS=$LIBS
> +  OLD_CC=$CC
>    # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
>    # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
>    # always want our bfd.
> @@ -27032,6 +28669,7 @@ fi
>    LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
>    intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
>    LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
> +  CC="./libtool --quiet --mode=link $CC"
>    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mach-O support in BFD" >&5
>  $as_echo_n "checking for Mach-O support in BFD... " >&6; }
>  if ${gdb_cv_var_macho+:} false; then :
> @@ -27064,6 +28702,7 @@ rm -f core conftest.err conftest.$ac_objext \
>  fi
>  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_var_macho" >&5
>  $as_echo "$gdb_cv_var_macho" >&6; }
> +  CC=$OLD_CC
>    CFLAGS=$OLD_CFLAGS
>    LDFLAGS=$OLD_LDFLAGS
>    LIBS=$OLD_LIBS
> @@ -30696,6 +32335,7 @@ fi
>  
>  
>  
> +ac_aux_dir='$ac_aux_dir'
>  
>  
>  ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR
> diff --git a/gdb/configure.ac b/gdb/configure.ac
> index 12561d4d2de..d0c54ad3c02 100644
> --- a/gdb/configure.ac
> +++ b/gdb/configure.ac
> @@ -49,6 +49,9 @@ AC_ARG_PROGRAM
>  # We require libtool to link with the in-tree libtool libraries
>  # the proper way.
>  LT_INIT
> +# ... and we need it soon, since it is used by some of the
> +# link tests in the configure script.
> +LT_OUTPUT
>  
>  # We require a C++11 compiler.  Check if one is available, and if
>  # necessary, set CXX_DIALECT to some -std=xxx switch.
  
Simon Marchi Nov. 10, 2022, 1:50 p.m. UTC | #2
On 11/7/22 14:46, Jose E. Marchesi via Gdb-patches wrote:
> The GDB_AC_CHECK_BFD macro defined in gdb/acinclude.m4 uses the
> AC_LINK_IFELSE autoconf macro in order to link a simple program to
> check features of libbfd.
> 
> If libbfd's link dependencies change, it was necessary to reflect them
> either in the definition of the macro, or as a consequence of checking
> for them with an autoconf macro resulting in an addition to LIBS.
> 
> This patch modifies the definition of the GDB_CHECK_BFD macro in order
> to use libtool to perform the test link.  This makes it possible to
> not have to list dependencies of libbfd (which are indirect to GDB) at
> all.
> 
> After this patch:
> 
>   configure:28555: checking for ELF support in BFD
>   configure:28575: ./libtool --quiet --mode=link gcc -o conftest \
>                    -I../../gdb/../include -I../bfd -I../../gdb/../bfd
>                    -g -O2 -L../bfd -L../libiberty -L../zlib
>                    conftest.c \
>                    -lbfd -liberty -lz   -lncursesw -lm -ldl  >&5
>   configure:28575: $? = 0
>   configure:28585: result: yes
> ---
>  gdb/acinclude.m4 |    3 +
>  gdb/configure    | 1640 ++++++++++++++++++++++++++++++++++++++++++++++
>  gdb/configure.ac |    3 +
>  3 files changed, 1646 insertions(+)
> 
> diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
> index 62fa66c7af3..bbe86f51f4d 100644
> --- a/gdb/acinclude.m4
> +++ b/gdb/acinclude.m4
> @@ -229,6 +229,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>    OLD_CFLAGS=$CFLAGS
>    OLD_LDFLAGS=$LDFLAGS
>    OLD_LIBS=$LIBS
> +  OLD_CC=$CC
>    # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
>    # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
>    # always want our bfd.
> @@ -237,6 +238,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>    LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
>    intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
>    LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"

So, can we remove $ZSTD_LIBS ands -lz here?  I think GDB only needs them
through BFD.  And actually, can we remove them from gdb/Makefile.in too?

Simon
  
Jose E. Marchesi Nov. 10, 2022, 2:55 p.m. UTC | #3
> On 11/7/22 14:46, Jose E. Marchesi via Gdb-patches wrote:
>> The GDB_AC_CHECK_BFD macro defined in gdb/acinclude.m4 uses the
>> AC_LINK_IFELSE autoconf macro in order to link a simple program to
>> check features of libbfd.
>> 
>> If libbfd's link dependencies change, it was necessary to reflect them
>> either in the definition of the macro, or as a consequence of checking
>> for them with an autoconf macro resulting in an addition to LIBS.
>> 
>> This patch modifies the definition of the GDB_CHECK_BFD macro in order
>> to use libtool to perform the test link.  This makes it possible to
>> not have to list dependencies of libbfd (which are indirect to GDB) at
>> all.
>> 
>> After this patch:
>> 
>>   configure:28555: checking for ELF support in BFD
>>   configure:28575: ./libtool --quiet --mode=link gcc -o conftest \
>>                    -I../../gdb/../include -I../bfd -I../../gdb/../bfd
>>                    -g -O2 -L../bfd -L../libiberty -L../zlib
>>                    conftest.c \
>>                    -lbfd -liberty -lz   -lncursesw -lm -ldl  >&5
>>   configure:28575: $? = 0
>>   configure:28585: result: yes
>> ---
>>  gdb/acinclude.m4 |    3 +
>>  gdb/configure    | 1640 ++++++++++++++++++++++++++++++++++++++++++++++
>>  gdb/configure.ac |    3 +
>>  3 files changed, 1646 insertions(+)
>> 
>> diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
>> index 62fa66c7af3..bbe86f51f4d 100644
>> --- a/gdb/acinclude.m4
>> +++ b/gdb/acinclude.m4
>> @@ -229,6 +229,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>>    OLD_CFLAGS=$CFLAGS
>>    OLD_LDFLAGS=$LDFLAGS
>>    OLD_LIBS=$LIBS
>> +  OLD_CC=$CC
>>    # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
>>    # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
>>    # always want our bfd.
>> @@ -237,6 +238,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
>>    LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
>>    intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
>>    LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
>
> So, can we remove $ZSTD_LIBS ands -lz here?  I think GDB only needs them
> through BFD.  And actually, can we remove them from gdb/Makefile.in too?

In the context of this macro, yes, we can remove -lz and $ZSTD_LIBS from
there.  Will do, test, an send a new version.

About gdb/Makefile.in... dunno, $(ZLIB) is included in CLIBS.  This
makes me think GDB uses zlib directly?

If it doesn't, I think you can remove:

1) The calls to AM_ZLIB and AC_ZSTD from gdb/configure.ac.
2) The definition of ZLIB and ZLIBINC from gdb/Makefile.in
3) ../config/zlib.m4 from aclocal_m4_deps in gdb/Makefile.in
  
Tom Tromey Nov. 10, 2022, 4:06 p.m. UTC | #4
>>>>> "Jose" == Jose E Marchesi via Gdb-patches <gdb-patches@sourceware.org> writes:

Jose> About gdb/Makefile.in... dunno, $(ZLIB) is included in CLIBS.  This
Jose> makes me think GDB uses zlib directly?

Jose> If it doesn't, I think you can remove:

It doesn't directly:

    murgatroyd. git grep 'include.*zlib.h' | grep -v ChangeLog | grep -v '^zlib/'
    bfd/compress.c:#include <zlib.h>
    binutils/readelf.c:#include <zlib.h>
    gas/compress-debug.c:#include <zlib.h>
    gold/compressed_output.cc:#include <zlib.h>
    gprofng/src/DbeJarFile.cc:#include "zlib.h"
    include/ctf-api.h:#include <zlib.h>
    libbacktrace/ztest.c:#include <zlib.h>
    libctf/ctf-open.c:#include <zlib.h>
    libctf/ctf-serialize.c:#include <zlib.h>

Jose> 1) The calls to AM_ZLIB and AC_ZSTD from gdb/configure.ac.
Jose> 2) The definition of ZLIB and ZLIBINC from gdb/Makefile.in
Jose> 3) ../config/zlib.m4 from aclocal_m4_deps in gdb/Makefile.in

... however the use in ctf-api.h seems like it would prevent removing
some of the configury.  gdb includes this header and so it needs the
correct -I options to find the in-tree zlib.h.

I don't see why ctf-api.h needs this include, but I essentially don't
know anything about CTF.

Tom
  
Jose E. Marchesi Nov. 10, 2022, 4:35 p.m. UTC | #5
>>>>>> "Jose" == Jose E Marchesi via Gdb-patches <gdb-patches@sourceware.org> writes:
>
> Jose> About gdb/Makefile.in... dunno, $(ZLIB) is included in CLIBS.  This
> Jose> makes me think GDB uses zlib directly?
>
> Jose> If it doesn't, I think you can remove:
>
> It doesn't directly:
>
>     murgatroyd. git grep 'include.*zlib.h' | grep -v ChangeLog | grep -v '^zlib/'
>     bfd/compress.c:#include <zlib.h>
>     binutils/readelf.c:#include <zlib.h>
>     gas/compress-debug.c:#include <zlib.h>
>     gold/compressed_output.cc:#include <zlib.h>
>     gprofng/src/DbeJarFile.cc:#include "zlib.h"
>     include/ctf-api.h:#include <zlib.h>
>     libbacktrace/ztest.c:#include <zlib.h>
>     libctf/ctf-open.c:#include <zlib.h>
>     libctf/ctf-serialize.c:#include <zlib.h>
>
> Jose> 1) The calls to AM_ZLIB and AC_ZSTD from gdb/configure.ac.
> Jose> 2) The definition of ZLIB and ZLIBINC from gdb/Makefile.in
> Jose> 3) ../config/zlib.m4 from aclocal_m4_deps in gdb/Makefile.in
>
> ... however the use in ctf-api.h seems like it would prevent removing
> some of the configury.  gdb includes this header and so it needs the
> correct -I options to find the in-tree zlib.h.
>
> I don't see why ctf-api.h needs this include, but I essentially don't
> know anything about CTF.

Nick, would it be possible to remove the include of zlib.h from
ctf-api.h?  Even if libctf uses zlib, it would be good to not expose the
dependency in the API header...
  
Nick Alcock Nov. 10, 2022, 5:11 p.m. UTC | #6
[Tried to Cc: gdb-patches, but I'm not yet subscribed to it from this
 address. Not sure if this is going to work... and libctf is part of
 binutils anyway, so I'm Cc:ing binutils@ in so that at least my
 response goes somewhere public.]

On 10 Nov 2022, Jose E. Marchesi said:

>>>>>>> "Jose" == Jose E Marchesi via Gdb-patches <gdb-patches@sourceware.org> writes:
>> Jose> 1) The calls to AM_ZLIB and AC_ZSTD from gdb/configure.ac.
>> Jose> 2) The definition of ZLIB and ZLIBINC from gdb/Makefile.in
>> Jose> 3) ../config/zlib.m4 from aclocal_m4_deps in gdb/Makefile.in
>>
>> ... however the use in ctf-api.h seems like it would prevent removing
>> some of the configury.  gdb includes this header and so it needs the
>> correct -I options to find the in-tree zlib.h.
>>
>> I don't see why ctf-api.h needs this include, but I essentially don't
>> know anything about CTF.
>
> Nick, would it be possible to remove the include of zlib.h from
> ctf-api.h?  Even if libctf uses zlib, it would be good to not expose the
> dependency in the API header...

Yeah, this is an interestingly painful one. I completely agree that it
needs fixing, because it causes problems if you don't have a system
zlib: you end up with a basically unusable ctf-api.h after installation,
which isn't good at all.

But... this is because of this function in the exported API:

extern int ctf_gzwrite (ctf_dict_t *fp, gzFile fd);

Now this is actually a typedef, described as "semi-opaque":

typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */

IF the name of gzfile_s is guaranteed unchanging across zlib releases we
could do this instead of the #include:

/* Note to users: this is a 'gzFile' from <zlib.h>.  */
struct gzFile_s;
extern int ctf_gzwrite (ctf_dict_t *fp, gzFile_s *fd);

The problem is that zlib apparently considers this structure name an
implementation detail (given that what it gives you in the prototype is
a typedef to it), but if that name ever changes then including
<ctf-api.h> and <zlib.h> in the same translation unit would fail. Indeed
this function used to take a void * (with the same typedef name) in
1.2.5 and before :(

Maybe I could just make it take a void *, but that's not very clear at
all! That type name is actually useful documentation... and I can't
introduce the typedef myself because double-declaring a typedef is an
error. (And a configure test won't help here, because the problem is the
zlib version installed when *users* include <ctf-api.h>...)

So... suggestions? Do people think gzFile_s is unlikely to be renamed
again or changed away from a structure in future, so that doing this is
safe? (Even when it was a void *, it was a structure internally, albeit
a totally different one.)
  
Simon Marchi Nov. 10, 2022, 5:46 p.m. UTC | #7
On 11/10/22 12:11, Nick Alcock via Gdb-patches wrote:
> [Tried to Cc: gdb-patches, but I'm not yet subscribed to it from this
>  address. Not sure if this is going to work... and libctf is part of
>  binutils anyway, so I'm Cc:ing binutils@ in so that at least my
>  response goes somewhere public.]
> 
> On 10 Nov 2022, Jose E. Marchesi said:
> 
>>>>>>>> "Jose" == Jose E Marchesi via Gdb-patches <gdb-patches@sourceware.org> writes:
>>> Jose> 1) The calls to AM_ZLIB and AC_ZSTD from gdb/configure.ac.
>>> Jose> 2) The definition of ZLIB and ZLIBINC from gdb/Makefile.in
>>> Jose> 3) ../config/zlib.m4 from aclocal_m4_deps in gdb/Makefile.in
>>>
>>> ... however the use in ctf-api.h seems like it would prevent removing
>>> some of the configury.  gdb includes this header and so it needs the
>>> correct -I options to find the in-tree zlib.h.
>>>
>>> I don't see why ctf-api.h needs this include, but I essentially don't
>>> know anything about CTF.
>>
>> Nick, would it be possible to remove the include of zlib.h from
>> ctf-api.h?  Even if libctf uses zlib, it would be good to not expose the
>> dependency in the API header...
> 
> Yeah, this is an interestingly painful one. I completely agree that it
> needs fixing, because it causes problems if you don't have a system
> zlib: you end up with a basically unusable ctf-api.h after installation,
> which isn't good at all.
> 
> But... this is because of this function in the exported API:
> 
> extern int ctf_gzwrite (ctf_dict_t *fp, gzFile fd);

I don't know if this is relevant, maybe this is an API that can't
change, but taking a step back, it seems strange in the first place to
leak the dependency on zlib through the API.  Imagine you wanted to
switch to another gz compression library without changing your API.  It
would be nicer if zlib was just an implementation detail here.  For
instance, you could take a plain fd and use gzdopen internally to open a
gzFile around it.

Simon
  
Nix Nov. 11, 2022, 1:17 p.m. UTC | #8
On 10 Nov 2022, Simon Marchi via Gdb-patches spake thusly:

> On 11/10/22 12:11, Nick Alcock via Gdb-patches wrote:
>> [Tried to Cc: gdb-patches, but I'm not yet subscribed to it from this
>>  address. Not sure if this is going to work... and libctf is part of
>>  binutils anyway, so I'm Cc:ing binutils@ in so that at least my
>>  response goes somewhere public.]
>> 
>> On 10 Nov 2022, Jose E. Marchesi said:
>> 
>>>>>>>>> "Jose" == Jose E Marchesi via Gdb-patches <gdb-patches@sourceware.org> writes:
>>>> Jose> 1) The calls to AM_ZLIB and AC_ZSTD from gdb/configure.ac.
>>>> Jose> 2) The definition of ZLIB and ZLIBINC from gdb/Makefile.in
>>>> Jose> 3) ../config/zlib.m4 from aclocal_m4_deps in gdb/Makefile.in
>>>>
>>>> ... however the use in ctf-api.h seems like it would prevent removing
>>>> some of the configury.  gdb includes this header and so it needs the
>>>> correct -I options to find the in-tree zlib.h.
>>>>
>>>> I don't see why ctf-api.h needs this include, but I essentially don't
>>>> know anything about CTF.
>>>
>>> Nick, would it be possible to remove the include of zlib.h from
>>> ctf-api.h?  Even if libctf uses zlib, it would be good to not expose the
>>> dependency in the API header...
>> 
>> Yeah, this is an interestingly painful one. I completely agree that it
>> needs fixing, because it causes problems if you don't have a system
>> zlib: you end up with a basically unusable ctf-api.h after installation,
>> which isn't good at all.
>> 
>> But... this is because of this function in the exported API:
>> 
>> extern int ctf_gzwrite (ctf_dict_t *fp, gzFile fd);
>
> I don't know if this is relevant, maybe this is an API that can't
> change, but taking a step back, it seems strange in the first place to
> leak the dependency on zlib through the API.

It's historical (it was there in the Solaris days, IIRC) and alas it has
users, and it has a use case (see below). We *could* rip it out and fix
the users, but that does mean breaking the API and bumping soname and
this seems like a rather petty reason to do so to me. (But then I know
I'm a stable-API fetishist.)

>                                               Imagine you wanted to
> switch to another gz compression library without changing your API.  It
> would be nicer if zlib was just an implementation detail here.  For
> instance, you could take a plain fd and use gzdopen internally to open a
> gzFile around it.

I think the intent here was that people who were already writing stuff
through a gzFile could pass it into this to write CTF in as well. That
doesn't work at all well if you pass in the underlying fd and do a
gzdopen (you end up with zlib thinking there are two gzip streams
underway simultaneously on the same fd, and a total mess results).

So really you'd need *both* :)


But really this whole class of API made more sense back in the past when
zlib was the only compression library worth speaking of. These days
you'd probably prefer to hand back the memory buffer and ask the caller
to do the compression themselves using whatever mechanism they prefer --
but the fact remains that this thing is in the API and I'd rather not
break it for such a minor reason if there is a non-totally-horrible
alternative.
  
Simon Marchi Nov. 11, 2022, 1:51 p.m. UTC | #9
> It's historical (it was there in the Solaris days, IIRC) and alas it has
> users, and it has a use case (see below). We *could* rip it out and fix
> the users, but that does mean breaking the API and bumping soname and
> this seems like a rather petty reason to do so to me. (But then I know
> I'm a stable-API fetishist.)
> 
>>                                               Imagine you wanted to
>> switch to another gz compression library without changing your API.  It
>> would be nicer if zlib was just an implementation detail here.  For
>> instance, you could take a plain fd and use gzdopen internally to open a
>> gzFile around it.
> 
> I think the intent here was that people who were already writing stuff
> through a gzFile could pass it into this to write CTF in as well. That
> doesn't work at all well if you pass in the underlying fd and do a
> gzdopen (you end up with zlib thinking there are two gzip streams
> underway simultaneously on the same fd, and a total mess results).
> 
> So really you'd need *both* :)
> 
> 
> But really this whole class of API made more sense back in the past when
> zlib was the only compression library worth speaking of. These days
> you'd probably prefer to hand back the memory buffer and ask the caller
> to do the compression themselves using whatever mechanism they prefer --
> but the fact remains that this thing is in the API and I'd rather not
> break it for such a minor reason if there is a non-totally-horrible
> alternative.

Thanks for the details.

Another idea I thought of, which would still break the API (in that
callers would need to include a new source file) but not the ABI would
be to put that declaration in a separate header, say ctf-gzip-api.h.
Users of ctf-api.h would not have to deal with zlib.  Users of
ctf-gzip-api.h would have to deal with zlib, but that's fine because
they are consciously using it.

Simon
  
Nix Nov. 14, 2022, 1:56 p.m. UTC | #10
On 11 Nov 2022, Simon Marchi stated:

> Another idea I thought of, which would still break the API (in that
> callers would need to include a new source file) but not the ABI would
> be to put that declaration in a separate header, say ctf-gzip-api.h.
> Users of ctf-api.h would not have to deal with zlib.  Users of
> ctf-gzip-api.h would have to deal with zlib, but that's fine because
> they are consciously using it.

This thing is distinctly rarely used, so I'd say this is the best
suggestion so far: it unbreaks gdb and all known existing users can
definitely adapt easily, and it avoids depending on nasty guts of zlib.
If ctf-gzip-api.h #included ctf-api.h itself, the needed change to users
would be even smaller.

I'm trying to get a new libctf patch series into shape and can add this
change to it if you like: alternatively, consider a suitable patch
pre-approved. (You'll need to add a suitable #include to
libctf/ctf-serialize.c.)
  

Patch

diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
index 62fa66c7af3..bbe86f51f4d 100644
--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -229,6 +229,7 @@  AC_DEFUN([GDB_AC_CHECK_BFD], [
   OLD_CFLAGS=$CFLAGS
   OLD_LDFLAGS=$LDFLAGS
   OLD_LIBS=$LIBS
+  OLD_CC=$CC
   # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
   # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
   # always want our bfd.
@@ -237,6 +238,7 @@  AC_DEFUN([GDB_AC_CHECK_BFD], [
   LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
   intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
   LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
+  CC="./libtool --quiet --mode=link $CC"
   AC_CACHE_CHECK(
     [$1],
     [$2],
@@ -252,6 +254,7 @@  AC_DEFUN([GDB_AC_CHECK_BFD], [
        [[$2]=no]
      )]
   )
+  CC=$OLD_CC
   CFLAGS=$OLD_CFLAGS
   LDFLAGS=$OLD_LDFLAGS
   LIBS=$OLD_LIBS])
diff --git a/gdb/configure b/gdb/configure
index b54ac671fe3..4d28a2503ae 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -14800,6 +14800,1639 @@  ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Only expand once:
 
 
+# ... and we need it soon, since it is used by some of the
+# link tests in the configure script.
+: ${CONFIG_LT=./config.lt}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
+$as_echo "$as_me: creating $CONFIG_LT" >&6;}
+as_write_fail=0
+cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## --------------------------------- ##
+## Main body of "$CONFIG_LT" script. ##
+## --------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+
+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="\
+config.lt
+configured by $0, generated by GNU Autoconf 2.69.
+
+Copyright (C) 2009 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=: ;;
+
+    -*) as_fn_error $? "unrecognized option: $1
+Try \`$0 --help' for more information." "$LINENO" 5 ;;
+
+    *) as_fn_error $? "unrecognized argument: $1
+Try \`$0 --help' for more information." "$LINENO" 5 ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec 6>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_flag_spec_ld_CXX \
+hardcode_libdir_separator_CXX \
+fix_srcfile_path_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
+$as_echo "$as_me: creating $ofile" >&6;}
+
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1+=\$2"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+    ;;
+  esac
+
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+
+as_fn_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 5>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec 5>>config.log
+$lt_cl_success || as_fn_exit 1
+
 
 # We require a C++11 compiler.  Check if one is available, and if
 # necessary, set CXX_DIALECT to some -std=xxx switch.
@@ -26909,6 +28542,7 @@  WIN32LIBS="$WIN32LIBS $WIN32APILIBS"
   OLD_CFLAGS=$CFLAGS
   OLD_LDFLAGS=$LDFLAGS
   OLD_LIBS=$LIBS
+  OLD_CC=$CC
   # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
   # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
   # always want our bfd.
@@ -26917,6 +28551,7 @@  WIN32LIBS="$WIN32LIBS $WIN32APILIBS"
   LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
   intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
   LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
+  CC="./libtool --quiet --mode=link $CC"
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF support in BFD" >&5
 $as_echo_n "checking for ELF support in BFD... " >&6; }
 if ${gdb_cv_var_elf+:} false; then :
@@ -26949,6 +28584,7 @@  rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_var_elf" >&5
 $as_echo "$gdb_cv_var_elf" >&6; }
+  CC=$OLD_CC
   CFLAGS=$OLD_CFLAGS
   LDFLAGS=$OLD_LDFLAGS
   LIBS=$OLD_LIBS
@@ -27024,6 +28660,7 @@  fi
   OLD_CFLAGS=$CFLAGS
   OLD_LDFLAGS=$LDFLAGS
   OLD_LIBS=$LIBS
+  OLD_CC=$CC
   # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
   # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
   # always want our bfd.
@@ -27032,6 +28669,7 @@  fi
   LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
   intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
   LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS"
+  CC="./libtool --quiet --mode=link $CC"
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mach-O support in BFD" >&5
 $as_echo_n "checking for Mach-O support in BFD... " >&6; }
 if ${gdb_cv_var_macho+:} false; then :
@@ -27064,6 +28702,7 @@  rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_var_macho" >&5
 $as_echo "$gdb_cv_var_macho" >&6; }
+  CC=$OLD_CC
   CFLAGS=$OLD_CFLAGS
   LDFLAGS=$OLD_LDFLAGS
   LIBS=$OLD_LIBS
@@ -30696,6 +32335,7 @@  fi
 
 
 
+ac_aux_dir='$ac_aux_dir'
 
 
 ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 12561d4d2de..d0c54ad3c02 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -49,6 +49,9 @@  AC_ARG_PROGRAM
 # We require libtool to link with the in-tree libtool libraries
 # the proper way.
 LT_INIT
+# ... and we need it soon, since it is used by some of the
+# link tests in the configure script.
+LT_OUTPUT
 
 # We require a C++11 compiler.  Check if one is available, and if
 # necessary, set CXX_DIALECT to some -std=xxx switch.