If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 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.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# 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
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # 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
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# 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'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+ lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+ ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+ lt_cl_success=:
+ test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+ exec AS_MESSAGE_LOG_FD>/dev/null
+ $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+ exec AS_MESSAGE_LOG_FD>>config.log
+ $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # 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.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### 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
+
+ _LT_PROG_LTMAIN
+
+ # 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)
+
+ _LT_PROG_XSI_SHELLFNS
+
+ 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"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<_LT_EOF
+[$]*
+_LT_EOF
+ exit 0
+fi
+
+# 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
+
+if test -z "$lt_ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+ then
+ break
+ fi
+ done
+ fi
+
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+ else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$ECHO" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ ECHO='print -r'
+ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ ECHO='printf %s\n'
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ ECHO=echo
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+ [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[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]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC*)
+ # IBM XL 8.0 on PPC
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ linux* | k*bsd*-gnu)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(int foo(void) {},
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ )
+ LDFLAGS="$save_LDFLAGS"
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+ [[If ld is used when linking, flag to hardcode $libdir into a binary
+ during linking. This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [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])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+ [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report which library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 will use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ xl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=echo
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" ||
+ test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${FC-"f95"}
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[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 "X${1}" | $Xsed -e "$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 "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# 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 "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "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 "X${1}" | $Xsed -e "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "X${1}" | $Xsed -e '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
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
+
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
+
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3017 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6b'
+macro_revision='1.3017'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
]) # _AM_PROG_TAR
m4_include([config/autotroll.m4])
-m4_include([config/libtool.m4])
-m4_include([config/ltoptions.m4])
-m4_include([config/ltsugar.m4])
-m4_include([config/ltversion.m4])
-m4_include([config/lt~obsolete.m4])
--- /dev/null
+Description: Upstream changes introduced in version 1.11.0.1-1
+ This patch has been created by dpkg-source during the package build.
+ Here's the last changelog entry, hopefully it gives details on why
+ those changes were made:
+ .
+ mathgl (1.11.0.1-1) experimental; urgency=low
+ .
+ * Create proper patches for the changes in the source tree.
+ * Add new package for Russian documentation.
+ * New upstream release (Closes: #603004).
+ * Correct several spelling mistakes in manpages and in lang/numpy.i
+ * Create symbols files for libraries.
+ * Register documentation to doc-base.
+ .
+ The person named in the Author field signed this changelog entry.
+Author: Dimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
+Bug-Debian: http://bugs.debian.org/603004
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: http://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: <YYYY-MM-DD>
+
+--- mathgl-1.11.0.1.orig/Makefile.in
++++ mathgl-1.11.0.1/Makefile.in
+@@ -46,7 +46,11 @@ DIST_COMMON = README $(am__configure_dep
+ config/texinfo.tex
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+--- mathgl-1.11.0.1.orig/aclocal.m4
++++ mathgl-1.11.0.1/aclocal.m4
+@@ -19,7972 +19,6 @@ You have another version of autoconf. I
+ If you have problems, you may need to regenerate the build system entirely.
+ To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+-#
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008 Free Software Foundation, Inc.
+-# Written by Gordon Matzigkeit, 1996
+-#
+-# This file is free software; the Free Software Foundation gives
+-# unlimited permission to copy and/or distribute it, with or without
+-# modifications, as long as this notice is preserved.
+-
+-m4_define([_LT_COPYING], [dnl
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008 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.
+-])
+-
+-# serial 56 LT_INIT
+-
+-
+-# LT_PREREQ(VERSION)
+-# ------------------
+-# Complain and exit if this libtool version is less that VERSION.
+-m4_defun([LT_PREREQ],
+-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+- [m4_default([$3],
+- [m4_fatal([Libtool version $1 or higher is required],
+- 63)])],
+- [$2])])
+-
+-
+-# _LT_CHECK_BUILDDIR
+-# ------------------
+-# Complain if the absolute build directory name contains unusual characters
+-m4_defun([_LT_CHECK_BUILDDIR],
+-[case `pwd` in
+- *\ * | *\ *)
+- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+-esac
+-])
+-
+-
+-# LT_INIT([OPTIONS])
+-# ------------------
+-AC_DEFUN([LT_INIT],
+-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+-AC_BEFORE([$0], [LT_LANG])dnl
+-AC_BEFORE([$0], [LT_OUTPUT])dnl
+-AC_BEFORE([$0], [LTDL_INIT])dnl
+-m4_require([_LT_CHECK_BUILDDIR])dnl
+-
+-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+-dnl unless we require an AC_DEFUNed macro:
+-AC_REQUIRE([LTOPTIONS_VERSION])dnl
+-AC_REQUIRE([LTSUGAR_VERSION])dnl
+-AC_REQUIRE([LTVERSION_VERSION])dnl
+-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+-m4_require([_LT_PROG_LTMAIN])dnl
+-
+-dnl Parse OPTIONS
+-_LT_SET_OPTIONS([$0], [$1])
+-
+-# This can be used to rebuild libtool when needed
+-LIBTOOL_DEPS="$ltmain"
+-
+-# Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+-AC_SUBST(LIBTOOL)dnl
+-
+-_LT_SETUP
+-
+-# Only expand once:
+-m4_define([LT_INIT])
+-])# LT_INIT
+-
+-# Old names:
+-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+-
+-
+-# _LT_CC_BASENAME(CC)
+-# -------------------
+-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+-m4_defun([_LT_CC_BASENAME],
+-[for cc_temp in $1""; do
+- case $cc_temp in
+- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-])
+-
+-
+-# _LT_FILEUTILS_DEFAULTS
+-# ----------------------
+-# It is okay to use these file commands and assume they have been set
+-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+-m4_defun([_LT_FILEUTILS_DEFAULTS],
+-[: ${CP="cp -f"}
+-: ${MV="mv -f"}
+-: ${RM="rm -f"}
+-])# _LT_FILEUTILS_DEFAULTS
+-
+-
+-# _LT_SETUP
+-# ---------
+-m4_defun([_LT_SETUP],
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+-_LT_DECL([], [host_alias], [0], [The host system])dnl
+-_LT_DECL([], [host], [0])dnl
+-_LT_DECL([], [host_os], [0])dnl
+-dnl
+-_LT_DECL([], [build_alias], [0], [The build system])dnl
+-_LT_DECL([], [build], [0])dnl
+-_LT_DECL([], [build_os], [0])dnl
+-dnl
+-AC_REQUIRE([AC_PROG_CC])dnl
+-AC_REQUIRE([LT_PATH_LD])dnl
+-AC_REQUIRE([LT_PATH_NM])dnl
+-dnl
+-AC_REQUIRE([AC_PROG_LN_S])dnl
+-test -z "$LN_S" && LN_S="ln -s"
+-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+-dnl
+-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+-dnl
+-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+-m4_require([_LT_CMD_RELOAD])dnl
+-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+-
+-_LT_CONFIG_LIBTOOL_INIT([
+-# 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
+-])
+-if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+-fi
+-
+-_LT_CHECK_OBJDIR
+-
+-m4_require([_LT_TAG_COMPILER])dnl
+-_LT_PROG_ECHO_BACKSLASH
+-
+-case $host_os in
+-aix3*)
+- # 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
+- ;;
+-esac
+-
+-# Sed substitution that helps us do robust quoting. It backslashifies
+-# metacharacters that are still active within double-quoted strings.
+-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+-
+-# Same as above, but do not quote variable references.
+-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+-
+-# Sed substitution to delay expansion of an escaped shell variable in a
+-# double_quote_subst'ed string.
+-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+-
+-# Sed substitution to delay expansion of an escaped single quote.
+-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+-
+-# Sed substitution to avoid accidental globbing in evaled expressions
+-no_glob_subst='s/\*/\\\*/g'
+-
+-# Global variables:
+-ofile=libtool
+-can_build_shared=yes
+-
+-# All known linkers require a `.a' archive for static linking (except MSVC,
+-# which needs '.lib').
+-libext=a
+-
+-with_gnu_ld="$lt_cv_prog_gnu_ld"
+-
+-old_CC="$CC"
+-old_CFLAGS="$CFLAGS"
+-
+-# Set sane defaults for various variables
+-test -z "$CC" && CC=cc
+-test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+-test -z "$LD" && LD=ld
+-test -z "$ac_objext" && ac_objext=o
+-
+-_LT_CC_BASENAME([$compiler])
+-
+-# Only perform the check for file, if the check method requires it
+-test -z "$MAGIC_CMD" && MAGIC_CMD=file
+-case $deplibs_check_method in
+-file_magic*)
+- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- _LT_PATH_MAGIC
+- fi
+- ;;
+-esac
+-
+-# Use C for the default configuration in the libtool script
+-LT_SUPPORTED_TAG([CC])
+-_LT_LANG_C_CONFIG
+-_LT_LANG_DEFAULT_CONFIG
+-_LT_CONFIG_COMMANDS
+-])# _LT_SETUP
+-
+-
+-# _LT_PROG_LTMAIN
+-# ---------------
+-# Note that this code is called both from `configure', and `config.status'
+-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+-# `config.status' has no value for ac_aux_dir unless we are using Automake,
+-# so we pass a copy along to make sure it has a sensible value anyway.
+-m4_defun([_LT_PROG_LTMAIN],
+-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+-ltmain="$ac_aux_dir/ltmain.sh"
+-])# _LT_PROG_LTMAIN
+-
+-
+-
+-# So that we can recreate a full libtool script including additional
+-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+-# in macros and then make a single call at the end using the `libtool'
+-# label.
+-
+-
+-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+-# ----------------------------------------
+-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+-m4_define([_LT_CONFIG_LIBTOOL_INIT],
+-[m4_ifval([$1],
+- [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+- [$1
+-])])])
+-
+-# Initialize.
+-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+-
+-
+-# _LT_CONFIG_LIBTOOL([COMMANDS])
+-# ------------------------------
+-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+-m4_define([_LT_CONFIG_LIBTOOL],
+-[m4_ifval([$1],
+- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+- [$1
+-])])])
+-
+-# Initialize.
+-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+-
+-
+-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+-# -----------------------------------------------------
+-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+-[_LT_CONFIG_LIBTOOL([$1])
+-_LT_CONFIG_LIBTOOL_INIT([$2])
+-])
+-
+-
+-# _LT_FORMAT_COMMENT([COMMENT])
+-# -----------------------------
+-# Add leading comment marks to the start of each line, and a trailing
+-# full-stop to the whole comment if one is not present already.
+-m4_define([_LT_FORMAT_COMMENT],
+-[m4_ifval([$1], [
+-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+-)])
+-
+-
+-
+-
+-
+-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+-# -------------------------------------------------------------------
+-# CONFIGNAME is the name given to the value in the libtool script.
+-# VARNAME is the (base) name used in the configure script.
+-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+-# VARNAME. Any other value will be used directly.
+-m4_define([_LT_DECL],
+-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+- [m4_ifval([$1], [$1], [$2])])
+- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+- m4_ifval([$4],
+- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+- lt_dict_add_subkey([lt_decl_dict], [$2],
+- [tagged?], [m4_ifval([$5], [yes], [no])])])
+-])
+-
+-
+-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+-# --------------------------------------------------------
+-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+-
+-
+-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+-# ------------------------------------------------
+-m4_define([lt_decl_tag_varnames],
+-[_lt_decl_filter([tagged?], [yes], $@)])
+-
+-
+-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+-# ---------------------------------------------------------
+-m4_define([_lt_decl_filter],
+-[m4_case([$#],
+- [0], [m4_fatal([$0: too few arguments: $#])],
+- [1], [m4_fatal([$0: too few arguments: $#: $1])],
+- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+- [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+-])
+-
+-
+-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+-# --------------------------------------------------
+-m4_define([lt_decl_quote_varnames],
+-[_lt_decl_filter([value], [1], $@)])
+-
+-
+-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+-# ---------------------------------------------------
+-m4_define([lt_decl_dquote_varnames],
+-[_lt_decl_filter([value], [2], $@)])
+-
+-
+-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+-# ---------------------------------------------------
+-m4_define([lt_decl_varnames_tagged],
+-[m4_assert([$# <= 2])dnl
+-_$0(m4_quote(m4_default([$1], [[, ]])),
+- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+-m4_define([_lt_decl_varnames_tagged],
+-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+-
+-
+-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+-# ------------------------------------------------
+-m4_define([lt_decl_all_varnames],
+-[_$0(m4_quote(m4_default([$1], [[, ]])),
+- m4_if([$2], [],
+- m4_quote(lt_decl_varnames),
+- m4_quote(m4_shift($@))))[]dnl
+-])
+-m4_define([_lt_decl_all_varnames],
+-[lt_join($@, lt_decl_varnames_tagged([$1],
+- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+-])
+-
+-
+-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+-# ------------------------------------
+-# Quote a variable value, and forward it to `config.status' so that its
+-# declaration there will have the same value as in `configure'. VARNAME
+-# must have a single quote delimited value for this to work.
+-m4_define([_LT_CONFIG_STATUS_DECLARE],
+-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+-
+-
+-# _LT_CONFIG_STATUS_DECLARATIONS
+-# ------------------------------
+-# We delimit libtool config variables with single quotes, so when
+-# we write them to config.status, we have to be sure to quote all
+-# embedded single quotes properly. In configure, this macro expands
+-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+-#
+-# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+-
+-
+-# _LT_LIBTOOL_TAGS
+-# ----------------
+-# Output comment and list of tags supported by the script
+-m4_defun([_LT_LIBTOOL_TAGS],
+-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+-available_tags="_LT_TAGS"dnl
+-])
+-
+-
+-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+-# -----------------------------------
+-# Extract the dictionary values for VARNAME (optionally with TAG) and
+-# expand to a commented shell variable setting:
+-#
+-# # Some comment about what VAR is for.
+-# visible_name=$lt_internal_name
+-m4_define([_LT_LIBTOOL_DECLARE],
+-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+- [description])))[]dnl
+-m4_pushdef([_libtool_name],
+- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+- [0], [_libtool_name=[$]$1],
+- [1], [_libtool_name=$lt_[]$1],
+- [2], [_libtool_name=$lt_[]$1],
+- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+-])
+-
+-
+-# _LT_LIBTOOL_CONFIG_VARS
+-# -----------------------
+-# Produce commented declarations of non-tagged libtool config variables
+-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+-# section) are produced by _LT_LIBTOOL_TAG_VARS.
+-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+-[m4_foreach([_lt_var],
+- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+-
+-
+-# _LT_LIBTOOL_TAG_VARS(TAG)
+-# -------------------------
+-m4_define([_LT_LIBTOOL_TAG_VARS],
+-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+-
+-
+-# _LT_TAGVAR(VARNAME, [TAGNAME])
+-# ------------------------------
+-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+-
+-
+-# _LT_CONFIG_COMMANDS
+-# -------------------
+-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+-# variables for single and double quote escaping we saved from calls
+-# to _LT_DECL, we can put quote escaped variables declarations
+-# into `config.status', and then the shell code to quote escape them in
+-# for loops in `config.status'. Finally, any additional code accumulated
+-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+-m4_defun([_LT_CONFIG_COMMANDS],
+-[AC_PROVIDE_IFELSE([LT_OUTPUT],
+- dnl If the libtool generation code has been placed in $CONFIG_LT,
+- dnl instead of duplicating it all over again into config.status,
+- dnl then we will have config.status run $CONFIG_LT later, so it
+- dnl needs to know what name is stored there:
+- [AC_CONFIG_COMMANDS([libtool],
+- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+- dnl If the libtool generation code is destined for config.status,
+- dnl expand the accumulated commands and init code now:
+- [AC_CONFIG_COMMANDS([libtool],
+- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+-])#_LT_CONFIG_COMMANDS
+-
+-
+-# Initialize.
+-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+-[
+-
+-# 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'
+-_LT_CONFIG_STATUS_DECLARATIONS
+-LTCC='$LTCC'
+-LTCFLAGS='$LTCFLAGS'
+-compiler='$compiler_DEFAULT'
+-
+-# Quote evaled strings.
+-for var in lt_decl_all_varnames([[ \
+-]], lt_decl_quote_varnames); do
+- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+- *[[\\\\\\\`\\"\\\$]]*)
+- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+- ;;
+- *)
+- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+- ;;
+- esac
+-done
+-
+-# Double-quote double-evaled strings.
+-for var in lt_decl_all_varnames([[ \
+-]], lt_decl_dquote_varnames); do
+- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+- *[[\\\\\\\`\\"\\\$]]*)
+- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+- ;;
+- *)
+- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+- ;;
+- esac
+-done
+-
+-# Fix-up fallback echo if it was mangled by the above quoting rules.
+-case \$lt_ECHO in
+-*'\\\[$]0 --fallback-echo"')dnl "
+- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+- ;;
+-esac
+-
+-_LT_OUTPUT_LIBTOOL_INIT
+-])
+-
+-
+-# LT_OUTPUT
+-# ---------
+-# This macro allows early generation of the libtool script (before
+-# AC_OUTPUT is called), incase it is used in configure for compilation
+-# tests.
+-AC_DEFUN([LT_OUTPUT],
+-[: ${CONFIG_LT=./config.lt}
+-AC_MSG_NOTICE([creating $CONFIG_LT])
+-cat >"$CONFIG_LT" <<_LTEOF
+-#! $SHELL
+-# Generated by $as_me.
+-# Run this file to recreate a libtool stub with the current configuration.
+-
+-lt_cl_silent=false
+-SHELL=\${CONFIG_SHELL-$SHELL}
+-_LTEOF
+-
+-cat >>"$CONFIG_LT" <<\_LTEOF
+-AS_SHELL_SANITIZE
+-_AS_PREPARE
+-
+-exec AS_MESSAGE_FD>&1
+-exec AS_MESSAGE_LOG_FD>>config.log
+-{
+- echo
+- AS_BOX([Running $as_me.])
+-} >&AS_MESSAGE_LOG_FD
+-
+-lt_cl_help="\
+-\`$as_me' creates a local libtool stub from the current configuration,
+-for use in further configure time tests before the real libtool is
+-generated.
+-
+-Usage: $[0] [[OPTIONS]]
+-
+- -h, --help print this help, then exit
+- -V, --version print version number, then exit
+- -q, --quiet do not print progress messages
+- -d, --debug don't remove temporary files
+-
+-Report bugs to <bug-libtool@gnu.org>."
+-
+-lt_cl_version="\
+-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+-configured by $[0], generated by m4_PACKAGE_STRING.
+-
+-Copyright (C) 2008 Free Software Foundation, Inc.
+-This config.lt script is free software; the Free Software Foundation
+-gives unlimited permision to copy, distribute and modify it."
+-
+-while test $[#] != 0
+-do
+- case $[1] in
+- --version | --v* | -V )
+- echo "$lt_cl_version"; exit 0 ;;
+- --help | --h* | -h )
+- echo "$lt_cl_help"; exit 0 ;;
+- --debug | --d* | -d )
+- debug=: ;;
+- --quiet | --q* | --silent | --s* | -q )
+- lt_cl_silent=: ;;
+-
+- -*) AC_MSG_ERROR([unrecognized option: $[1]
+-Try \`$[0] --help' for more information.]) ;;
+-
+- *) AC_MSG_ERROR([unrecognized argument: $[1]
+-Try \`$[0] --help' for more information.]) ;;
+- esac
+- shift
+-done
+-
+-if $lt_cl_silent; then
+- exec AS_MESSAGE_FD>/dev/null
+-fi
+-_LTEOF
+-
+-cat >>"$CONFIG_LT" <<_LTEOF
+-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+-_LTEOF
+-
+-cat >>"$CONFIG_LT" <<\_LTEOF
+-AC_MSG_NOTICE([creating $ofile])
+-_LT_OUTPUT_LIBTOOL_COMMANDS
+-AS_EXIT(0)
+-_LTEOF
+-chmod +x "$CONFIG_LT"
+-
+-# configure is writing to config.log, but config.lt does its own redirection,
+-# appending to config.log, which fails on DOS, as config.log is still kept
+-# open by configure. Here we exec the FD to /dev/null, effectively closing
+-# config.log, so it can be properly (re)opened and appended to by config.lt.
+-if test "$no_create" != yes; then
+- lt_cl_success=:
+- test "$silent" = yes &&
+- lt_config_lt_args="$lt_config_lt_args --quiet"
+- exec AS_MESSAGE_LOG_FD>/dev/null
+- $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+- exec AS_MESSAGE_LOG_FD>>config.log
+- $lt_cl_success || AS_EXIT(1)
+-fi
+-])# LT_OUTPUT
+-
+-
+-# _LT_CONFIG(TAG)
+-# ---------------
+-# If TAG is the built-in tag, create an initial libtool script with a
+-# default configuration from the untagged config vars. Otherwise add code
+-# to config.status for appending the configuration named by TAG from the
+-# matching tagged config vars.
+-m4_defun([_LT_CONFIG],
+-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-_LT_CONFIG_SAVE_COMMANDS([
+- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+- m4_if(_LT_TAG, [C], [
+- # 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.
+-#
+-_LT_COPYING
+-_LT_LIBTOOL_TAGS
+-
+-# ### BEGIN LIBTOOL CONFIG
+-_LT_LIBTOOL_CONFIG_VARS
+-_LT_LIBTOOL_TAG_VARS
+-# ### 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
+-
+- _LT_PROG_LTMAIN
+-
+- # 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)
+-
+- _LT_PROG_XSI_SHELLFNS
+-
+- 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"
+-
+-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+-dnl in a comment (ie after a #).
+-# ### BEGIN LIBTOOL TAG CONFIG: $1
+-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+-# ### END LIBTOOL TAG CONFIG: $1
+-_LT_EOF
+-])dnl /m4_if
+-],
+-[m4_if([$1], [], [
+- PACKAGE='$PACKAGE'
+- VERSION='$VERSION'
+- TIMESTAMP='$TIMESTAMP'
+- RM='$RM'
+- ofile='$ofile'], [])
+-])dnl /_LT_CONFIG_SAVE_COMMANDS
+-])# _LT_CONFIG
+-
+-
+-# LT_SUPPORTED_TAG(TAG)
+-# ---------------------
+-# Trace this macro to discover what tags are supported by the libtool
+-# --tag option, using:
+-# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+-AC_DEFUN([LT_SUPPORTED_TAG], [])
+-
+-
+-# C support is built-in for now
+-m4_define([_LT_LANG_C_enabled], [])
+-m4_define([_LT_TAGS], [])
+-
+-
+-# LT_LANG(LANG)
+-# -------------
+-# Enable libtool support for the given language if not already enabled.
+-AC_DEFUN([LT_LANG],
+-[AC_BEFORE([$0], [LT_OUTPUT])dnl
+-m4_case([$1],
+- [C], [_LT_LANG(C)],
+- [C++], [_LT_LANG(CXX)],
+- [Java], [_LT_LANG(GCJ)],
+- [Fortran 77], [_LT_LANG(F77)],
+- [Fortran], [_LT_LANG(FC)],
+- [Windows Resource], [_LT_LANG(RC)],
+- [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+- [_LT_LANG($1)],
+- [m4_fatal([$0: unsupported language: "$1"])])])dnl
+-])# LT_LANG
+-
+-
+-# _LT_LANG(LANGNAME)
+-# ------------------
+-m4_defun([_LT_LANG],
+-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+- [LT_SUPPORTED_TAG([$1])dnl
+- m4_append([_LT_TAGS], [$1 ])dnl
+- m4_define([_LT_LANG_]$1[_enabled], [])dnl
+- _LT_LANG_$1_CONFIG($1)])dnl
+-])# _LT_LANG
+-
+-
+-# _LT_LANG_DEFAULT_CONFIG
+-# -----------------------
+-m4_defun([_LT_LANG_DEFAULT_CONFIG],
+-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+- [LT_LANG(CXX)],
+- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+-
+-AC_PROVIDE_IFELSE([AC_PROG_F77],
+- [LT_LANG(F77)],
+- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+-
+-AC_PROVIDE_IFELSE([AC_PROG_FC],
+- [LT_LANG(FC)],
+- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+-
+-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+-dnl pulling things in needlessly.
+-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+- [LT_LANG(GCJ)],
+- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+- [LT_LANG(GCJ)],
+- [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+- [LT_LANG(GCJ)],
+- [m4_ifdef([AC_PROG_GCJ],
+- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+- m4_ifdef([A][M_PROG_GCJ],
+- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+- m4_ifdef([LT_PROG_GCJ],
+- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+-
+-AC_PROVIDE_IFELSE([LT_PROG_RC],
+- [LT_LANG(RC)],
+- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+-])# _LT_LANG_DEFAULT_CONFIG
+-
+-# Obsolete macros:
+-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+-
+-
+-# _LT_TAG_COMPILER
+-# ----------------
+-m4_defun([_LT_TAG_COMPILER],
+-[AC_REQUIRE([AC_PROG_CC])dnl
+-
+-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+-
+-# If no C compiler was specified, use CC.
+-LTCC=${LTCC-"$CC"}
+-
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+-# Allow CC to be a program name with arguments.
+-compiler=$CC
+-])# _LT_TAG_COMPILER
+-
+-
+-# _LT_COMPILER_BOILERPLATE
+-# ------------------------
+-# Check for compiler boilerplate output or warnings with
+-# the simple compiler test code.
+-m4_defun([_LT_COMPILER_BOILERPLATE],
+-[m4_require([_LT_DECL_SED])dnl
+-ac_outfile=conftest.$ac_objext
+-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$RM conftest*
+-])# _LT_COMPILER_BOILERPLATE
+-
+-
+-# _LT_LINKER_BOILERPLATE
+-# ----------------------
+-# Check for linker boilerplate output or warnings with
+-# the simple link test code.
+-m4_defun([_LT_LINKER_BOILERPLATE],
+-[m4_require([_LT_DECL_SED])dnl
+-ac_outfile=conftest.$ac_objext
+-echo "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$RM -r conftest*
+-])# _LT_LINKER_BOILERPLATE
+-
+-# _LT_REQUIRED_DARWIN_CHECKS
+-# -------------------------
+-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+- case $host_os in
+- rhapsody* | darwin*)
+- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+- AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+- AC_CHECK_TOOL([LIPO], [lipo], [:])
+- AC_CHECK_TOOL([OTOOL], [otool], [:])
+- AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+- _LT_DECL([], [DSYMUTIL], [1],
+- [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+- _LT_DECL([], [NMEDIT], [1],
+- [Tool to change global to local symbols on Mac OS X])
+- _LT_DECL([], [LIPO], [1],
+- [Tool to manipulate fat objects and archives on Mac OS X])
+- _LT_DECL([], [OTOOL], [1],
+- [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+- _LT_DECL([], [OTOOL64], [1],
+- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+-
+- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+- [lt_cv_apple_cc_single_mod=no
+- if test -z "${LT_MULTI_MODULE}"; then
+- # By default we will add the -single_module flag. You can override
+- # by either setting the environment variable LT_MULTI_MODULE
+- # non-empty at configure time, or by adding -multi_module to the
+- # link flags.
+- rm -rf libconftest.dylib*
+- echo "int foo(void){return 1;}" > conftest.c
+- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+- _lt_result=$?
+- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+- lt_cv_apple_cc_single_mod=yes
+- else
+- cat conftest.err >&AS_MESSAGE_LOG_FD
+- fi
+- rm -rf libconftest.dylib*
+- rm -f conftest.*
+- fi])
+- AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+- [lt_cv_ld_exported_symbols_list],
+- [lt_cv_ld_exported_symbols_list=no
+- save_LDFLAGS=$LDFLAGS
+- echo "_main" > conftest.sym
+- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+- [lt_cv_ld_exported_symbols_list=yes],
+- [lt_cv_ld_exported_symbols_list=no])
+- LDFLAGS="$save_LDFLAGS"
+- ])
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+- darwin1.*)
+- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+- darwin*) # darwin 5.x on
+- # if running on 10.5 or later, the deployment target defaults
+- # to the OS version, if on x86, and 10.4, the deployment
+- # target defaults to 10.4. Don't you love it?
+- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+- 10.[[012]]*)
+- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+- 10.*)
+- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+- esac
+- ;;
+- esac
+- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+- _lt_dar_single_mod='$single_module'
+- fi
+- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+- else
+- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+- fi
+- if test "$DSYMUTIL" != ":"; then
+- _lt_dsymutil='~$DSYMUTIL $lib || :'
+- else
+- _lt_dsymutil=
+- fi
+- ;;
+- esac
+-])
+-
+-
+-# _LT_DARWIN_LINKER_FEATURES
+-# --------------------------
+-# Checks for linker and compiler features on darwin
+-m4_defun([_LT_DARWIN_LINKER_FEATURES],
+-[
+- m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- _LT_TAGVAR(hardcode_automatic, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+- case $cc_basename in
+- ifort*) _lt_dar_can_shared=yes ;;
+- *) _lt_dar_can_shared=$GCC ;;
+- esac
+- if test "$_lt_dar_can_shared" = "yes"; then
+- output_verbose_link_cmd=echo
+- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+- m4_if([$1], [CXX],
+-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+- fi
+-],[])
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+-])
+-
+-# _LT_SYS_MODULE_PATH_AIX
+-# -----------------------
+-# Links a minimal program and checks the executable
+-# for the system default hardcoded library path. In most cases,
+-# this is /usr/lib:/lib, but when the MPI compilers are used
+-# the location of the communication and MPI libs are included too.
+-# If we don't find anything, use the default library path according
+-# to the aix ld manual.
+-m4_defun([_LT_SYS_MODULE_PATH_AIX],
+-[m4_require([_LT_DECL_SED])dnl
+-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi],[])
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-])# _LT_SYS_MODULE_PATH_AIX
+-
+-
+-# _LT_SHELL_INIT(ARG)
+-# -------------------
+-m4_define([_LT_SHELL_INIT],
+-[ifdef([AC_DIVERSION_NOTICE],
+- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+- [AC_DIVERT_PUSH(NOTICE)])
+-$1
+-AC_DIVERT_POP
+-])# _LT_SHELL_INIT
+-
+-
+-# _LT_PROG_ECHO_BACKSLASH
+-# -----------------------
+-# Add some code to the start of the generated configure script which
+-# will find an echo command which doesn't interpret backslashes.
+-m4_defun([_LT_PROG_ECHO_BACKSLASH],
+-[_LT_SHELL_INIT([
+-# Check that we are running under the correct shell.
+-SHELL=${CONFIG_SHELL-/bin/sh}
+-
+-case X$lt_ECHO in
+-X*--fallback-echo)
+- # Remove one level of quotation (which was required for Make).
+- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+- ;;
+-esac
+-
+-ECHO=${lt_ECHO-echo}
+-if test "X[$]1" = X--no-reexec; then
+- # Discard the --no-reexec flag, and continue.
+- shift
+-elif test "X[$]1" = X--fallback-echo; then
+- # Avoid inline document here, it may be left over
+- :
+-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+- # Yippee, $ECHO works!
+- :
+-else
+- # Restart under the correct shell.
+- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+-fi
+-
+-if test "X[$]1" = X--fallback-echo; then
+- # used as fallback echo
+- shift
+- cat <<_LT_EOF
+-[$]*
+-_LT_EOF
+- exit 0
+-fi
+-
+-# 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
+-
+-if test -z "$lt_ECHO"; then
+- if test "X${echo_test_string+set}" != Xset; then
+- # find a string as large as possible, as long as the shell can cope with it
+- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+- then
+- break
+- fi
+- done
+- fi
+-
+- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+- test "X$echo_testing_string" = "X$echo_test_string"; then
+- :
+- else
+- # The Solaris, AIX, and Digital Unix default echo programs unquote
+- # backslashes. This makes it impossible to quote backslashes using
+- # echo "$something" | sed 's/\\/\\\\/g'
+- #
+- # So, first we look for a working echo in the user's PATH.
+-
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for dir in $PATH /usr/ucb; do
+- IFS="$lt_save_ifs"
+- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+- test "X$echo_testing_string" = "X$echo_test_string"; then
+- ECHO="$dir/echo"
+- break
+- fi
+- done
+- IFS="$lt_save_ifs"
+-
+- if test "X$ECHO" = Xecho; then
+- # We didn't find a better echo, so look for alternatives.
+- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+- test "X$echo_testing_string" = "X$echo_test_string"; then
+- # This shell has a builtin print -r that does the trick.
+- ECHO='print -r'
+- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+- test "X$CONFIG_SHELL" != X/bin/ksh; then
+- # If we have ksh, try running configure again with it.
+- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+- export ORIGINAL_CONFIG_SHELL
+- CONFIG_SHELL=/bin/ksh
+- export CONFIG_SHELL
+- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+- else
+- # Try using printf.
+- ECHO='printf %s\n'
+- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+- test "X$echo_testing_string" = "X$echo_test_string"; then
+- # Cool, printf works
+- :
+- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+- test "X$echo_testing_string" = 'X\t' &&
+- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+- test "X$echo_testing_string" = "X$echo_test_string"; then
+- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+- export CONFIG_SHELL
+- SHELL="$CONFIG_SHELL"
+- export SHELL
+- ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+- test "X$echo_testing_string" = 'X\t' &&
+- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+- test "X$echo_testing_string" = "X$echo_test_string"; then
+- ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+- else
+- # maybe with a smaller string...
+- prev=:
+-
+- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+- then
+- break
+- fi
+- prev="$cmd"
+- done
+-
+- if test "$prev" != 'sed 50q "[$]0"'; then
+- echo_test_string=`eval $prev`
+- export echo_test_string
+- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+- else
+- # Oops. We lost completely, so just stick with echo.
+- ECHO=echo
+- fi
+- fi
+- fi
+- fi
+- fi
+-fi
+-
+-# Copy echo and quote the copy suitably for passing to libtool from
+-# the Makefile, instead of quoting the original, which is used later.
+-lt_ECHO=$ECHO
+-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+-fi
+-
+-AC_SUBST(lt_ECHO)
+-])
+-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+-_LT_DECL([], [ECHO], [1],
+- [An echo program that does not interpret backslashes])
+-])# _LT_PROG_ECHO_BACKSLASH
+-
+-
+-# _LT_ENABLE_LOCK
+-# ---------------
+-m4_defun([_LT_ENABLE_LOCK],
+-[AC_ARG_ENABLE([libtool-lock],
+- [AS_HELP_STRING([--disable-libtool-lock],
+- [avoid locking (might break parallel builds)])])
+-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+-
+-# Some flags need to be propagated to the compiler or linker for good
+-# libtool support.
+-case $host in
+-ia64-*-hpux*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.$ac_objext` in
+- *ELF-32*)
+- HPUX_IA64_MODE="32"
+- ;;
+- *ELF-64*)
+- HPUX_IA64_MODE="64"
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-*-*-irix6*)
+- # Find out which ABI we are using.
+- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- case `/usr/bin/file conftest.$ac_objext` in
+- *32-bit*)
+- LD="${LD-ld} -melf32bsmip"
+- ;;
+- *N32*)
+- LD="${LD-ld} -melf32bmipn32"
+- ;;
+- *64-bit*)
+- LD="${LD-ld} -melf64bmip"
+- ;;
+- esac
+- else
+- case `/usr/bin/file conftest.$ac_objext` in
+- *32-bit*)
+- LD="${LD-ld} -32"
+- ;;
+- *N32*)
+- LD="${LD-ld} -n32"
+- ;;
+- *64-bit*)
+- LD="${LD-ld} -64"
+- ;;
+- esac
+- fi
+- fi
+- rm -rf conftest*
+- ;;
+-
+-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
+- *32-bit*)
+- case $host in
+- x86_64-*kfreebsd*-gnu)
+- LD="${LD-ld} -m elf_i386_fbsd"
+- ;;
+- x86_64-*linux*)
+- LD="${LD-ld} -m elf_i386"
+- ;;
+- ppc64-*linux*|powerpc64-*linux*)
+- LD="${LD-ld} -m elf32ppclinux"
+- ;;
+- s390x-*linux*)
+- LD="${LD-ld} -m elf_s390"
+- ;;
+- sparc64-*linux*)
+- LD="${LD-ld} -m elf32_sparc"
+- ;;
+- esac
+- ;;
+- *64-bit*)
+- case $host in
+- x86_64-*kfreebsd*-gnu)
+- LD="${LD-ld} -m elf_x86_64_fbsd"
+- ;;
+- x86_64-*linux*)
+- LD="${LD-ld} -m elf_x86_64"
+- ;;
+- ppc*-*linux*|powerpc*-*linux*)
+- LD="${LD-ld} -m elf64ppc"
+- ;;
+- s390*-*linux*|s390*-*tpf*)
+- LD="${LD-ld} -m elf64_s390"
+- ;;
+- sparc*-*linux*)
+- LD="${LD-ld} -m elf64_sparc"
+- ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+-*-*-sco3.2v5*)
+- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+- SAVE_CFLAGS="$CFLAGS"
+- CFLAGS="$CFLAGS -belf"
+- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+- [AC_LANG_PUSH(C)
+- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+- AC_LANG_POP])
+- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+- CFLAGS="$SAVE_CFLAGS"
+- fi
+- ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *)
+- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+- LD="${LD-ld} -64"
+- fi
+- ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-esac
+-
+-need_locks="$enable_libtool_lock"
+-])# _LT_ENABLE_LOCK
+-
+-
+-# _LT_CMD_OLD_ARCHIVE
+-# -------------------
+-m4_defun([_LT_CMD_OLD_ARCHIVE],
+-[AC_CHECK_TOOL(AR, ar, false)
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
+-_LT_DECL([], [AR], [1], [The archiver])
+-_LT_DECL([], [AR_FLAGS], [1])
+-
+-AC_CHECK_TOOL(STRIP, strip, :)
+-test -z "$STRIP" && STRIP=:
+-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+-
+-AC_CHECK_TOOL(RANLIB, ranlib, :)
+-test -z "$RANLIB" && RANLIB=:
+-_LT_DECL([], [RANLIB], [1],
+- [Commands used to install an old-style archive])
+-
+-# Determine commands to create old-style static archives.
+-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+-old_postinstall_cmds='chmod 644 $oldlib'
+-old_postuninstall_cmds=
+-
+-if test -n "$RANLIB"; then
+- case $host_os in
+- openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+- ;;
+- *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+- ;;
+- esac
+- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+-fi
+-_LT_DECL([], [old_postinstall_cmds], [2])
+-_LT_DECL([], [old_postuninstall_cmds], [2])
+-_LT_TAGDECL([], [old_archive_cmds], [2],
+- [Commands used to build an old-style archive])
+-])# _LT_CMD_OLD_ARCHIVE
+-
+-
+-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+-# ----------------------------------------------------------------
+-# Check whether the given compiler option works
+-AC_DEFUN([_LT_COMPILER_OPTION],
+-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_DECL_SED])dnl
+-AC_CACHE_CHECK([$1], [$2],
+- [$2=no
+- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="$3"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&AS_MESSAGE_LOG_FD
+- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- $2=yes
+- fi
+- fi
+- $RM conftest*
+-])
+-
+-if test x"[$]$2" = xyes; then
+- m4_if([$5], , :, [$5])
+-else
+- m4_if([$6], , :, [$6])
+-fi
+-])# _LT_COMPILER_OPTION
+-
+-# Old name:
+-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+-
+-
+-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+-# [ACTION-SUCCESS], [ACTION-FAILURE])
+-# ----------------------------------------------------
+-# Check whether the given linker option works
+-AC_DEFUN([_LT_LINKER_OPTION],
+-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_DECL_SED])dnl
+-AC_CACHE_CHECK([$1], [$2],
+- [$2=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $3"
+- echo "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&AS_MESSAGE_LOG_FD
+- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- $2=yes
+- fi
+- else
+- $2=yes
+- fi
+- fi
+- $RM -r conftest*
+- LDFLAGS="$save_LDFLAGS"
+-])
+-
+-if test x"[$]$2" = xyes; then
+- m4_if([$4], , :, [$4])
+-else
+- m4_if([$5], , :, [$5])
+-fi
+-])# _LT_LINKER_OPTION
+-
+-# Old name:
+-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+-
+-
+-# LT_CMD_MAX_LEN
+-#---------------
+-AC_DEFUN([LT_CMD_MAX_LEN],
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-# find the maximum length of command line arguments
+-AC_MSG_CHECKING([the maximum length of command line arguments])
+-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+- i=0
+- teststring="ABCD"
+-
+- case $build_os in
+- msdosdjgpp*)
+- # On DJGPP, this test can blow up pretty badly due to problems in libc
+- # (any single argument exceeding 2000 bytes causes a buffer overrun
+- # during glob expansion). Even if it were fixed, the result of this
+- # check would be larger than it should be.
+- lt_cv_sys_max_cmd_len=12288; # 12K is about right
+- ;;
+-
+- gnu*)
+- # Under GNU Hurd, this test is not required because there is
+- # no limit to the length of command line arguments.
+- # Libtool will interpret -1 as no limit whatsoever
+- lt_cv_sys_max_cmd_len=-1;
+- ;;
+-
+- cygwin* | mingw* | cegcc*)
+- # On Win9x/ME, this test blows up -- it succeeds, but takes
+- # about 5 minutes as the teststring grows exponentially.
+- # Worse, since 9x/ME are not pre-emptively multitasking,
+- # you end up with a "frozen" computer, even though with patience
+- # the test eventually succeeds (with a max line length of 256k).
+- # Instead, let's just punt: use the minimum linelength reported by
+- # all of the supported platforms: 8192 (on NT/2K/XP).
+- lt_cv_sys_max_cmd_len=8192;
+- ;;
+-
+- amigaos*)
+- # On AmigaOS with pdksh, this test takes hours, literally.
+- # So we just punt and use a minimum line length of 8192.
+- lt_cv_sys_max_cmd_len=8192;
+- ;;
+-
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
+- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+- if test -n "$lt_cv_sys_max_cmd_len"; then
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- else
+- # Make teststring a little bigger before we do anything with it.
+- # a 1K string should be a reasonable start.
+- for i in 1 2 3 4 5 6 7 8 ; do
+- teststring=$teststring$teststring
+- done
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- # If test is not a shell built-in, we'll probably end up computing a
+- # maximum length that is only half of the actual maximum length, but
+- # we can't tell.
+- while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+- = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+- test $i != 17 # 1/2 MB should be enough
+- do
+- i=`expr $i + 1`
+- teststring=$teststring$teststring
+- done
+- # Only check the string length outside the loop.
+- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+- teststring=
+- # Add a significant safety factor because C++ compilers can tack on
+- # massive amounts of additional arguments before passing them to the
+- # linker. It appears as though 1/2 is a usable value.
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+- fi
+- ;;
+- esac
+-])
+-if test -n $lt_cv_sys_max_cmd_len ; then
+- AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+-else
+- AC_MSG_RESULT(none)
+-fi
+-max_cmd_len=$lt_cv_sys_max_cmd_len
+-_LT_DECL([], [max_cmd_len], [0],
+- [What is the maximum length of a command?])
+-])# LT_CMD_MAX_LEN
+-
+-# Old name:
+-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+-
+-
+-# _LT_HEADER_DLFCN
+-# ----------------
+-m4_defun([_LT_HEADER_DLFCN],
+-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+-])# _LT_HEADER_DLFCN
+-
+-
+-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+-# ----------------------------------------------------------------
+-m4_defun([_LT_TRY_DLOPEN_SELF],
+-[m4_require([_LT_HEADER_DLFCN])dnl
+-if test "$cross_compiling" = yes; then :
+- [$4]
+-else
+- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+- lt_status=$lt_dlunknown
+- cat > conftest.$ac_ext <<_LT_EOF
+-[#line __oline__ "configure"
+-#include "confdefs.h"
+-
+-#if HAVE_DLFCN_H
+-#include <dlfcn.h>
+-#endif
+-
+-#include <stdio.h>
+-
+-#ifdef RTLD_GLOBAL
+-# define LT_DLGLOBAL RTLD_GLOBAL
+-#else
+-# ifdef DL_GLOBAL
+-# define LT_DLGLOBAL DL_GLOBAL
+-# else
+-# define LT_DLGLOBAL 0
+-# endif
+-#endif
+-
+-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+- find out it does not work in some platform. */
+-#ifndef LT_DLLAZY_OR_NOW
+-# ifdef RTLD_LAZY
+-# define LT_DLLAZY_OR_NOW RTLD_LAZY
+-# else
+-# ifdef DL_LAZY
+-# define LT_DLLAZY_OR_NOW DL_LAZY
+-# else
+-# ifdef RTLD_NOW
+-# define LT_DLLAZY_OR_NOW RTLD_NOW
+-# else
+-# ifdef DL_NOW
+-# define LT_DLLAZY_OR_NOW DL_NOW
+-# else
+-# define LT_DLLAZY_OR_NOW 0
+-# endif
+-# endif
+-# endif
+-# endif
+-#endif
+-
+-void fnord() { int i=42;}
+-int main ()
+-{
+- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+- int status = $lt_dlunknown;
+-
+- if (self)
+- {
+- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+- /* dlclose (self); */
+- }
+- else
+- puts (dlerror ());
+-
+- return status;
+-}]
+-_LT_EOF
+- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+- lt_status=$?
+- case x$lt_status in
+- x$lt_dlno_uscore) $1 ;;
+- x$lt_dlneed_uscore) $2 ;;
+- x$lt_dlunknown|x*) $3 ;;
+- esac
+- else :
+- # compilation failed
+- $3
+- fi
+-fi
+-rm -fr conftest*
+-])# _LT_TRY_DLOPEN_SELF
+-
+-
+-# LT_SYS_DLOPEN_SELF
+-# ------------------
+-AC_DEFUN([LT_SYS_DLOPEN_SELF],
+-[m4_require([_LT_HEADER_DLFCN])dnl
+-if test "x$enable_dlopen" != xyes; then
+- enable_dlopen=unknown
+- enable_dlopen_self=unknown
+- enable_dlopen_self_static=unknown
+-else
+- lt_cv_dlopen=no
+- lt_cv_dlopen_libs=
+-
+- case $host_os in
+- beos*)
+- lt_cv_dlopen="load_add_on"
+- lt_cv_dlopen_libs=
+- lt_cv_dlopen_self=yes
+- ;;
+-
+- mingw* | pw32* | cegcc*)
+- lt_cv_dlopen="LoadLibrary"
+- lt_cv_dlopen_libs=
+- ;;
+-
+- cygwin*)
+- lt_cv_dlopen="dlopen"
+- lt_cv_dlopen_libs=
+- ;;
+-
+- darwin*)
+- # if libdl is installed we need to link against it
+- AC_CHECK_LIB([dl], [dlopen],
+- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+- lt_cv_dlopen="dyld"
+- lt_cv_dlopen_libs=
+- lt_cv_dlopen_self=yes
+- ])
+- ;;
+-
+- *)
+- AC_CHECK_FUNC([shl_load],
+- [lt_cv_dlopen="shl_load"],
+- [AC_CHECK_LIB([dld], [shl_load],
+- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+- [AC_CHECK_FUNC([dlopen],
+- [lt_cv_dlopen="dlopen"],
+- [AC_CHECK_LIB([dl], [dlopen],
+- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+- [AC_CHECK_LIB([svld], [dlopen],
+- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+- [AC_CHECK_LIB([dld], [dld_link],
+- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+- ])
+- ])
+- ])
+- ])
+- ])
+- ;;
+- esac
+-
+- if test "x$lt_cv_dlopen" != xno; then
+- enable_dlopen=yes
+- else
+- enable_dlopen=no
+- fi
+-
+- case $lt_cv_dlopen in
+- dlopen)
+- save_CPPFLAGS="$CPPFLAGS"
+- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+-
+- save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+-
+- save_LIBS="$LIBS"
+- LIBS="$lt_cv_dlopen_libs $LIBS"
+-
+- AC_CACHE_CHECK([whether a program can dlopen itself],
+- lt_cv_dlopen_self, [dnl
+- _LT_TRY_DLOPEN_SELF(
+- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+- ])
+-
+- if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+- AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+- lt_cv_dlopen_self_static, [dnl
+- _LT_TRY_DLOPEN_SELF(
+- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+- ])
+- fi
+-
+- CPPFLAGS="$save_CPPFLAGS"
+- LDFLAGS="$save_LDFLAGS"
+- LIBS="$save_LIBS"
+- ;;
+- esac
+-
+- case $lt_cv_dlopen_self in
+- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+- *) enable_dlopen_self=unknown ;;
+- esac
+-
+- case $lt_cv_dlopen_self_static in
+- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+- *) enable_dlopen_self_static=unknown ;;
+- esac
+-fi
+-_LT_DECL([dlopen_support], [enable_dlopen], [0],
+- [Whether dlopen is supported])
+-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+- [Whether dlopen of programs is supported])
+-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+- [Whether dlopen of statically linked programs is supported])
+-])# LT_SYS_DLOPEN_SELF
+-
+-# Old name:
+-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+-
+-
+-# _LT_COMPILER_C_O([TAGNAME])
+-# ---------------------------
+-# Check to see if options -c and -o are simultaneously supported by compiler.
+-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+-m4_defun([_LT_COMPILER_C_O],
+-[m4_require([_LT_DECL_SED])dnl
+-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_TAG_COMPILER])dnl
+-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+- $RM -r conftest 2>/dev/null
+- mkdir conftest
+- cd conftest
+- mkdir out
+- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+-
+- lt_compiler_flag="-o out/conftest2.$ac_objext"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+- (eval "$lt_compile" 2>out/conftest.err)
+- ac_status=$?
+- cat out/conftest.err >&AS_MESSAGE_LOG_FD
+- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+- if (exit $ac_status) && test -s out/conftest2.$ac_objext
+- then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+- fi
+- fi
+- chmod u+w . 2>&AS_MESSAGE_LOG_FD
+- $RM conftest*
+- # SGI C++ compiler will create directory out/ii_files/ for
+- # template instantiation
+- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+- $RM out/* && rmdir out
+- cd ..
+- $RM -r conftest
+- $RM conftest*
+-])
+-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+- [Does compiler simultaneously support -c and -o options?])
+-])# _LT_COMPILER_C_O
+-
+-
+-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+-# ----------------------------------
+-# Check to see if we can do hard links to lock some files if needed
+-m4_defun([_LT_COMPILER_FILE_LOCKS],
+-[m4_require([_LT_ENABLE_LOCK])dnl
+-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-_LT_COMPILER_C_O([$1])
+-
+-hard_links="nottested"
+-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- AC_MSG_CHECKING([if we can lock with hard links])
+- hard_links=yes
+- $RM conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- AC_MSG_RESULT([$hard_links])
+- if test "$hard_links" = no; then
+- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
+-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+-])# _LT_COMPILER_FILE_LOCKS
+-
+-
+-# _LT_CHECK_OBJDIR
+-# ----------------
+-m4_defun([_LT_CHECK_OBJDIR],
+-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+-[rm -f .libs 2>/dev/null
+-mkdir .libs 2>/dev/null
+-if test -d .libs; then
+- lt_cv_objdir=.libs
+-else
+- # MS-DOS does not allow filenames that begin with a dot.
+- lt_cv_objdir=_libs
+-fi
+-rmdir .libs 2>/dev/null])
+-objdir=$lt_cv_objdir
+-_LT_DECL([], [objdir], [0],
+- [The name of the directory that contains temporary libtool files])dnl
+-m4_pattern_allow([LT_OBJDIR])dnl
+-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+- [Define to the sub-directory in which libtool stores uninstalled libraries.])
+-])# _LT_CHECK_OBJDIR
+-
+-
+-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+-# --------------------------------------
+-# Check hardcoding attributes.
+-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+-[AC_MSG_CHECKING([how to hardcode library paths into programs])
+-_LT_TAGVAR(hardcode_action, $1)=
+-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+- test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+-
+- # We can hardcode non-existent directories.
+- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+- # Linking always hardcodes the temporary library directory.
+- _LT_TAGVAR(hardcode_action, $1)=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- _LT_TAGVAR(hardcode_action, $1)=immediate
+- fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- _LT_TAGVAR(hardcode_action, $1)=unsupported
+-fi
+-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+-
+-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
+-fi
+-_LT_TAGDECL([], [hardcode_action], [0],
+- [How to hardcode a shared library path into an executable])
+-])# _LT_LINKER_HARDCODE_LIBPATH
+-
+-
+-# _LT_CMD_STRIPLIB
+-# ----------------
+-m4_defun([_LT_CMD_STRIPLIB],
+-[m4_require([_LT_DECL_EGREP])
+-striplib=
+-old_striplib=
+-AC_MSG_CHECKING([whether stripping libraries is possible])
+-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+- AC_MSG_RESULT([yes])
+-else
+-# FIXME - insert some real tests, host_os isn't really good enough
+- case $host_os in
+- darwin*)
+- if test -n "$STRIP" ; then
+- striplib="$STRIP -x"
+- old_striplib="$STRIP -S"
+- AC_MSG_RESULT([yes])
+- else
+- AC_MSG_RESULT([no])
+- fi
+- ;;
+- *)
+- AC_MSG_RESULT([no])
+- ;;
+- esac
+-fi
+-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+-_LT_DECL([], [striplib], [1])
+-])# _LT_CMD_STRIPLIB
+-
+-
+-# _LT_SYS_DYNAMIC_LINKER([TAG])
+-# -----------------------------
+-# PORTME Fill in your ld.so characteristics
+-m4_defun([_LT_SYS_DYNAMIC_LINKER],
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-m4_require([_LT_DECL_EGREP])dnl
+-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_DECL_OBJDUMP])dnl
+-m4_require([_LT_DECL_SED])dnl
+-AC_MSG_CHECKING([dynamic linker characteristics])
+-m4_if([$1],
+- [], [
+-if test "$GCC" = yes; then
+- case $host_os in
+- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+- *) lt_awk_arg="/^libraries:/" ;;
+- esac
+- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+- # if the path contains ";" then we assume it to be the separator
+- # otherwise default to the standard path separator (i.e. ":") - it is
+- # assumed that no part of a normal pathname contains ";" but that should
+- # okay in the real world where ";" in dirpaths is itself problematic.
+- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
+- # Ok, now we have the path, separated by spaces, we can step through it
+- # and add multilib dir if necessary.
+- lt_tmp_lt_search_path_spec=
+- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+- for lt_sys_path in $lt_search_path_spec; do
+- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+- else
+- test -d "$lt_sys_path" && \
+- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+- fi
+- done
+- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+-BEGIN {RS=" "; FS="/|\n";} {
+- lt_foo="";
+- lt_count=0;
+- for (lt_i = NF; lt_i > 0; lt_i--) {
+- if ($lt_i != "" && $lt_i != ".") {
+- if ($lt_i == "..") {
+- lt_count++;
+- } else {
+- if (lt_count == 0) {
+- lt_foo="/" $lt_i lt_foo;
+- } else {
+- lt_count--;
+- }
+- }
+- }
+- }
+- if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+- if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+-}'`
+- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+-else
+- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+-fi])
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-shrext_cmds=".so"
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-need_lib_prefix=unknown
+-hardcode_into_libs=no
+-
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-need_version=unknown
+-
+-case $host_os in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+- shlibpath_var=LIBPATH
+-
+- # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
+-
+-aix[[4-9]]*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- hardcode_into_libs=yes
+- if test "$host_cpu" = ia64; then
+- # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- else
+- # With GCC up to 2.95.x, collect2 would create an import file
+- # for dependence libraries. The import file would start with
+- # the line `#! .'. This would cause the generated library to
+- # depend on `.', always an invalid library. This was fixed in
+- # development snapshots of GCC prior to 3.0.
+- case $host_os in
+- aix4 | aix4.[[01]] | aix4.[[01]].*)
+- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+- echo ' yes '
+- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+- :
+- else
+- can_build_shared=no
+- fi
+- ;;
+- esac
+- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- if test "$aix_use_runtimelinking" = yes; then
+- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+- # instead of lib<name>.a to let people know that these are not
+- # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- else
+- # We preserve .a as extension for shared libraries through AIX4.2
+- # and later when we are not doing run time linking.
+- library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- fi
+- shlibpath_var=LIBPATH
+- fi
+- ;;
+-
+-amigaos*)
+- case $host_cpu in
+- powerpc)
+- # Since July 2007 AmigaOS4 officially supports .so libraries.
+- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- ;;
+- m68k)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+- ;;
+- esac
+- ;;
+-
+-beos*)
+- library_names_spec='${libname}${shared_ext}'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- ;;
+-
+-bsdi[[45]]*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
+-
+-cygwin* | mingw* | pw32* | cegcc*)
+- version_type=windows
+- shrext_cmds=".dll"
+- need_version=no
+- need_lib_prefix=no
+-
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+- library_names_spec='$libname.dll.a'
+- # DLL is installed to $(libdir)/../bin by postinstall_cmds
+- postinstall_cmds='base_file=`basename \${file}`~
+- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+- dldir=$destdir/`dirname \$dlpath`~
+- test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname~
+- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+- fi'
+- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+- dlpath=$dir/\$dldll~
+- $RM \$dlpath'
+- shlibpath_overrides_runpath=yes
+-
+- case $host_os in
+- cygwin*)
+- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+- ;;
+- mingw* | cegcc*)
+- # MinGW DLLs use traditional 'lib' prefix
+- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+- # It is most probably a Windows format PATH printed by
+- # mingw gcc, but we are running on Cygwin. Gcc prints its search
+- # path with ; separators, and with drive letters. We can handle the
+- # drive letters (cygwin fileutils understands them), so leave them,
+- # especially as we might pass files found there to a mingw objdump,
+- # which wouldn't understand a cygwinified path. Ahh.
+- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
+- ;;
+- pw32*)
+- # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- ;;
+- esac
+- ;;
+-
+- *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+- ;;
+- esac
+- dynamic_linker='Win32 ld.exe'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- ;;
+-
+-darwin* | rhapsody*)
+- dynamic_linker="$host_os dyld"
+- version_type=darwin
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
+- shlibpath_overrides_runpath=yes
+- shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+-m4_if([$1], [],[
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+- ;;
+-
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-freebsd1*)
+- dynamic_linker=no
+- ;;
+-
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[[123]]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
+- version_type=freebsd-$objformat
+- case $version_type in
+- freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- need_version=no
+- need_lib_prefix=no
+- ;;
+- freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+- need_version=yes
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_os in
+- freebsd2*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+- *) # from 4.6 on, and DragonFly
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- esac
+- ;;
+-
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
+-
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+- else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+- fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
+- esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
+-
+-interix[[3-9]]*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
+- *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
+- else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
+-
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
+-
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # Some binutils ld are patched to set DT_RUNPATH
+- save_LDFLAGS=$LDFLAGS
+- save_libdir=$libdir
+- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+- [shlibpath_overrides_runpath=yes])])
+- LDFLAGS=$save_LDFLAGS
+- libdir=$save_libdir
+-
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
+-
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
+-
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
+-
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
+-
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+-
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
+-
+-*nto* | *qnx*)
+- version_type=qnx
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='ldqnx.so'
+- ;;
+-
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[[89]] | openbsd2.[[89]].*)
+- shlibpath_overrides_runpath=no
+- ;;
+- *)
+- shlibpath_overrides_runpath=yes
+- ;;
+- esac
+- else
+- shlibpath_overrides_runpath=yes
+- fi
+- ;;
+-
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
+-
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
+-
+-rdos*)
+- dynamic_linker=no
+- ;;
+-
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
+-
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
+-
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- runpath_var=LD_RUN_PATH
+- ;;
+- siemens)
+- need_lib_prefix=no
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+- ;;
+- esac
+- ;;
+-
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
+-
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+-tpf*)
+- # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-AC_MSG_RESULT([$dynamic_linker])
+-test "$dynamic_linker" = no && can_build_shared=no
+-
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+-fi
+-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+-fi
+-
+-_LT_DECL([], [variables_saved_for_relink], [1],
+- [Variables whose values should be saved in libtool wrapper scripts and
+- restored at link time])
+-_LT_DECL([], [need_lib_prefix], [0],
+- [Do we need the "lib" prefix for modules?])
+-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+-_LT_DECL([], [version_type], [0], [Library versioning type])
+-_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+-_LT_DECL([], [shlibpath_overrides_runpath], [0],
+- [Is shlibpath searched before the hard-coded library search path?])
+-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+-_LT_DECL([], [library_names_spec], [1],
+- [[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]])
+-_LT_DECL([], [soname_spec], [1],
+- [[The coded name of the library, if different from the real name]])
+-_LT_DECL([], [postinstall_cmds], [2],
+- [Command to use after installation of a shared archive])
+-_LT_DECL([], [postuninstall_cmds], [2],
+- [Command to use after uninstallation of a shared archive])
+-_LT_DECL([], [finish_cmds], [2],
+- [Commands used to finish a libtool library installation in a directory])
+-_LT_DECL([], [finish_eval], [1],
+- [[As "finish_cmds", except a single script fragment to be evaled but
+- not shown]])
+-_LT_DECL([], [hardcode_into_libs], [0],
+- [Whether we should hardcode library paths into libraries])
+-_LT_DECL([], [sys_lib_search_path_spec], [2],
+- [Compile-time system search path for libraries])
+-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+- [Run-time system search path for libraries])
+-])# _LT_SYS_DYNAMIC_LINKER
+-
+-
+-# _LT_PATH_TOOL_PREFIX(TOOL)
+-# --------------------------
+-# find a file program which can recognize shared library
+-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+-[m4_require([_LT_DECL_EGREP])dnl
+-AC_MSG_CHECKING([for $1])
+-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+-[case $MAGIC_CMD in
+-[[\\/*] | ?:[\\/]*])
+- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+- ;;
+-*)
+- lt_save_MAGIC_CMD="$MAGIC_CMD"
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+-dnl $ac_dummy forces splitting on constant user-supplied paths.
+-dnl POSIX.2 word splitting is done only on the output of word expansions,
+-dnl not every word. This closes a longstanding sh security hole.
+- ac_dummy="m4_if([$2], , $PATH, [$2])"
+- for ac_dir in $ac_dummy; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- if test -f $ac_dir/$1; then
+- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+- if test -n "$file_magic_test_file"; then
+- case $deplibs_check_method in
+- "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+- $EGREP "$file_magic_regex" > /dev/null; then
+- :
+- else
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: the command libtool uses to detect shared libraries,
+-*** $file_magic_cmd, produces output that libtool cannot recognize.
+-*** The result is that libtool may fail to recognize shared libraries
+-*** as such. This will affect the creation of libtool libraries that
+-*** depend on shared libraries, but programs linked with such libtool
+-*** libraries will work regardless of this problem. Nevertheless, you
+-*** may want to report the problem to your system manager and/or to
+-*** bug-libtool@gnu.org
+-
+-_LT_EOF
+- fi ;;
+- esac
+- fi
+- break
+- fi
+- done
+- IFS="$lt_save_ifs"
+- MAGIC_CMD="$lt_save_MAGIC_CMD"
+- ;;
+-esac])
+-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+-if test -n "$MAGIC_CMD"; then
+- AC_MSG_RESULT($MAGIC_CMD)
+-else
+- AC_MSG_RESULT(no)
+-fi
+-_LT_DECL([], [MAGIC_CMD], [0],
+- [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+-])# _LT_PATH_TOOL_PREFIX
+-
+-# Old name:
+-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+-
+-
+-# _LT_PATH_MAGIC
+-# --------------
+-# find a file program which can recognize a shared library
+-m4_defun([_LT_PATH_MAGIC],
+-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+-if test -z "$lt_cv_path_MAGIC_CMD"; then
+- if test -n "$ac_tool_prefix"; then
+- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+- else
+- MAGIC_CMD=:
+- fi
+-fi
+-])# _LT_PATH_MAGIC
+-
+-
+-# LT_PATH_LD
+-# ----------
+-# find the pathname to the GNU or non-GNU linker
+-AC_DEFUN([LT_PATH_LD],
+-[AC_REQUIRE([AC_PROG_CC])dnl
+-AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+-m4_require([_LT_DECL_SED])dnl
+-m4_require([_LT_DECL_EGREP])dnl
+-
+-AC_ARG_WITH([gnu-ld],
+- [AS_HELP_STRING([--with-gnu-ld],
+- [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+- [test "$withval" = no || with_gnu_ld=yes],
+- [with_gnu_ld=no])dnl
+-
+-ac_prog=ld
+-if test "$GCC" = yes; then
+- # Check if gcc -print-prog-name=ld gives a path.
+- AC_MSG_CHECKING([for ld used by $CC])
+- case $host in
+- *-*-mingw*)
+- # gcc leaves a trailing carriage return which upsets mingw
+- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+- *)
+- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+- esac
+- case $ac_prog in
+- # Accept absolute paths.
+- [[\\/]]* | ?:[[\\/]]*)
+- re_direlt='/[[^/]][[^/]]*/\.\./'
+- # Canonicalize the pathname of ld
+- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+- done
+- test -z "$LD" && LD="$ac_prog"
+- ;;
+- "")
+- # If it fails, then pretend we aren't using GCC.
+- ac_prog=ld
+- ;;
+- *)
+- # If it is relative, then search for the first ld in PATH.
+- with_gnu_ld=unknown
+- ;;
+- esac
+-elif test "$with_gnu_ld" = yes; then
+- AC_MSG_CHECKING([for GNU ld])
+-else
+- AC_MSG_CHECKING([for non-GNU ld])
+-fi
+-AC_CACHE_VAL(lt_cv_path_LD,
+-[if test -z "$LD"; then
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+- lt_cv_path_LD="$ac_dir/$ac_prog"
+- # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
+- # Break only if it was the GNU/non-GNU ld that we prefer.
+- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+- *GNU* | *'with BFD'*)
+- test "$with_gnu_ld" != no && break
+- ;;
+- *)
+- test "$with_gnu_ld" != yes && break
+- ;;
+- esac
+- fi
+- done
+- IFS="$lt_save_ifs"
+-else
+- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+-fi])
+-LD="$lt_cv_path_LD"
+-if test -n "$LD"; then
+- AC_MSG_RESULT($LD)
+-else
+- AC_MSG_RESULT(no)
+-fi
+-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+-_LT_PATH_LD_GNU
+-AC_SUBST([LD])
+-
+-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+-])# LT_PATH_LD
+-
+-# Old names:
+-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AM_PROG_LD], [])
+-dnl AC_DEFUN([AC_PROG_LD], [])
+-
+-
+-# _LT_PATH_LD_GNU
+-#- --------------
+-m4_defun([_LT_PATH_LD_GNU],
+-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+-case `$LD -v 2>&1 </dev/null` in
+-*GNU* | *'with BFD'*)
+- lt_cv_prog_gnu_ld=yes
+- ;;
+-*)
+- lt_cv_prog_gnu_ld=no
+- ;;
+-esac])
+-with_gnu_ld=$lt_cv_prog_gnu_ld
+-])# _LT_PATH_LD_GNU
+-
+-
+-# _LT_CMD_RELOAD
+-# --------------
+-# find reload flag for linker
+-# -- PORTME Some linkers may need a different reload flag.
+-m4_defun([_LT_CMD_RELOAD],
+-[AC_CACHE_CHECK([for $LD option to reload object files],
+- lt_cv_ld_reload_flag,
+- [lt_cv_ld_reload_flag='-r'])
+-reload_flag=$lt_cv_ld_reload_flag
+-case $reload_flag in
+-"" | " "*) ;;
+-*) reload_flag=" $reload_flag" ;;
+-esac
+-reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+-_LT_DECL([], [reload_cmds], [2])dnl
+-])# _LT_CMD_RELOAD
+-
+-
+-# _LT_CHECK_MAGIC_METHOD
+-# ----------------------
+-# how to check for library dependencies
+-# -- PORTME fill in with the dynamic library characteristics
+-m4_defun([_LT_CHECK_MAGIC_METHOD],
+-[m4_require([_LT_DECL_EGREP])
+-m4_require([_LT_DECL_OBJDUMP])
+-AC_CACHE_CHECK([how to recognize dependent libraries],
+-lt_cv_deplibs_check_method,
+-[lt_cv_file_magic_cmd='$MAGIC_CMD'
+-lt_cv_file_magic_test_file=
+-lt_cv_deplibs_check_method='unknown'
+-# Need to set the preceding variable on all platforms that support
+-# interlibrary dependencies.
+-# 'none' -- dependencies not supported.
+-# `unknown' -- same as none, but documents that we really don't know.
+-# 'pass_all' -- all dependencies passed with no checks.
+-# 'test_compile' -- check by making test program.
+-# 'file_magic [[regex]]' -- check by looking for files in library path
+-# which responds to the $file_magic_cmd with a given extended regex.
+-# If you have `file' or equivalent on your system and you're not sure
+-# whether `pass_all' will *always* work, you probably want this one.
+-
+-case $host_os in
+-aix[[4-9]]*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-beos*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-bsdi[[45]]*)
+- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+- lt_cv_file_magic_cmd='/usr/bin/file -L'
+- lt_cv_file_magic_test_file=/shlib/libc.so
+- ;;
+-
+-cygwin*)
+- # func_win32_libid is a shell function defined in ltmain.sh
+- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+- lt_cv_file_magic_cmd='func_win32_libid'
+- ;;
+-
+-mingw* | pw32*)
+- # Base MSYS/MinGW do not provide the 'file' command needed by
+- # func_win32_libid shell function, so use a weaker test based on 'objdump',
+- # unless we find 'file', for example because we are cross-compiling.
+- if ( file / ) >/dev/null 2>&1; then
+- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+- lt_cv_file_magic_cmd='func_win32_libid'
+- else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+- lt_cv_file_magic_cmd='$OBJDUMP -f'
+- fi
+- ;;
+-
+-cegcc)
+- # use the weaker test based on 'objdump'. See mingw*.
+- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+- lt_cv_file_magic_cmd='$OBJDUMP -f'
+- ;;
+-
+-darwin* | rhapsody*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-freebsd* | dragonfly*)
+- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+- case $host_cpu in
+- i*86 )
+- # Not sure whether the presence of OpenBSD here was a mistake.
+- # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+- lt_cv_file_magic_cmd=/usr/bin/file
+- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+- ;;
+- esac
+- else
+- lt_cv_deplibs_check_method=pass_all
+- fi
+- ;;
+-
+-gnu*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-hpux10.20* | hpux11*)
+- lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
+- ia64*)
+- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+- ;;
+- hppa*64*)
+- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+- ;;
+- *)
+- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+- lt_cv_file_magic_test_file=/usr/lib/libc.sl
+- ;;
+- esac
+- ;;
+-
+-interix[[3-9]]*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+- ;;
+-
+-irix5* | irix6* | nonstopux*)
+- case $LD in
+- *-32|*"-32 ") libmagic=32-bit;;
+- *-n32|*"-n32 ") libmagic=N32;;
+- *-64|*"-64 ") libmagic=64-bit;;
+- *) libmagic=never-match;;
+- esac
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+- else
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+- fi
+- ;;
+-
+-newos6*)
+- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+- lt_cv_file_magic_cmd=/usr/bin/file
+- lt_cv_file_magic_test_file=/usr/lib/libnls.so
+- ;;
+-
+-*nto* | *qnx*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-openbsd*)
+- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+- else
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+- fi
+- ;;
+-
+-osf3* | osf4* | osf5*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-rdos*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-solaris*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-
+-sysv4 | sysv4.3*)
+- case $host_vendor in
+- motorola)
+- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+- ;;
+- ncr)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+- sequent)
+- lt_cv_file_magic_cmd='/bin/file'
+- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+- ;;
+- sni)
+- lt_cv_file_magic_cmd='/bin/file'
+- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+- lt_cv_file_magic_test_file=/lib/libc.so
+- ;;
+- siemens)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+- esac
+- ;;
+-
+-tpf*)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+-esac
+-])
+-file_magic_cmd=$lt_cv_file_magic_cmd
+-deplibs_check_method=$lt_cv_deplibs_check_method
+-test -z "$deplibs_check_method" && deplibs_check_method=unknown
+-
+-_LT_DECL([], [deplibs_check_method], [1],
+- [Method to check whether dependent libraries are shared objects])
+-_LT_DECL([], [file_magic_cmd], [1],
+- [Command to use when deplibs_check_method == "file_magic"])
+-])# _LT_CHECK_MAGIC_METHOD
+-
+-
+-# LT_PATH_NM
+-# ----------
+-# find the pathname to a BSD- or MS-compatible name lister
+-AC_DEFUN([LT_PATH_NM],
+-[AC_REQUIRE([AC_PROG_CC])dnl
+-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+-[if test -n "$NM"; then
+- # Let the user override the test.
+- lt_cv_path_NM="$NM"
+-else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
+- break
+- ;;
+- *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
+- ;;
+- esac
+- fi
+- done
+- IFS="$lt_save_ifs"
+- done
+- : ${lt_cv_path_NM=no}
+-fi])
+-if test "$lt_cv_path_NM" != "no"; then
+- NM="$lt_cv_path_NM"
+-else
+- # Didn't find any BSD compatible name lister, look for dumpbin.
+- AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+- AC_SUBST([DUMPBIN])
+- if test "$DUMPBIN" != ":"; then
+- NM="$DUMPBIN"
+- fi
+-fi
+-test -z "$NM" && NM=nm
+-AC_SUBST([NM])
+-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+-
+-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+- [lt_cv_nm_interface="BSD nm"
+- echo "int some_variable = 0;" > conftest.$ac_ext
+- (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+- (eval "$ac_compile" 2>conftest.err)
+- cat conftest.err >&AS_MESSAGE_LOG_FD
+- (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+- cat conftest.err >&AS_MESSAGE_LOG_FD
+- (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+- cat conftest.out >&AS_MESSAGE_LOG_FD
+- if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+- lt_cv_nm_interface="MS dumpbin"
+- fi
+- rm -f conftest*])
+-])# LT_PATH_NM
+-
+-# Old names:
+-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AM_PROG_NM], [])
+-dnl AC_DEFUN([AC_PROG_NM], [])
+-
+-
+-# LT_LIB_M
+-# --------
+-# check for math library
+-AC_DEFUN([LT_LIB_M],
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-LIBM=
+-case $host in
+-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+- # These system don't have libm, or don't need it
+- ;;
+-*-ncr-sysv4.3*)
+- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+- ;;
+-*)
+- AC_CHECK_LIB(m, cos, LIBM="-lm")
+- ;;
+-esac
+-AC_SUBST([LIBM])
+-])# LT_LIB_M
+-
+-# Old name:
+-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_CHECK_LIBM], [])
+-
+-
+-# _LT_COMPILER_NO_RTTI([TAGNAME])
+-# -------------------------------
+-m4_defun([_LT_COMPILER_NO_RTTI],
+-[m4_require([_LT_TAG_COMPILER])dnl
+-
+-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+-
+-if test "$GCC" = yes; then
+- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+-
+- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+- lt_cv_prog_compiler_rtti_exceptions,
+- [-fno-rtti -fno-exceptions], [],
+- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+-fi
+-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+- [Compiler flag to turn off builtin functions])
+-])# _LT_COMPILER_NO_RTTI
+-
+-
+-# _LT_CMD_GLOBAL_SYMBOLS
+-# ----------------------
+-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-AC_REQUIRE([AC_PROG_CC])dnl
+-AC_REQUIRE([LT_PATH_NM])dnl
+-AC_REQUIRE([LT_PATH_LD])dnl
+-m4_require([_LT_DECL_SED])dnl
+-m4_require([_LT_DECL_EGREP])dnl
+-m4_require([_LT_TAG_COMPILER])dnl
+-
+-# Check for command to grab the raw symbol name followed by C symbol from nm.
+-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+-[
+-# These are sane defaults that work on at least a few old systems.
+-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+-
+-# Character class describing NM global symbol codes.
+-symcode='[[BCDEGRST]]'
+-
+-# Regexp to match symbols that can be accessed directly from C.
+-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+-
+-# Define system-specific variables.
+-case $host_os in
+-aix*)
+- symcode='[[BCDT]]'
+- ;;
+-cygwin* | mingw* | pw32* | cegcc*)
+- symcode='[[ABCDGISTW]]'
+- ;;
+-hpux*)
+- if test "$host_cpu" = ia64; then
+- symcode='[[ABCDEGRST]]'
+- fi
+- ;;
+-irix* | nonstopux*)
+- symcode='[[BCDEGRST]]'
+- ;;
+-osf*)
+- symcode='[[BCDEGQRST]]'
+- ;;
+-solaris*)
+- symcode='[[BDRT]]'
+- ;;
+-sco3.2v5*)
+- symcode='[[DT]]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[[DT]]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[[ABDT]]'
+- ;;
+-sysv4)
+- symcode='[[DFNSTU]]'
+- ;;
+-esac
+-
+-# If we're using GNU nm, then use its standard symbol codes.
+-case `$NM -V 2>&1` in
+-*GNU* | *'with BFD'*)
+- symcode='[[ABCDGIRSTW]]' ;;
+-esac
+-
+-# Transform an extracted symbol line into a proper C declaration.
+-# Some systems (esp. on ia64) link data and code symbols differently,
+-# so use this general approach.
+-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+-
+-# Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+-
+-# Handle CRLF in mingw tool chain
+-opt_cr=
+-case $build_os in
+-mingw*)
+- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+- ;;
+-esac
+-
+-# Try without a prefix underscore, then with it.
+-for ac_symprfx in "" "_"; do
+-
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+- # Write the raw and C identifiers.
+- if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+- # Fake it for dumpbin and say T for any non-static function
+- # and D for any global variable.
+- # Also find C++ and __fastcall symbols from MSVC++,
+- # which start with @ or ?.
+- lt_cv_sys_global_symbol_pipe="$AWK ['"\
+-" {last_section=section; section=\$ 3};"\
+-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+-" \$ 0!~/External *\|/{next};"\
+-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+-" {if(hide[section]) next};"\
+-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+-" ' prfx=^$ac_symprfx]"
+- else
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+- fi
+-
+- # Check to see that the pipe works correctly.
+- pipe_works=no
+-
+- rm -f conftest*
+- cat > conftest.$ac_ext <<_LT_EOF
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-char nm_test_var;
+-void nm_test_func(void);
+-void nm_test_func(void){}
+-#ifdef __cplusplus
+-}
+-#endif
+-int main(){nm_test_var='a';nm_test_func();return(0);}
+-_LT_EOF
+-
+- if AC_TRY_EVAL(ac_compile); then
+- # Now try to grab the symbols.
+- nlist=conftest.nm
+- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+- # Try sorting and uniquifying the output.
+- if sort "$nlist" | uniq > "$nlist"T; then
+- mv -f "$nlist"T "$nlist"
+- else
+- rm -f "$nlist"T
+- fi
+-
+- # Make sure that we snagged all the symbols we need.
+- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+- cat <<_LT_EOF > conftest.$ac_ext
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-_LT_EOF
+- # Now generate the symbol file.
+- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+-
+- cat <<_LT_EOF >> conftest.$ac_ext
+-
+-/* The mapping between symbol names and symbols. */
+-const struct {
+- const char *name;
+- void *address;
+-}
+-lt__PROGRAM__LTX_preloaded_symbols[[]] =
+-{
+- { "@PROGRAM@", (void *) 0 },
+-_LT_EOF
+- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+- cat <<\_LT_EOF >> conftest.$ac_ext
+- {0, (void *) 0}
+-};
+-
+-/* This works around a problem in FreeBSD linker */
+-#ifdef FREEBSD_WORKAROUND
+-static const void *lt_preloaded_setup() {
+- return lt__PROGRAM__LTX_preloaded_symbols;
+-}
+-#endif
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-_LT_EOF
+- # Now try linking the two files.
+- mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
+- LIBS="conftstm.$ac_objext"
+- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+- pipe_works=yes
+- fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
+- else
+- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+- fi
+- else
+- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+- fi
+- else
+- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+- fi
+- else
+- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+- cat conftest.$ac_ext >&5
+- fi
+- rm -rf conftest* conftst*
+-
+- # Do not use the global_symbol_pipe unless it works.
+- if test "$pipe_works" = yes; then
+- break
+- else
+- lt_cv_sys_global_symbol_pipe=
+- fi
+-done
+-])
+-if test -z "$lt_cv_sys_global_symbol_pipe"; then
+- lt_cv_sys_global_symbol_to_cdecl=
+-fi
+-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+- AC_MSG_RESULT(failed)
+-else
+- AC_MSG_RESULT(ok)
+-fi
+-
+-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+- [Take the output of nm and produce a listing of raw symbols and C names])
+-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+- [Transform the output of nm in a proper C declaration])
+-_LT_DECL([global_symbol_to_c_name_address],
+- [lt_cv_sys_global_symbol_to_c_name_address], [1],
+- [Transform the output of nm in a C name address pair])
+-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+- [Transform the output of nm in a C name address pair when lib prefix is needed])
+-]) # _LT_CMD_GLOBAL_SYMBOLS
+-
+-
+-# _LT_COMPILER_PIC([TAGNAME])
+-# ---------------------------
+-m4_defun([_LT_COMPILER_PIC],
+-[m4_require([_LT_TAG_COMPILER])dnl
+-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+-_LT_TAGVAR(lt_prog_compiler_static, $1)=
+-
+-AC_MSG_CHECKING([for $compiler option to produce PIC])
+-m4_if([$1], [CXX], [
+- # C++ specific cases for pic, static, wl, etc.
+- if test "$GXX" = yes; then
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+-
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- fi
+- ;;
+-
+- amigaos*)
+- case $host_cpu in
+- powerpc)
+- # see comment about AmigaOS4 .so support
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- m68k)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+- ;;
+- esac
+- ;;
+-
+- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
+- mingw* | cygwin* | os2* | pw32* | cegcc*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- # Although the cygwin gcc ignores -fPIC, still need this for old-style
+- # (--disable-auto-import) libraries
+- m4_if([$1], [GCJ], [],
+- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+- ;;
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+- ;;
+- *djgpp*)
+- # DJGPP does not support shared libraries at all
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+- ;;
+- interix[[3-9]]*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+- fi
+- ;;
+- hpux*)
+- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+- # sets the default TLS model and affects inlining.
+- case $host_cpu in
+- hppa*64*)
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- esac
+- ;;
+- *qnx* | *nto*)
+- # QNX uses GNU C++, but need to define -shared option too, otherwise
+- # it will coredump.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- esac
+- else
+- case $host_os in
+- aix[[4-9]]*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- else
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+- fi
+- ;;
+- chorus*)
+- case $cc_basename in
+- cxch68*)
+- # Green Hills C++ Compiler
+- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+- ;;
+- esac
+- ;;
+- dgux*)
+- case $cc_basename in
+- ec++*)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- ;;
+- ghcx*)
+- # Green Hills C++ Compiler
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- freebsd* | dragonfly*)
+- # FreeBSD uses GNU C++
+- ;;
+- hpux9* | hpux10* | hpux11*)
+- case $cc_basename in
+- CC*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+- if test "$host_cpu" != ia64; then
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+- fi
+- ;;
+- aCC*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+- ;;
+- esac
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+- irix5* | irix6* | nonstopux*)
+- case $cc_basename in
+- CC*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- # CC pic flag -KPIC is the default.
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+- case $cc_basename in
+- KCC*)
+- # KAI C++ Compiler
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- ecpc* )
+- # old Intel C++ for x86_64 which still supported -KPIC.
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+- ;;
+- icpc* )
+- # Intel C++, used to be incompatible with GCC.
+- # ICC 10 doesn't accept -KPIC any more.
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+- ;;
+- pgCC* | pgcpp*)
+- # Portland Group C++ compiler
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- cxx*)
+- # Compaq C++
+- # Make sure the PIC flag is empty. It appears that all Alpha
+- # Linux and Compaq Tru64 Unix objects are PIC.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- ;;
+- xlc* | xlC*)
+- # IBM XL 8.0 on PPC
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+- ;;
+- *)
+- case `$CC -V 2>&1 | sed 5q` in
+- *Sun\ C*)
+- # Sun C++ 5.9
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+- ;;
+- esac
+- ;;
+- esac
+- ;;
+- lynxos*)
+- ;;
+- m88k*)
+- ;;
+- mvs*)
+- case $cc_basename in
+- cxx*)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- netbsd* | netbsdelf*-gnu)
+- ;;
+- *qnx* | *nto*)
+- # QNX uses GNU C++, but need to define -shared option too, otherwise
+- # it will coredump.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+- ;;
+- osf3* | osf4* | osf5*)
+- case $cc_basename in
+- KCC*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+- ;;
+- RCC*)
+- # Rational C++ 2.4.1
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+- ;;
+- cxx*)
+- # Digital/Compaq C++
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- # Make sure the PIC flag is empty. It appears that all Alpha
+- # Linux and Compaq Tru64 Unix objects are PIC.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- psos*)
+- ;;
+- solaris*)
+- case $cc_basename in
+- CC*)
+- # Sun C++ 4.2, 5.x and Centerline C++
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+- ;;
+- gcx*)
+- # Green Hills C++ Compiler
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- sunos4*)
+- case $cc_basename in
+- CC*)
+- # Sun C++ 4.x
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- lcc*)
+- # Lucid
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- esac
+- ;;
+- tandem*)
+- case $cc_basename in
+- NCC*)
+- # NonStop-UX NCC 3.20
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- ;;
+- *)
+- ;;
+- esac
+- ;;
+- vxworks*)
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- ;;
+- esac
+- fi
+-],
+-[
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+-
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- fi
+- ;;
+-
+- amigaos*)
+- case $host_cpu in
+- powerpc)
+- # see comment about AmigaOS4 .so support
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- m68k)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+- ;;
+- esac
+- ;;
+-
+- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
+-
+- mingw* | cygwin* | pw32* | os2* | cegcc*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- # Although the cygwin gcc ignores -fPIC, still need this for old-style
+- # (--disable-auto-import) libraries
+- m4_if([$1], [GCJ], [],
+- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+- ;;
+-
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+- ;;
+-
+- hpux*)
+- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+- # sets the default TLS model and affects inlining.
+- case $host_cpu in
+- hppa*64*)
+- # +Z the default
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- esac
+- ;;
+-
+- interix[[3-9]]*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+- msdosdjgpp*)
+- # Just because we use GCC doesn't mean we suddenly get shared libraries
+- # on systems that don't support them.
+- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- enable_shared=no
+- ;;
+-
+- *nto* | *qnx*)
+- # QNX uses GNU C++, but need to define -shared option too, otherwise
+- # it will coredump.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+- ;;
+-
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+- fi
+- ;;
+-
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- ;;
+- esac
+- else
+- # PORTME Check for flag to pass linker flags through the system compiler.
+- case $host_os in
+- aix*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- else
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+- fi
+- ;;
+-
+- mingw* | cygwin* | pw32* | os2* | cegcc*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- m4_if([$1], [GCJ], [],
+- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+- ;;
+-
+- hpux9* | hpux10* | hpux11*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+- ;;
+- esac
+- # Is there a better lt_prog_compiler_static that works with the bundled CC?
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+- ;;
+-
+- irix5* | irix6* | nonstopux*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- # PIC (with -KPIC) is the default.
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- ;;
+-
+- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+- case $cc_basename in
+- # old Intel for x86_64 which still supported -KPIC.
+- ecc*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+- ;;
+- # icc used to be incompatible with GCC.
+- # ICC 10 doesn't accept -KPIC any more.
+- icc* | ifort*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+- ;;
+- # Lahey Fortran 8.1.
+- lf95*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+- ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- ccc*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- # All Alpha code is PIC.
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- ;;
+- xl*)
+- # IBM XL C 8.0/Fortran 10.1 on PPC
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+- ;;
+- *)
+- case `$CC -V 2>&1 | sed 5q` in
+- *Sun\ C*)
+- # Sun C 5.9
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- *Sun\ F*)
+- # Sun Fortran 8.3 passes all unrecognized flags to the linker
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+- ;;
+- esac
+- ;;
+- esac
+- ;;
+-
+- newsos6)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- *nto* | *qnx*)
+- # QNX uses GNU C++, but need to define -shared option too, otherwise
+- # it will coredump.
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+- ;;
+-
+- osf3* | osf4* | osf5*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- # All OSF/1 code is PIC.
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- ;;
+-
+- rdos*)
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+- ;;
+-
+- solaris*)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+- esac
+- ;;
+-
+- sunos4*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- sysv4 | sysv4.2uw2* | sysv4.3*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- fi
+- ;;
+-
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- unicos*)
+- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- ;;
+-
+- uts4*)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- *)
+- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- ;;
+- esac
+- fi
+-])
+-case $host_os in
+- # For platforms which do not support PIC, -DPIC is meaningless:
+- *djgpp*)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+- ;;
+- *)
+- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+- ;;
+-esac
+-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+- [How to pass a linker flag through the compiler])
+-
+-#
+-# Check to make sure the PIC flag actually works.
+-#
+-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+- "" | " "*) ;;
+- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+- esac],
+- [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+-fi
+-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+- [Additional compiler flags for building library objects])
+-
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+- $lt_tmp_static_flag,
+- [],
+- [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+- [Compiler flag to prevent dynamic linking])
+-])# _LT_COMPILER_PIC
+-
+-
+-# _LT_LINKER_SHLIBS([TAGNAME])
+-# ----------------------------
+-# See if the linker supports building shared libraries.
+-m4_defun([_LT_LINKER_SHLIBS],
+-[AC_REQUIRE([LT_PATH_LD])dnl
+-AC_REQUIRE([LT_PATH_NM])dnl
+-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_DECL_EGREP])dnl
+-m4_require([_LT_DECL_SED])dnl
+-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+-m4_require([_LT_TAG_COMPILER])dnl
+-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+-m4_if([$1], [CXX], [
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- case $host_os in
+- aix[[4-9]]*)
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+- else
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+- fi
+- ;;
+- pw32*)
+- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+- ;;
+- cygwin* | mingw* | cegcc*)
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- _LT_TAGVAR(link_all_deplibs, $1)=no
+- ;;
+- *)
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- esac
+- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+-], [
+- runpath_var=
+- _LT_TAGVAR(allow_undefined_flag, $1)=
+- _LT_TAGVAR(always_export_symbols, $1)=no
+- _LT_TAGVAR(archive_cmds, $1)=
+- _LT_TAGVAR(archive_expsym_cmds, $1)=
+- _LT_TAGVAR(compiler_needs_object, $1)=no
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- _LT_TAGVAR(hardcode_automatic, $1)=no
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=
+- _LT_TAGVAR(hardcode_minus_L, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_TAGVAR(inherit_rpath, $1)=no
+- _LT_TAGVAR(link_all_deplibs, $1)=unknown
+- _LT_TAGVAR(module_cmds, $1)=
+- _LT_TAGVAR(module_expsym_cmds, $1)=
+- _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+- _LT_TAGVAR(thread_safe_flag_spec, $1)=
+- _LT_TAGVAR(whole_archive_flag_spec, $1)=
+- # include_expsyms should be a list of space-separated symbols to be *always*
+- # included in the symbol list
+- _LT_TAGVAR(include_expsyms, $1)=
+- # exclude_expsyms can be an extended regexp of symbols to exclude
+- # it will be wrapped by ` (' and `)$', so one must not match beginning or
+- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+- # as well as any symbol that contains `d'.
+- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+- # platforms (ab)use it in PIC code, but their linkers get confused if
+- # the symbol is explicitly referenced. Since portable code cannot
+- # rely on this symbol name, it's probably fine to never include it in
+- # preloaded symbol tables.
+- # Exclude shared library initialization/finalization symbols.
+-dnl Note also adjust exclude_expsyms for C++ above.
+- extract_expsyms_cmds=
+-
+- case $host_os in
+- cygwin* | mingw* | pw32* | cegcc*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$GCC" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+- openbsd*)
+- with_gnu_ld=no
+- ;;
+- linux* | k*bsd*-gnu)
+- _LT_TAGVAR(link_all_deplibs, $1)=no
+- ;;
+- esac
+-
+- _LT_TAGVAR(ld_shlibs, $1)=yes
+- if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
+-
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- _LT_TAGVAR(whole_archive_flag_spec, $1)=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>&1` in
+- *GNU\ gold*) supports_anon_versioning=yes ;;
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+- # See if GNU ld supports shared libraries.
+- case $host_os in
+- aix[[3-9]]*)
+- # On AIX/PPC, the GNU linker is very broken
+- if test "$host_cpu" != ia64; then
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
+-
+-_LT_EOF
+- fi
+- ;;
+-
+- amigaos*)
+- case $host_cpu in
+- powerpc)
+- # see comment about AmigaOS4 .so support
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)=''
+- ;;
+- m68k)
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- ;;
+- esac
+- ;;
+-
+- beos*)
+- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- cygwin* | mingw* | pw32* | cegcc*)
+- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+- # as there is no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- _LT_TAGVAR(always_export_symbols, $1)=no
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+-
+- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- interix[[3-9]]*)
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+- tmp_diet=no
+- if test "$host_os" = linux-dietlibc; then
+- case $cc_basename in
+- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+- esac
+- fi
+- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+- && test "$tmp_diet" = no
+- then
+- tmp_addflag=
+- tmp_sharedflag='-shared'
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- lf95*) # Lahey Fortran 8.1
+- _LT_TAGVAR(whole_archive_flag_spec, $1)=
+- tmp_sharedflag='--shared' ;;
+- xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+- tmp_sharedflag='-qmkshrobj'
+- tmp_addflag= ;;
+- esac
+- case `$CC -V 2>&1 | sed 5q` in
+- *Sun\ C*) # Sun C 5.9
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+- _LT_TAGVAR(compiler_needs_object, $1)=yes
+- tmp_sharedflag='-G' ;;
+- *Sun\ F*) # Sun Fortran 8.3
+- tmp_sharedflag='-G' ;;
+- esac
+- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test "x$supports_anon_versioning" = xyes; then
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+-
+- case $cc_basename in
+- xlf*)
+- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+- if test "x$supports_anon_versioning" = xyes; then
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+- fi
+- ;;
+- esac
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+- wlarc=
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- fi
+- ;;
+-
+- solaris*)
+- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+- sunos4*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- *)
+- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+-
+- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+- runpath_var=
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+- _LT_TAGVAR(whole_archive_flag_spec, $1)=
+- fi
+- else
+- # PORTME fill in a description of your system's linker (not GNU ld)
+- case $host_os in
+- aix3*)
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- _LT_TAGVAR(always_export_symbols, $1)=yes
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- _LT_TAGVAR(hardcode_direct, $1)=unsupported
+- fi
+- ;;
+-
+- aix[[4-9]]*)
+- if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
+- else
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+- else
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+- fi
+- aix_use_runtimelinking=no
+-
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+- for ld_flag in $LDFLAGS; do
+- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+- aix_use_runtimelinking=yes
+- break
+- fi
+- done
+- ;;
+- esac
+-
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
+-
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+-
+- _LT_TAGVAR(archive_cmds, $1)=''
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+-
+- if test "$GCC" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" &&
+- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- :
+- else
+- # We have old collect2
+- _LT_TAGVAR(hardcode_direct, $1)=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=
+- fi
+- ;;
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- _LT_TAGVAR(link_all_deplibs, $1)=no
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
+-
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to export.
+- _LT_TAGVAR(always_export_symbols, $1)=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+- # Determine the default libpath from the value encoded in an
+- # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an
+- # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
+- fi
+- ;;
+-
+- amigaos*)
+- case $host_cpu in
+- powerpc)
+- # see comment about AmigaOS4 .so support
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)=''
+- ;;
+- m68k)
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- ;;
+- esac
+- ;;
+-
+- bsdi[[45]]*)
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+- ;;
+-
+- cygwin* | mingw* | pw32* | cegcc*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+- # FIXME: Should let the user specify the lib program.
+- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+- ;;
+-
+- darwin* | rhapsody*)
+- _LT_DARWIN_LINKER_FEATURES($1)
+- ;;
+-
+- dgux*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- freebsd1*)
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- hpux9*)
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- fi
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- ;;
+-
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- fi
+- ;;
+-
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- else
+- case $host_cpu in
+- hppa*64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- fi
+- if test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+- *)
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- ;;
+- esac
+- fi
+- ;;
+-
+- irix5* | irix6* | nonstopux*)
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- # Try to use the -exported_symbol ld option, if it does not
+- # work, assume that -exports_file does not work either and
+- # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- AC_LINK_IFELSE(int foo(void) {},
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+- )
+- LDFLAGS="$save_LDFLAGS"
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+- fi
+- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- _LT_TAGVAR(inherit_rpath, $1)=yes
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- ;;
+-
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+- fi
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- newsos6)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- *nto* | *qnx*)
+- ;;
+-
+- openbsd*)
+- if test -f /usr/libexec/ld.so; then
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- else
+- case $host_os in
+- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- ;;
+- esac
+- fi
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- os2*)
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+- ;;
+-
+- osf3*)
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+- fi
+- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- ;;
+-
+- osf4* | osf5*) # as osf3* with the addition of -msym flag
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- else
+- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+-
+- # Both c and cxx compiler support -rpath directly
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+- fi
+- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- ;;
+-
+- solaris*)
+- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+- if test "$GCC" = yes; then
+- wlarc='${wl}'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+- else
+- case `$CC -V 2>&1` in
+- *"Compilers 5.0"*)
+- wlarc=''
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+- ;;
+- *)
+- wlarc='${wl}'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+- ;;
+- esac
+- fi
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- case $host_os in
+- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+- *)
+- # The compiler driver will combine and reorder linker options,
+- # but understands `-z linker_flag'. GCC discards it without `$wl',
+- # but is careful enough not to reorder.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+- else
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+- fi
+- ;;
+- esac
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- ;;
+-
+- sunos4*)
+- if test "x$host_vendor" = xsequent; then
+- # Use $CC to link under sequent, because it throws in some extra .o
+- # files that make .init and .fini sections work.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- sysv4)
+- case $host_vendor in
+- sni)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+- ;;
+- siemens)
+- ## LD is ld it makes a PLAMLIB
+- ## CC just makes a GrossModule.
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- ;;
+- motorola)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+- ;;
+- esac
+- runpath_var='LD_RUN_PATH'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- sysv4.3*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+- ;;
+-
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- _LT_TAGVAR(ld_shlibs, $1)=yes
+- fi
+- ;;
+-
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+- ;;
+-
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+- ;;
+-
+- uts4*)
+- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+-
+- *)
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+-
+- if test x$host_vendor = xsni; then
+- case $host in
+- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+- ;;
+- esac
+- fi
+- fi
+-])
+-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+-
+-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+-
+-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+-_LT_DECL([], [extract_expsyms_cmds], [2],
+- [The commands to extract the exported symbol list from a shared archive])
+-
+-#
+-# Do we need to explicitly link libc?
+-#
+-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+-x|xyes)
+- # Assume -lc should be added
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+-
+- if test "$enable_shared" = yes && test "$GCC" = yes; then
+- case $_LT_TAGVAR(archive_cmds, $1) in
+- *'~'*)
+- # FIXME: we may have to deal with multi-command sequences.
+- ;;
+- '$CC '*)
+- # Test whether the compiler implicitly links with -lc since on some
+- # systems, -lgcc has to come before -lc. If gcc already passes -lc
+- # to ld, don't add -lc before -lgcc.
+- AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+- $RM conftest*
+- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+-
+- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+- soname=conftest
+- lib=conftest
+- libobjs=conftest.$ac_objext
+- deplibs=
+- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+- compiler_flags=-v
+- linker_flags=-v
+- verstring=
+- output_objdir=.
+- libname=conftest
+- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+- _LT_TAGVAR(allow_undefined_flag, $1)=
+- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+- then
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- else
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+- fi
+- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+- else
+- cat conftest.err 1>&5
+- fi
+- $RM conftest*
+- AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+- ;;
+- esac
+- fi
+- ;;
+-esac
+-
+-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+- [Whether or not to add -lc for building shared libraries])
+-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+- [enable_shared_with_static_runtimes], [0],
+- [Whether or not to disallow shared libs when runtime libs are static])
+-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+- [Compiler flag to allow reflexive dlopens])
+-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+- [Compiler flag to generate shared objects directly from archives])
+-_LT_TAGDECL([], [compiler_needs_object], [1],
+- [Whether the compiler copes with passing no objects directly])
+-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+- [Create an old-style archive from a shared archive])
+-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+- [Create a temporary old-style archive to link instead of a shared archive])
+-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+-_LT_TAGDECL([], [archive_expsym_cmds], [2])
+-_LT_TAGDECL([], [module_cmds], [2],
+- [Commands used to build a loadable module if different from building
+- a shared archive.])
+-_LT_TAGDECL([], [module_expsym_cmds], [2])
+-_LT_TAGDECL([], [with_gnu_ld], [1],
+- [Whether we are building with GNU ld or not])
+-_LT_TAGDECL([], [allow_undefined_flag], [1],
+- [Flag that allows shared libraries with undefined symbols to be built])
+-_LT_TAGDECL([], [no_undefined_flag], [1],
+- [Flag that enforces no undefined symbols])
+-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+- [Flag to hardcode $libdir into a binary during linking.
+- This must work even if $libdir does not exist])
+-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+- [[If ld is used when linking, flag to hardcode $libdir into a binary
+- during linking. This must work even if $libdir does not exist]])
+-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+- [Whether we need a single "-rpath" flag with a separated argument])
+-_LT_TAGDECL([], [hardcode_direct], [0],
+- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+- DIR into the resulting binary])
+-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+- [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])
+-_LT_TAGDECL([], [hardcode_minus_L], [0],
+- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+- into the resulting binary])
+-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+- into the resulting binary])
+-_LT_TAGDECL([], [hardcode_automatic], [0],
+- [Set to "yes" if building a shared library automatically hardcodes DIR
+- into the library and all subsequent libraries and executables linked
+- against it])
+-_LT_TAGDECL([], [inherit_rpath], [0],
+- [Set to yes if linker adds runtime paths of dependent libraries
+- to runtime path list])
+-_LT_TAGDECL([], [link_all_deplibs], [0],
+- [Whether libtool must link a program against all its dependency libraries])
+-_LT_TAGDECL([], [fix_srcfile_path], [1],
+- [Fix the shell variable $srcfile for the compiler])
+-_LT_TAGDECL([], [always_export_symbols], [0],
+- [Set to "yes" if exported symbols are required])
+-_LT_TAGDECL([], [export_symbols_cmds], [2],
+- [The commands to list exported symbols])
+-_LT_TAGDECL([], [exclude_expsyms], [1],
+- [Symbols that should not be listed in the preloaded symbols])
+-_LT_TAGDECL([], [include_expsyms], [1],
+- [Symbols that must always be exported])
+-_LT_TAGDECL([], [prelink_cmds], [2],
+- [Commands necessary for linking programs (against libraries) with templates])
+-_LT_TAGDECL([], [file_list_spec], [1],
+- [Specify filename containing input files])
+-dnl FIXME: Not yet implemented
+-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+-dnl [Compiler flag to generate thread safe objects])
+-])# _LT_LINKER_SHLIBS
+-
+-
+-# _LT_LANG_C_CONFIG([TAG])
+-# ------------------------
+-# Ensure that the configuration variables for a C compiler are suitably
+-# defined. These variables are subsequently used by _LT_CONFIG to write
+-# the compiler configuration to `libtool'.
+-m4_defun([_LT_LANG_C_CONFIG],
+-[m4_require([_LT_DECL_EGREP])dnl
+-lt_save_CC="$CC"
+-AC_LANG_PUSH(C)
+-
+-# Source file extension for C test sources.
+-ac_ext=c
+-
+-# Object file extension for compiled C test sources.
+-objext=o
+-_LT_TAGVAR(objext, $1)=$objext
+-
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code="int some_variable = 0;"
+-
+-# Code to be used in simple link tests
+-lt_simple_link_test_code='int main(){return(0);}'
+-
+-_LT_TAG_COMPILER
+-# Save the default compiler, since it gets overwritten when the other
+-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+-compiler_DEFAULT=$CC
+-
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+-if test -n "$compiler"; then
+- _LT_COMPILER_NO_RTTI($1)
+- _LT_COMPILER_PIC($1)
+- _LT_COMPILER_C_O($1)
+- _LT_COMPILER_FILE_LOCKS($1)
+- _LT_LINKER_SHLIBS($1)
+- _LT_SYS_DYNAMIC_LINKER($1)
+- _LT_LINKER_HARDCODE_LIBPATH($1)
+- LT_SYS_DLOPEN_SELF
+- _LT_CMD_STRIPLIB
+-
+- # Report which library types will actually be built
+- AC_MSG_CHECKING([if libtool supports shared libraries])
+- AC_MSG_RESULT([$can_build_shared])
+-
+- AC_MSG_CHECKING([whether to build shared libraries])
+- test "$can_build_shared" = "no" && enable_shared=no
+-
+- # On AIX, shared libraries and static libraries use the same namespace, and
+- # are all built from PIC.
+- case $host_os in
+- aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+-
+- aix[[4-9]]*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
+- ;;
+- esac
+- AC_MSG_RESULT([$enable_shared])
+-
+- AC_MSG_CHECKING([whether to build static libraries])
+- # Make sure either enable_shared or enable_static is yes.
+- test "$enable_shared" = yes || enable_static=yes
+- AC_MSG_RESULT([$enable_static])
+-
+- _LT_CONFIG($1)
+-fi
+-AC_LANG_POP
+-CC="$lt_save_CC"
+-])# _LT_LANG_C_CONFIG
+-
+-
+-# _LT_PROG_CXX
+-# ------------
+-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+-# compiler, we have our own version here.
+-m4_defun([_LT_PROG_CXX],
+-[
+-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+-AC_PROG_CXX
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- AC_PROG_CXXCPP
+-else
+- _lt_caught_CXX_error=yes
+-fi
+-popdef([AC_MSG_ERROR])
+-])# _LT_PROG_CXX
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([_LT_PROG_CXX], [])
+-
+-
+-# _LT_LANG_CXX_CONFIG([TAG])
+-# --------------------------
+-# Ensure that the configuration variables for a C++ compiler are suitably
+-# defined. These variables are subsequently used by _LT_CONFIG to write
+-# the compiler configuration to `libtool'.
+-m4_defun([_LT_LANG_CXX_CONFIG],
+-[AC_REQUIRE([_LT_PROG_CXX])dnl
+-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-m4_require([_LT_DECL_EGREP])dnl
+-
+-AC_LANG_PUSH(C++)
+-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+-_LT_TAGVAR(allow_undefined_flag, $1)=
+-_LT_TAGVAR(always_export_symbols, $1)=no
+-_LT_TAGVAR(archive_expsym_cmds, $1)=
+-_LT_TAGVAR(compiler_needs_object, $1)=no
+-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+-_LT_TAGVAR(hardcode_direct, $1)=no
+-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+-_LT_TAGVAR(hardcode_libdir_separator, $1)=
+-_LT_TAGVAR(hardcode_minus_L, $1)=no
+-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+-_LT_TAGVAR(hardcode_automatic, $1)=no
+-_LT_TAGVAR(inherit_rpath, $1)=no
+-_LT_TAGVAR(module_cmds, $1)=
+-_LT_TAGVAR(module_expsym_cmds, $1)=
+-_LT_TAGVAR(link_all_deplibs, $1)=unknown
+-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-_LT_TAGVAR(no_undefined_flag, $1)=
+-_LT_TAGVAR(whole_archive_flag_spec, $1)=
+-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+-
+-# Source file extension for C++ test sources.
+-ac_ext=cpp
+-
+-# Object file extension for compiled C++ test sources.
+-objext=o
+-_LT_TAGVAR(objext, $1)=$objext
+-
+-# No sense in running all these tests if we already determined that
+-# the CXX compiler isn't working. Some variables (like enable_shared)
+-# are currently assumed to apply to all compilers on this platform,
+-# and will be corrupted by setting them based on a non-working compiler.
+-if test "$_lt_caught_CXX_error" != yes; then
+- # Code to be used in simple compile tests
+- lt_simple_compile_test_code="int some_variable = 0;"
+-
+- # Code to be used in simple link tests
+- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+-
+- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+- _LT_TAG_COMPILER
+-
+- # save warnings/boilerplate of simple test code
+- _LT_COMPILER_BOILERPLATE
+- _LT_LINKER_BOILERPLATE
+-
+- # Allow CC to be a program name with arguments.
+- lt_save_CC=$CC
+- lt_save_LD=$LD
+- lt_save_GCC=$GCC
+- GCC=$GXX
+- lt_save_with_gnu_ld=$with_gnu_ld
+- lt_save_path_LD=$lt_cv_path_LD
+- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+- else
+- $as_unset lt_cv_prog_gnu_ld
+- fi
+- if test -n "${lt_cv_path_LDCXX+set}"; then
+- lt_cv_path_LD=$lt_cv_path_LDCXX
+- else
+- $as_unset lt_cv_path_LD
+- fi
+- test -z "${LDCXX+set}" || LD=$LDCXX
+- CC=${CXX-"c++"}
+- compiler=$CC
+- _LT_TAGVAR(compiler, $1)=$CC
+- _LT_CC_BASENAME([$compiler])
+-
+- if test -n "$compiler"; then
+- # We don't want -fno-exception when compiling C++ code, so set the
+- # no_builtin_flag separately
+- if test "$GXX" = yes; then
+- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+- else
+- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+- fi
+-
+- if test "$GXX" = yes; then
+- # Set up default GNU C++ configuration
+-
+- LT_PATH_LD
+-
+- # Check if GNU C++ uses GNU ld as the underlying linker, since the
+- # archiving commands below assume that GNU ld is being used.
+- if test "$with_gnu_ld" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+-
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+- # investigate it a little bit more. (MM)
+- wlarc='${wl}'
+-
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+- $GREP 'no-whole-archive' > /dev/null; then
+- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- _LT_TAGVAR(whole_archive_flag_spec, $1)=
+- fi
+- else
+- with_gnu_ld=no
+- wlarc=
+-
+- # A generic and very simple default shared library creation
+- # command for GNU C++ for the case where it uses the native
+- # linker, instead of GNU ld. If possible, this setting should
+- # overridden to take advantage of the native linker features on
+- # the platform it is being used on.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- fi
+-
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+-
+- else
+- GXX=no
+- with_gnu_ld=no
+- wlarc=
+- fi
+-
+- # PORTME: fill in a description of your system's C++ link characteristics
+- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+- _LT_TAGVAR(ld_shlibs, $1)=yes
+- case $host_os in
+- aix3*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- aix[[4-9]]*)
+- if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
+- else
+- aix_use_runtimelinking=no
+-
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+- for ld_flag in $LDFLAGS; do
+- case $ld_flag in
+- *-brtl*)
+- aix_use_runtimelinking=yes
+- break
+- ;;
+- esac
+- done
+- ;;
+- esac
+-
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
+-
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+-
+- _LT_TAGVAR(archive_cmds, $1)=''
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+-
+- if test "$GXX" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" &&
+- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- :
+- else
+- # We have old collect2
+- _LT_TAGVAR(hardcode_direct, $1)=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=
+- fi
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
+-
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to
+- # export.
+- _LT_TAGVAR(always_export_symbols, $1)=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+- # Determine the default libpath from the value encoded in an empty
+- # executable.
+- _LT_SYS_MODULE_PATH_AIX
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+-
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an
+- # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared
+- # libraries.
+- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
+- fi
+- ;;
+-
+- beos*)
+- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- chorus*)
+- case $cc_basename in
+- *)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+- ;;
+-
+- cygwin* | mingw* | pw32* | cegcc*)
+- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+- # as there is no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- _LT_TAGVAR(always_export_symbols, $1)=no
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+-
+- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- darwin* | rhapsody*)
+- _LT_DARWIN_LINKER_FEATURES($1)
+- ;;
+-
+- dgux*)
+- case $cc_basename in
+- ec++*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- ghcx*)
+- # Green Hills C++ Compiler
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- *)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+- ;;
+-
+- freebsd[[12]]*)
+- # C++ shared libraries reported to be fairly broken before
+- # switch to ELF
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- freebsd-elf*)
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- ;;
+-
+- freebsd* | dragonfly*)
+- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+- # conventions
+- _LT_TAGVAR(ld_shlibs, $1)=yes
+- ;;
+-
+- gnu*)
+- ;;
+-
+- hpux9*)
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+- # but as the default
+- # location of the library.
+-
+- case $cc_basename in
+- CC*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- aCC*)
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- #
+- # There doesn't appear to be a way to prevent this compiler from
+- # explicitly linking system object files so we need to strip them
+- # from the output so that they don't get included in the library
+- # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+- ;;
+- *)
+- if test "$GXX" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- else
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+- hpux10*|hpux11*)
+- if test $with_gnu_ld = no; then
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
+- ;;
+- *)
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- ;;
+- esac
+- fi
+- case $host_cpu in
+- hppa*64*|ia64*)
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- ;;
+- *)
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+- # but as the default
+- # location of the library.
+- ;;
+- esac
+-
+- case $cc_basename in
+- CC*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- esac
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- #
+- # There doesn't appear to be a way to prevent this compiler from
+- # explicitly linking system object files so we need to strip them
+- # from the output so that they don't get included in the library
+- # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+- ;;
+- *)
+- if test "$GXX" = yes; then
+- if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- esac
+- fi
+- else
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+- interix[[3-9]]*)
+- _LT_TAGVAR(hardcode_direct, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+- irix5* | irix6*)
+- case $cc_basename in
+- CC*)
+- # SGI C++
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+-
+- # Archives containing C++ object files must be created using
+- # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+- # necessary to make sure instantiated templates are included
+- # in the archive.
+- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+- ;;
+- *)
+- if test "$GXX" = yes; then
+- if test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+- fi
+- fi
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- ;;
+- esac
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+- _LT_TAGVAR(inherit_rpath, $1)=yes
+- ;;
+-
+- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+- case $cc_basename in
+- KCC*)
+- # Kuck and Associates, Inc. (KAI) C++ Compiler
+-
+- # KCC will only create a shared library if the output file
+- # ends with ".so" (or ".sl" for HP-UX), so rename the library
+- # to its proper name (with version) after linking.
+- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- #
+- # There doesn't appear to be a way to prevent this compiler from
+- # explicitly linking system object files so we need to strip them
+- # from the output so that they don't get included in the library
+- # dependencies.
+- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+-
+- # Archives containing C++ object files must be created using
+- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+- ;;
+- icpc* | ecpc* )
+- # Intel C++
+- with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+- ;;
+- pgCC* | pgcpp*)
+- # Portland Group C++ compiler
+- case `$CC -V` in
+- *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+- rm -rf $tpldir~
+- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+- rm -rf $tpldir~
+- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+- $RANLIB $oldlib'
+- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+- rm -rf $tpldir~
+- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+- rm -rf $tpldir~
+- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+- ;;
+- *) # Version 6 will use weak symbols
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+- ;;
+- esac
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
+- # Compaq C++
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+-
+- runpath_var=LD_RUN_PATH
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- #
+- # There doesn't appear to be a way to prevent this compiler from
+- # explicitly linking system object files so we need to strip them
+- # from the output so that they don't get included in the library
+- # dependencies.
+- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+- ;;
+- xl*)
+- # IBM XL 8.0 on PPC, with GNU ld
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- if test "x$supports_anon_versioning" = xyes; then
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- ;;
+- *)
+- case `$CC -V 2>&1 | sed 5q` in
+- *Sun\ C*)
+- # Sun C++ 5.9
+- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+- _LT_TAGVAR(compiler_needs_object, $1)=yes
+-
+- # Not sure whether something based on
+- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+- # would be better.
+- output_verbose_link_cmd='echo'
+-
+- # Archives containing C++ object files must be created using
+- # "CC -xar", where "CC" is the Sun C++ compiler. This is
+- # necessary to make sure instantiated templates are included
+- # in the archive.
+- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+- ;;
+- esac
+- ;;
+- esac
+- ;;
+-
+- lynxos*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- m88k*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- mvs*)
+- case $cc_basename in
+- cxx*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- *)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+- ;;
+-
+- netbsd*)
+- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+- wlarc=
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- fi
+- # Workaround some broken pre-1.5 toolchains
+- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+- ;;
+-
+- *nto* | *qnx*)
+- _LT_TAGVAR(ld_shlibs, $1)=yes
+- ;;
+-
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- openbsd*)
+- if test -f /usr/libexec/ld.so; then
+- _LT_TAGVAR(hardcode_direct, $1)=yes
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd=echo
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- osf3* | osf4* | osf5*)
+- case $cc_basename in
+- KCC*)
+- # Kuck and Associates, Inc. (KAI) C++ Compiler
+-
+- # KCC will only create a shared library if the output file
+- # ends with ".so" (or ".sl" for HP-UX), so rename the library
+- # to its proper name (with version) after linking.
+- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- # Archives containing C++ object files must be created using
+- # the KAI C++ compiler.
+- case $host in
+- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+- esac
+- ;;
+- RCC*)
+- # Rational C++ 2.4.1
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- cxx*)
+- case $host in
+- osf3*)
+- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- ;;
+- *)
+- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+- echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+- $RM $lib.exp'
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+- ;;
+- esac
+-
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- #
+- # There doesn't appear to be a way to prevent this compiler from
+- # explicitly linking system object files so we need to strip them
+- # from the output so that they don't get included in the library
+- # dependencies.
+- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+- ;;
+- *)
+- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- case $host in
+- osf3*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- ;;
+- esac
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+-
+- else
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+- psos*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- sunos4*)
+- case $cc_basename in
+- CC*)
+- # Sun C++ 4.x
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- lcc*)
+- # Lucid
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- *)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+- ;;
+-
+- solaris*)
+- case $cc_basename in
+- CC*)
+- # Sun C++ 4.2, 5.x and Centerline C++
+- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- case $host_os in
+- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+- *)
+- # The compiler driver will combine and reorder linker options,
+- # but understands `-z linker_flag'.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+- ;;
+- esac
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+-
+- output_verbose_link_cmd='echo'
+-
+- # Archives containing C++ object files must be created using
+- # "CC -xar", where "CC" is the Sun C++ compiler. This is
+- # necessary to make sure instantiated templates are included
+- # in the archive.
+- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+- ;;
+- gcx*)
+- # Green Hills C++ Compiler
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+-
+- # The C++ compiler must be used to create the archive.
+- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+- ;;
+- *)
+- # GNU C++ compiler with Solaris linker
+- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+- if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+-
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+- else
+- # g++ 2.7 appears to require `-G' NOT `-shared' on this
+- # platform.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+-
+- # Commands to make compiler produce verbose output that lists
+- # what "hidden" libraries, object files and flags are used when
+- # linking a shared library.
+- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+- fi
+-
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+- case $host_os in
+- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+- *)
+- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- ;;
+-
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+-
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+-
+- tandem*)
+- case $cc_basename in
+- NCC*)
+- # NonStop-UX NCC 3.20
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- *)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+- ;;
+-
+- vxworks*)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+-
+- *)
+- # FIXME: insert proper C++ library support
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- esac
+-
+- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+-
+- _LT_TAGVAR(GCC, $1)="$GXX"
+- _LT_TAGVAR(LD, $1)="$LD"
+-
+- ## CAVEAT EMPTOR:
+- ## There is no encapsulation within the following macros, do not change
+- ## the running order or otherwise move them around unless you know exactly
+- ## what you are doing...
+- _LT_SYS_HIDDEN_LIBDEPS($1)
+- _LT_COMPILER_PIC($1)
+- _LT_COMPILER_C_O($1)
+- _LT_COMPILER_FILE_LOCKS($1)
+- _LT_LINKER_SHLIBS($1)
+- _LT_SYS_DYNAMIC_LINKER($1)
+- _LT_LINKER_HARDCODE_LIBPATH($1)
+-
+- _LT_CONFIG($1)
+- fi # test -n "$compiler"
+-
+- CC=$lt_save_CC
+- LDCXX=$LD
+- LD=$lt_save_LD
+- GCC=$lt_save_GCC
+- with_gnu_ld=$lt_save_with_gnu_ld
+- lt_cv_path_LDCXX=$lt_cv_path_LD
+- lt_cv_path_LD=$lt_save_path_LD
+- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+-fi # test "$_lt_caught_CXX_error" != yes
+-
+-AC_LANG_POP
+-])# _LT_LANG_CXX_CONFIG
+-
+-
+-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+-# ---------------------------------
+-# Figure out "hidden" library dependencies from verbose
+-# compiler output when linking a shared library.
+-# Parse the compiler output and extract the necessary
+-# objects, libraries and library flags.
+-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+-# Dependencies to place before and after the object being linked:
+-_LT_TAGVAR(predep_objects, $1)=
+-_LT_TAGVAR(postdep_objects, $1)=
+-_LT_TAGVAR(predeps, $1)=
+-_LT_TAGVAR(postdeps, $1)=
+-_LT_TAGVAR(compiler_lib_search_path, $1)=
+-
+-dnl we can't use the lt_simple_compile_test_code here,
+-dnl because it contains code intended for an executable,
+-dnl not a library. It's possible we should let each
+-dnl tag define a new lt_????_link_test_code variable,
+-dnl but it's only used here...
+-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+-int a;
+-void foo (void) { a = 0; }
+-_LT_EOF
+-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+-class Foo
+-{
+-public:
+- Foo (void) { a = 0; }
+-private:
+- int a;
+-};
+-_LT_EOF
+-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+- subroutine foo
+- implicit none
+- integer*4 a
+- a=0
+- return
+- end
+-_LT_EOF
+-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+- subroutine foo
+- implicit none
+- integer a
+- a=0
+- return
+- end
+-_LT_EOF
+-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+-public class foo {
+- private int a;
+- public void bar (void) {
+- a = 0;
+- }
+-};
+-_LT_EOF
+-])
+-dnl Parse the compiler output and extract the necessary
+-dnl objects, libraries and library flags.
+-if AC_TRY_EVAL(ac_compile); then
+- # Parse the compiler output and extract the necessary
+- # objects, libraries and library flags.
+-
+- # Sentinel used to keep track of whether or not we are before
+- # the conftest object file.
+- pre_test_object_deps_done=no
+-
+- for p in `eval "$output_verbose_link_cmd"`; do
+- case $p in
+-
+- -L* | -R* | -l*)
+- # Some compilers place space between "-{L,R}" and the path.
+- # Remove the space.
+- if test $p = "-L" ||
+- test $p = "-R"; then
+- prev=$p
+- continue
+- else
+- prev=
+- fi
+-
+- if test "$pre_test_object_deps_done" = no; then
+- case $p in
+- -L* | -R*)
+- # Internal compiler library paths should come after those
+- # provided the user. The postdeps already come after the
+- # user supplied libs so there is no need to process them.
+- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+- else
+- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+- fi
+- ;;
+- # The "-l" case would never come before the object being
+- # linked, so don't bother handling this case.
+- esac
+- else
+- if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+- _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+- else
+- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+- fi
+- fi
+- ;;
+-
+- *.$objext)
+- # This assumes that the test object file only shows up
+- # once in the compiler output.
+- if test "$p" = "conftest.$objext"; then
+- pre_test_object_deps_done=yes
+- continue
+- fi
+-
+- if test "$pre_test_object_deps_done" = no; then
+- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+- _LT_TAGVAR(predep_objects, $1)="$p"
+- else
+- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+- fi
+- else
+- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+- _LT_TAGVAR(postdep_objects, $1)="$p"
+- else
+- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+- fi
+- fi
+- ;;
+-
+- *) ;; # Ignore the rest.
+-
+- esac
+- done
+-
+- # Clean up.
+- rm -f a.out a.exe
+-else
+- echo "libtool.m4: error: problem compiling $1 test program"
+-fi
+-
+-$RM -f confest.$objext
+-
+-# PORTME: override above test on systems where it is broken
+-m4_if([$1], [CXX],
+-[case $host_os in
+-interix[[3-9]]*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- _LT_TAGVAR(predep_objects,$1)=
+- _LT_TAGVAR(postdep_objects,$1)=
+- _LT_TAGVAR(postdeps,$1)=
+- ;;
+-
+-linux*)
+- case `$CC -V 2>&1 | sed 5q` in
+- *Sun\ C*)
+- # Sun C++ 5.9
+-
+- # The more standards-conforming stlport4 library is
+- # incompatible with the Cstd library. Avoid specifying
+- # it if it's in CXXFLAGS. Ignore libCrun as
+- # -library=stlport4 depends on it.
+- case " $CXX $CXXFLAGS " in
+- *" -library=stlport4 "*)
+- solaris_use_stlport4=yes
+- ;;
+- esac
+-
+- if test "$solaris_use_stlport4" != yes; then
+- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+- fi
+- ;;
+- esac
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # The more standards-conforming stlport4 library is
+- # incompatible with the Cstd library. Avoid specifying
+- # it if it's in CXXFLAGS. Ignore libCrun as
+- # -library=stlport4 depends on it.
+- case " $CXX $CXXFLAGS " in
+- *" -library=stlport4 "*)
+- solaris_use_stlport4=yes
+- ;;
+- esac
+-
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- if test "$solaris_use_stlport4" != yes; then
+- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+- fi
+- ;;
+- esac
+- ;;
+-esac
+-])
+-
+-case " $_LT_TAGVAR(postdeps, $1) " in
+-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+-esac
+- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+-fi
+-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+- [The directories searched by this compiler when creating a shared library])
+-_LT_TAGDECL([], [predep_objects], [1],
+- [Dependencies to place before and after the objects being linked to
+- create a shared library])
+-_LT_TAGDECL([], [postdep_objects], [1])
+-_LT_TAGDECL([], [predeps], [1])
+-_LT_TAGDECL([], [postdeps], [1])
+-_LT_TAGDECL([], [compiler_lib_search_path], [1],
+- [The library search path used internally by the compiler when linking
+- a shared library])
+-])# _LT_SYS_HIDDEN_LIBDEPS
+-
+-
+-# _LT_PROG_F77
+-# ------------
+-# Since AC_PROG_F77 is broken, in that it returns the empty string
+-# if there is no fortran compiler, we have our own version here.
+-m4_defun([_LT_PROG_F77],
+-[
+-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+-AC_PROG_F77
+-if test -z "$F77" || test "X$F77" = "Xno"; then
+- _lt_disable_F77=yes
+-fi
+-popdef([AC_MSG_ERROR])
+-])# _LT_PROG_F77
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([_LT_PROG_F77], [])
+-
+-
+-# _LT_LANG_F77_CONFIG([TAG])
+-# --------------------------
+-# Ensure that the configuration variables for a Fortran 77 compiler are
+-# suitably defined. These variables are subsequently used by _LT_CONFIG
+-# to write the compiler configuration to `libtool'.
+-m4_defun([_LT_LANG_F77_CONFIG],
+-[AC_REQUIRE([_LT_PROG_F77])dnl
+-AC_LANG_PUSH(Fortran 77)
+-
+-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+-_LT_TAGVAR(allow_undefined_flag, $1)=
+-_LT_TAGVAR(always_export_symbols, $1)=no
+-_LT_TAGVAR(archive_expsym_cmds, $1)=
+-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+-_LT_TAGVAR(hardcode_direct, $1)=no
+-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+-_LT_TAGVAR(hardcode_libdir_separator, $1)=
+-_LT_TAGVAR(hardcode_minus_L, $1)=no
+-_LT_TAGVAR(hardcode_automatic, $1)=no
+-_LT_TAGVAR(inherit_rpath, $1)=no
+-_LT_TAGVAR(module_cmds, $1)=
+-_LT_TAGVAR(module_expsym_cmds, $1)=
+-_LT_TAGVAR(link_all_deplibs, $1)=unknown
+-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-_LT_TAGVAR(no_undefined_flag, $1)=
+-_LT_TAGVAR(whole_archive_flag_spec, $1)=
+-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+-
+-# Source file extension for f77 test sources.
+-ac_ext=f
+-
+-# Object file extension for compiled f77 test sources.
+-objext=o
+-_LT_TAGVAR(objext, $1)=$objext
+-
+-# No sense in running all these tests if we already determined that
+-# the F77 compiler isn't working. Some variables (like enable_shared)
+-# are currently assumed to apply to all compilers on this platform,
+-# and will be corrupted by setting them based on a non-working compiler.
+-if test "$_lt_disable_F77" != yes; then
+- # Code to be used in simple compile tests
+- lt_simple_compile_test_code="\
+- subroutine t
+- return
+- end
+-"
+-
+- # Code to be used in simple link tests
+- lt_simple_link_test_code="\
+- program t
+- end
+-"
+-
+- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+- _LT_TAG_COMPILER
+-
+- # save warnings/boilerplate of simple test code
+- _LT_COMPILER_BOILERPLATE
+- _LT_LINKER_BOILERPLATE
+-
+- # Allow CC to be a program name with arguments.
+- lt_save_CC="$CC"
+- lt_save_GCC=$GCC
+- CC=${F77-"f77"}
+- compiler=$CC
+- _LT_TAGVAR(compiler, $1)=$CC
+- _LT_CC_BASENAME([$compiler])
+- GCC=$G77
+- if test -n "$compiler"; then
+- AC_MSG_CHECKING([if libtool supports shared libraries])
+- AC_MSG_RESULT([$can_build_shared])
+-
+- AC_MSG_CHECKING([whether to build shared libraries])
+- test "$can_build_shared" = "no" && enable_shared=no
+-
+- # On AIX, shared libraries and static libraries use the same namespace, and
+- # are all built from PIC.
+- case $host_os in
+- aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+- aix[[4-9]]*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
+- ;;
+- esac
+- AC_MSG_RESULT([$enable_shared])
+-
+- AC_MSG_CHECKING([whether to build static libraries])
+- # Make sure either enable_shared or enable_static is yes.
+- test "$enable_shared" = yes || enable_static=yes
+- AC_MSG_RESULT([$enable_static])
+-
+- _LT_TAGVAR(GCC, $1)="$G77"
+- _LT_TAGVAR(LD, $1)="$LD"
+-
+- ## CAVEAT EMPTOR:
+- ## There is no encapsulation within the following macros, do not change
+- ## the running order or otherwise move them around unless you know exactly
+- ## what you are doing...
+- _LT_COMPILER_PIC($1)
+- _LT_COMPILER_C_O($1)
+- _LT_COMPILER_FILE_LOCKS($1)
+- _LT_LINKER_SHLIBS($1)
+- _LT_SYS_DYNAMIC_LINKER($1)
+- _LT_LINKER_HARDCODE_LIBPATH($1)
+-
+- _LT_CONFIG($1)
+- fi # test -n "$compiler"
+-
+- GCC=$lt_save_GCC
+- CC="$lt_save_CC"
+-fi # test "$_lt_disable_F77" != yes
+-
+-AC_LANG_POP
+-])# _LT_LANG_F77_CONFIG
+-
+-
+-# _LT_PROG_FC
+-# -----------
+-# Since AC_PROG_FC is broken, in that it returns the empty string
+-# if there is no fortran compiler, we have our own version here.
+-m4_defun([_LT_PROG_FC],
+-[
+-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+-AC_PROG_FC
+-if test -z "$FC" || test "X$FC" = "Xno"; then
+- _lt_disable_FC=yes
+-fi
+-popdef([AC_MSG_ERROR])
+-])# _LT_PROG_FC
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([_LT_PROG_FC], [])
+-
+-
+-# _LT_LANG_FC_CONFIG([TAG])
+-# -------------------------
+-# Ensure that the configuration variables for a Fortran compiler are
+-# suitably defined. These variables are subsequently used by _LT_CONFIG
+-# to write the compiler configuration to `libtool'.
+-m4_defun([_LT_LANG_FC_CONFIG],
+-[AC_REQUIRE([_LT_PROG_FC])dnl
+-AC_LANG_PUSH(Fortran)
+-
+-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+-_LT_TAGVAR(allow_undefined_flag, $1)=
+-_LT_TAGVAR(always_export_symbols, $1)=no
+-_LT_TAGVAR(archive_expsym_cmds, $1)=
+-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+-_LT_TAGVAR(hardcode_direct, $1)=no
+-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+-_LT_TAGVAR(hardcode_libdir_separator, $1)=
+-_LT_TAGVAR(hardcode_minus_L, $1)=no
+-_LT_TAGVAR(hardcode_automatic, $1)=no
+-_LT_TAGVAR(inherit_rpath, $1)=no
+-_LT_TAGVAR(module_cmds, $1)=
+-_LT_TAGVAR(module_expsym_cmds, $1)=
+-_LT_TAGVAR(link_all_deplibs, $1)=unknown
+-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-_LT_TAGVAR(no_undefined_flag, $1)=
+-_LT_TAGVAR(whole_archive_flag_spec, $1)=
+-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+-
+-# Source file extension for fc test sources.
+-ac_ext=${ac_fc_srcext-f}
+-
+-# Object file extension for compiled fc test sources.
+-objext=o
+-_LT_TAGVAR(objext, $1)=$objext
+-
+-# No sense in running all these tests if we already determined that
+-# the FC compiler isn't working. Some variables (like enable_shared)
+-# are currently assumed to apply to all compilers on this platform,
+-# and will be corrupted by setting them based on a non-working compiler.
+-if test "$_lt_disable_FC" != yes; then
+- # Code to be used in simple compile tests
+- lt_simple_compile_test_code="\
+- subroutine t
+- return
+- end
+-"
+-
+- # Code to be used in simple link tests
+- lt_simple_link_test_code="\
+- program t
+- end
+-"
+-
+- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+- _LT_TAG_COMPILER
+-
+- # save warnings/boilerplate of simple test code
+- _LT_COMPILER_BOILERPLATE
+- _LT_LINKER_BOILERPLATE
+-
+- # Allow CC to be a program name with arguments.
+- lt_save_CC="$CC"
+- lt_save_GCC=$GCC
+- CC=${FC-"f95"}
+- compiler=$CC
+- GCC=$ac_cv_fc_compiler_gnu
+-
+- _LT_TAGVAR(compiler, $1)=$CC
+- _LT_CC_BASENAME([$compiler])
+-
+- if test -n "$compiler"; then
+- AC_MSG_CHECKING([if libtool supports shared libraries])
+- AC_MSG_RESULT([$can_build_shared])
+-
+- AC_MSG_CHECKING([whether to build shared libraries])
+- test "$can_build_shared" = "no" && enable_shared=no
+-
+- # On AIX, shared libraries and static libraries use the same namespace, and
+- # are all built from PIC.
+- case $host_os in
+- aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+- aix[[4-9]]*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
+- ;;
+- esac
+- AC_MSG_RESULT([$enable_shared])
+-
+- AC_MSG_CHECKING([whether to build static libraries])
+- # Make sure either enable_shared or enable_static is yes.
+- test "$enable_shared" = yes || enable_static=yes
+- AC_MSG_RESULT([$enable_static])
+-
+- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+- _LT_TAGVAR(LD, $1)="$LD"
+-
+- ## CAVEAT EMPTOR:
+- ## There is no encapsulation within the following macros, do not change
+- ## the running order or otherwise move them around unless you know exactly
+- ## what you are doing...
+- _LT_SYS_HIDDEN_LIBDEPS($1)
+- _LT_COMPILER_PIC($1)
+- _LT_COMPILER_C_O($1)
+- _LT_COMPILER_FILE_LOCKS($1)
+- _LT_LINKER_SHLIBS($1)
+- _LT_SYS_DYNAMIC_LINKER($1)
+- _LT_LINKER_HARDCODE_LIBPATH($1)
+-
+- _LT_CONFIG($1)
+- fi # test -n "$compiler"
+-
+- GCC=$lt_save_GCC
+- CC="$lt_save_CC"
+-fi # test "$_lt_disable_FC" != yes
+-
+-AC_LANG_POP
+-])# _LT_LANG_FC_CONFIG
+-
+-
+-# _LT_LANG_GCJ_CONFIG([TAG])
+-# --------------------------
+-# Ensure that the configuration variables for the GNU Java Compiler compiler
+-# are suitably defined. These variables are subsequently used by _LT_CONFIG
+-# to write the compiler configuration to `libtool'.
+-m4_defun([_LT_LANG_GCJ_CONFIG],
+-[AC_REQUIRE([LT_PROG_GCJ])dnl
+-AC_LANG_SAVE
+-
+-# Source file extension for Java test sources.
+-ac_ext=java
+-
+-# Object file extension for compiled Java test sources.
+-objext=o
+-_LT_TAGVAR(objext, $1)=$objext
+-
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code="class foo {}"
+-
+-# Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+-
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+-_LT_TAG_COMPILER
+-
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-lt_save_GCC=$GCC
+-GCC=yes
+-CC=${GCJ-"gcj"}
+-compiler=$CC
+-_LT_TAGVAR(compiler, $1)=$CC
+-_LT_TAGVAR(LD, $1)="$LD"
+-_LT_CC_BASENAME([$compiler])
+-
+-# GCJ did not exist at the time GCC didn't implicitly link libc in.
+-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+-
+-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-
+-if test -n "$compiler"; then
+- _LT_COMPILER_NO_RTTI($1)
+- _LT_COMPILER_PIC($1)
+- _LT_COMPILER_C_O($1)
+- _LT_COMPILER_FILE_LOCKS($1)
+- _LT_LINKER_SHLIBS($1)
+- _LT_LINKER_HARDCODE_LIBPATH($1)
+-
+- _LT_CONFIG($1)
+-fi
+-
+-AC_LANG_RESTORE
+-
+-GCC=$lt_save_GCC
+-CC="$lt_save_CC"
+-])# _LT_LANG_GCJ_CONFIG
+-
+-
+-# _LT_LANG_RC_CONFIG([TAG])
+-# -------------------------
+-# Ensure that the configuration variables for the Windows resource compiler
+-# are suitably defined. These variables are subsequently used by _LT_CONFIG
+-# to write the compiler configuration to `libtool'.
+-m4_defun([_LT_LANG_RC_CONFIG],
+-[AC_REQUIRE([LT_PROG_RC])dnl
+-AC_LANG_SAVE
+-
+-# Source file extension for RC test sources.
+-ac_ext=rc
+-
+-# Object file extension for compiled RC test sources.
+-objext=o
+-_LT_TAGVAR(objext, $1)=$objext
+-
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+-
+-# Code to be used in simple link tests
+-lt_simple_link_test_code="$lt_simple_compile_test_code"
+-
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+-_LT_TAG_COMPILER
+-
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-lt_save_GCC=$GCC
+-GCC=
+-CC=${RC-"windres"}
+-compiler=$CC
+-_LT_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+-
+-if test -n "$compiler"; then
+- :
+- _LT_CONFIG($1)
+-fi
+-
+-GCC=$lt_save_GCC
+-AC_LANG_RESTORE
+-CC="$lt_save_CC"
+-])# _LT_LANG_RC_CONFIG
+-
+-
+-# LT_PROG_GCJ
+-# -----------
+-AC_DEFUN([LT_PROG_GCJ],
+-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+- [AC_CHECK_TOOL(GCJ, gcj,)
+- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+- AC_SUBST(GCJFLAGS)])])[]dnl
+-])
+-
+-# Old name:
+-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+-
+-
+-# LT_PROG_RC
+-# ----------
+-AC_DEFUN([LT_PROG_RC],
+-[AC_CHECK_TOOL(RC, windres,)
+-])
+-
+-# Old name:
+-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([LT_AC_PROG_RC], [])
+-
+-
+-# _LT_DECL_EGREP
+-# --------------
+-# If we don't have a new enough Autoconf to choose the best grep
+-# available, choose the one first in the user's PATH.
+-m4_defun([_LT_DECL_EGREP],
+-[AC_REQUIRE([AC_PROG_EGREP])dnl
+-AC_REQUIRE([AC_PROG_FGREP])dnl
+-test -z "$GREP" && GREP=grep
+-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+-_LT_DECL([], [EGREP], [1], [An ERE matcher])
+-_LT_DECL([], [FGREP], [1], [A literal string matcher])
+-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+-AC_SUBST([GREP])
+-])
+-
+-
+-# _LT_DECL_OBJDUMP
+-# --------------
+-# If we don't have a new enough Autoconf to choose the best objdump
+-# available, choose the one first in the user's PATH.
+-m4_defun([_LT_DECL_OBJDUMP],
+-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+-test -z "$OBJDUMP" && OBJDUMP=objdump
+-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+-AC_SUBST([OBJDUMP])
+-])
+-
+-
+-# _LT_DECL_SED
+-# ------------
+-# Check for a fully-functional sed program, that truncates
+-# as few characters as possible. Prefer GNU sed if found.
+-m4_defun([_LT_DECL_SED],
+-[AC_PROG_SED
+-test -z "$SED" && SED=sed
+-Xsed="$SED -e 1s/^X//"
+-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+- [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+-])# _LT_DECL_SED
+-
+-m4_ifndef([AC_PROG_SED], [
+-# NOTE: This macro has been submitted for inclusion into #
+-# GNU Autoconf as AC_PROG_SED. When it is available in #
+-# a released version of Autoconf we should remove this #
+-# macro and use it instead. #
+-
+-m4_defun([AC_PROG_SED],
+-[AC_MSG_CHECKING([for a sed that does not truncate output])
+-AC_CACHE_VAL(lt_cv_path_SED,
+-[# Loop through the user's path and test for sed and gsed.
+-# Then use that list of sed's as ones to test for truncation.
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for lt_ac_prog in sed gsed; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+- fi
+- done
+- done
+-done
+-IFS=$as_save_IFS
+-lt_ac_max=0
+-lt_ac_count=0
+-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+-# along with /bin/sed that truncates output.
+-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
+- cat /dev/null > conftest.in
+- lt_ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+- # Check for GNU sed and select it if it is found.
+- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+- lt_cv_path_SED=$lt_ac_sed
+- break
+- fi
+- while true; do
+- cat conftest.in conftest.in >conftest.tmp
+- mv conftest.tmp conftest.in
+- cp conftest.in conftest.nl
+- echo >>conftest.nl
+- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+- cmp -s conftest.out conftest.nl || break
+- # 10000 chars as input seems more than enough
+- test $lt_ac_count -gt 10 && break
+- lt_ac_count=`expr $lt_ac_count + 1`
+- if test $lt_ac_count -gt $lt_ac_max; then
+- lt_ac_max=$lt_ac_count
+- lt_cv_path_SED=$lt_ac_sed
+- fi
+- done
+-done
+-])
+-SED=$lt_cv_path_SED
+-AC_SUBST([SED])
+-AC_MSG_RESULT([$SED])
+-])#AC_PROG_SED
+-])#m4_ifndef
+-
+-# Old name:
+-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([LT_AC_PROG_SED], [])
+-
+-
+-# _LT_CHECK_SHELL_FEATURES
+-# ------------------------
+-# Find out whether the shell is Bourne or XSI compatible,
+-# or has some other useful features.
+-m4_defun([_LT_CHECK_SHELL_FEATURES],
+-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+-# Try some XSI features
+-xsi_shell=no
+-( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
+- && eval 'test $(( 1 + 1 )) -eq 2 \
+- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+- && xsi_shell=yes
+-AC_MSG_RESULT([$xsi_shell])
+-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+-
+-AC_MSG_CHECKING([whether the shell understands "+="])
+-lt_shell_append=no
+-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+- >/dev/null 2>&1 \
+- && lt_shell_append=yes
+-AC_MSG_RESULT([$lt_shell_append])
+-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+-
+-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+- lt_unset=unset
+-else
+- lt_unset=false
+-fi
+-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+-
+-# test EBCDIC or ASCII
+-case `echo X|tr X '\101'` in
+- A) # ASCII based system
+- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+- lt_SP2NL='tr \040 \012'
+- lt_NL2SP='tr \015\012 \040\040'
+- ;;
+- *) # EBCDIC based system
+- lt_SP2NL='tr \100 \n'
+- lt_NL2SP='tr \r\n \100\100'
+- ;;
+-esac
+-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+-])# _LT_CHECK_SHELL_FEATURES
+-
+-
+-# _LT_PROG_XSI_SHELLFNS
+-# ---------------------
+-# Bourne and XSI compatible variants of some useful shell functions.
+-m4_defun([_LT_PROG_XSI_SHELLFNS],
+-[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 "X${1}" | $Xsed -e "$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 "X${1}" | $Xsed -e "$basename"`
+-}
+-
+-dnl func_dirname_and_basename
+-dnl A portable version of this function is already defined in general.m4sh
+-dnl so there is no need for it here.
+-
+-# 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 "X${3}" \
+- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "X${3}" \
+- | $Xsed -e "s%^${1}%%" -e "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 "X${1}" | $Xsed -e "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "X${1}" | $Xsed -e '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
+-])
+-
+-# Helper functions for option handling. -*- Autoconf -*-
+-#
+-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+-# Written by Gary V. Vaughan, 2004
+-#
+-# This file is free software; the Free Software Foundation gives
+-# unlimited permission to copy and/or distribute it, with or without
+-# modifications, as long as this notice is preserved.
+-
+-# serial 6 ltoptions.m4
+-
+-# This is to help aclocal find these macros, as it can't see m4_define.
+-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+-
+-
+-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+-# ------------------------------------------
+-m4_define([_LT_MANGLE_OPTION],
+-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+-
+-
+-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+-# ---------------------------------------
+-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+-# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+-# saved as a flag.
+-m4_define([_LT_SET_OPTION],
+-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+- _LT_MANGLE_DEFUN([$1], [$2]),
+- [m4_warning([Unknown $1 option `$2'])])[]dnl
+-])
+-
+-
+-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+-# ------------------------------------------------------------
+-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+-m4_define([_LT_IF_OPTION],
+-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+-
+-
+-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+-# -------------------------------------------------------
+-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+-# are set.
+-m4_define([_LT_UNLESS_OPTIONS],
+-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+- [m4_define([$0_found])])])[]dnl
+-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+-])[]dnl
+-])
+-
+-
+-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+-# ----------------------------------------
+-# OPTION-LIST is a space-separated list of Libtool options associated
+-# with MACRO-NAME. If any OPTION has a matching handler declared with
+-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+-# the unknown option and exit.
+-m4_defun([_LT_SET_OPTIONS],
+-[# Set options
+-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+- [_LT_SET_OPTION([$1], _LT_Option)])
+-
+-m4_if([$1],[LT_INIT],[
+- dnl
+- dnl Simply set some default values (i.e off) if boolean options were not
+- dnl specified:
+- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+- ])
+- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+- ])
+- dnl
+- dnl If no reference was made to various pairs of opposing options, then
+- dnl we run the default mode handler for the pair. For example, if neither
+- dnl `shared' nor `disable-shared' was passed, we enable building of shared
+- dnl archives by default:
+- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+- [_LT_ENABLE_FAST_INSTALL])
+- ])
+-])# _LT_SET_OPTIONS
+-
+-
+-
+-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+-# -----------------------------------------
+-m4_define([_LT_MANGLE_DEFUN],
+-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+-
+-
+-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+-# -----------------------------------------------
+-m4_define([LT_OPTION_DEFINE],
+-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+-])# LT_OPTION_DEFINE
+-
+-
+-# dlopen
+-# ------
+-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+-])
+-
+-AU_DEFUN([AC_LIBTOOL_DLOPEN],
+-[_LT_SET_OPTION([LT_INIT], [dlopen])
+-AC_DIAGNOSE([obsolete],
+-[$0: Remove this warning and the call to _LT_SET_OPTION when you
+-put the `dlopen' option into LT_INIT's first parameter.])
+-])
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+-
+-
+-# win32-dll
+-# ---------
+-# Declare package support for building win32 dll's.
+-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+-[enable_win32_dll=yes
+-
+-case $host in
+-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+- AC_CHECK_TOOL(AS, as, false)
+- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+- AC_CHECK_TOOL(OBJDUMP, objdump, false)
+- ;;
+-esac
+-
+-test -z "$AS" && AS=as
+-_LT_DECL([], [AS], [0], [Assembler program])dnl
+-
+-test -z "$DLLTOOL" && DLLTOOL=dlltool
+-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+-
+-test -z "$OBJDUMP" && OBJDUMP=objdump
+-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+-])# win32-dll
+-
+-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-_LT_SET_OPTION([LT_INIT], [win32-dll])
+-AC_DIAGNOSE([obsolete],
+-[$0: Remove this warning and the call to _LT_SET_OPTION when you
+-put the `win32-dll' option into LT_INIT's first parameter.])
+-])
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+-
+-
+-# _LT_ENABLE_SHARED([DEFAULT])
+-# ----------------------------
+-# implement the --enable-shared flag, and supports the `shared' and
+-# `disable-shared' LT_INIT options.
+-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+-m4_define([_LT_ENABLE_SHARED],
+-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+-AC_ARG_ENABLE([shared],
+- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+- [p=${PACKAGE-default}
+- case $enableval in
+- yes) enable_shared=yes ;;
+- no) enable_shared=no ;;
+- *)
+- enable_shared=no
+- # Look at the argument we got. We use all the common list separators.
+- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+- for pkg in $enableval; do
+- IFS="$lt_save_ifs"
+- if test "X$pkg" = "X$p"; then
+- enable_shared=yes
+- fi
+- done
+- IFS="$lt_save_ifs"
+- ;;
+- esac],
+- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+-
+- _LT_DECL([build_libtool_libs], [enable_shared], [0],
+- [Whether or not to build shared libraries])
+-])# _LT_ENABLE_SHARED
+-
+-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+-
+-# Old names:
+-AC_DEFUN([AC_ENABLE_SHARED],
+-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+-])
+-
+-AC_DEFUN([AC_DISABLE_SHARED],
+-[_LT_SET_OPTION([LT_INIT], [disable-shared])
+-])
+-
+-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+-
+-
+-
+-# _LT_ENABLE_STATIC([DEFAULT])
+-# ----------------------------
+-# implement the --enable-static flag, and support the `static' and
+-# `disable-static' LT_INIT options.
+-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+-m4_define([_LT_ENABLE_STATIC],
+-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+-AC_ARG_ENABLE([static],
+- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+- [p=${PACKAGE-default}
+- case $enableval in
+- yes) enable_static=yes ;;
+- no) enable_static=no ;;
+- *)
+- enable_static=no
+- # Look at the argument we got. We use all the common list separators.
+- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+- for pkg in $enableval; do
+- IFS="$lt_save_ifs"
+- if test "X$pkg" = "X$p"; then
+- enable_static=yes
+- fi
+- done
+- IFS="$lt_save_ifs"
+- ;;
+- esac],
+- [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+-
+- _LT_DECL([build_old_libs], [enable_static], [0],
+- [Whether or not to build static libraries])
+-])# _LT_ENABLE_STATIC
+-
+-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+-
+-# Old names:
+-AC_DEFUN([AC_ENABLE_STATIC],
+-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+-])
+-
+-AC_DEFUN([AC_DISABLE_STATIC],
+-[_LT_SET_OPTION([LT_INIT], [disable-static])
+-])
+-
+-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+-
+-
+-
+-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+-# ----------------------------------
+-# implement the --enable-fast-install flag, and support the `fast-install'
+-# and `disable-fast-install' LT_INIT options.
+-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+-m4_define([_LT_ENABLE_FAST_INSTALL],
+-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+-AC_ARG_ENABLE([fast-install],
+- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+- [p=${PACKAGE-default}
+- case $enableval in
+- yes) enable_fast_install=yes ;;
+- no) enable_fast_install=no ;;
+- *)
+- enable_fast_install=no
+- # Look at the argument we got. We use all the common list separators.
+- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+- for pkg in $enableval; do
+- IFS="$lt_save_ifs"
+- if test "X$pkg" = "X$p"; then
+- enable_fast_install=yes
+- fi
+- done
+- IFS="$lt_save_ifs"
+- ;;
+- esac],
+- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+-
+-_LT_DECL([fast_install], [enable_fast_install], [0],
+- [Whether or not to optimize for fast installation])dnl
+-])# _LT_ENABLE_FAST_INSTALL
+-
+-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+-
+-# Old names:
+-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+-AC_DIAGNOSE([obsolete],
+-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+-the `fast-install' option into LT_INIT's first parameter.])
+-])
+-
+-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+-AC_DIAGNOSE([obsolete],
+-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+-the `disable-fast-install' option into LT_INIT's first parameter.])
+-])
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+-
+-
+-# _LT_WITH_PIC([MODE])
+-# --------------------
+-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+-# LT_INIT options.
+-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+-m4_define([_LT_WITH_PIC],
+-[AC_ARG_WITH([pic],
+- [AS_HELP_STRING([--with-pic],
+- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+- [pic_mode="$withval"],
+- [pic_mode=default])
+-
+-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+-
+-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+-])# _LT_WITH_PIC
+-
+-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+-
+-# Old name:
+-AU_DEFUN([AC_LIBTOOL_PICMODE],
+-[_LT_SET_OPTION([LT_INIT], [pic-only])
+-AC_DIAGNOSE([obsolete],
+-[$0: Remove this warning and the call to _LT_SET_OPTION when you
+-put the `pic-only' option into LT_INIT's first parameter.])
+-])
+-
+-dnl aclocal-1.4 backwards compatibility:
+-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+-
+-
+-m4_define([_LTDL_MODE], [])
+-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+- [m4_define([_LTDL_MODE], [nonrecursive])])
+-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+- [m4_define([_LTDL_MODE], [recursive])])
+-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+- [m4_define([_LTDL_MODE], [subproject])])
+-
+-m4_define([_LTDL_TYPE], [])
+-LT_OPTION_DEFINE([LTDL_INIT], [installable],
+- [m4_define([_LTDL_TYPE], [installable])])
+-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+- [m4_define([_LTDL_TYPE], [convenience])])
+-
+-# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+-#
+-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+-# Written by Gary V. Vaughan, 2004
+-#
+-# This file is free software; the Free Software Foundation gives
+-# unlimited permission to copy and/or distribute it, with or without
+-# modifications, as long as this notice is preserved.
+-
+-# serial 6 ltsugar.m4
+-
+-# This is to help aclocal find these macros, as it can't see m4_define.
+-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+-
+-
+-# lt_join(SEP, ARG1, [ARG2...])
+-# -----------------------------
+-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+-# associated separator.
+-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+-# versions in m4sugar had bugs.
+-m4_define([lt_join],
+-[m4_if([$#], [1], [],
+- [$#], [2], [[$2]],
+- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+-m4_define([_lt_join],
+-[m4_if([$#$2], [2], [],
+- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+-
+-
+-# lt_car(LIST)
+-# lt_cdr(LIST)
+-# ------------
+-# Manipulate m4 lists.
+-# These macros are necessary as long as will still need to support
+-# Autoconf-2.59 which quotes differently.
+-m4_define([lt_car], [[$1]])
+-m4_define([lt_cdr],
+-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+- [$#], 1, [],
+- [m4_dquote(m4_shift($@))])])
+-m4_define([lt_unquote], $1)
+-
+-
+-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+-# ------------------------------------------
+-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+-# Note that neither SEPARATOR nor STRING are expanded; they are appended
+-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+-# than defined and empty).
+-#
+-# This macro is needed until we can rely on Autoconf 2.62, since earlier
+-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+-m4_define([lt_append],
+-[m4_define([$1],
+- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+-
+-
+-
+-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+-# ----------------------------------------------------------
+-# Produce a SEP delimited list of all paired combinations of elements of
+-# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+-# has the form PREFIXmINFIXSUFFIXn.
+-# Needed until we can rely on m4_combine added in Autoconf 2.62.
+-m4_define([lt_combine],
+-[m4_if(m4_eval([$# > 3]), [1],
+- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+-[[m4_foreach([_Lt_prefix], [$2],
+- [m4_foreach([_Lt_suffix],
+- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+-
+-
+-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+-# -----------------------------------------------------------------------
+-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+-m4_define([lt_if_append_uniq],
+-[m4_ifdef([$1],
+- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+- [lt_append([$1], [$2], [$3])$4],
+- [$5])],
+- [lt_append([$1], [$2], [$3])$4])])
+-
+-
+-# lt_dict_add(DICT, KEY, VALUE)
+-# -----------------------------
+-m4_define([lt_dict_add],
+-[m4_define([$1($2)], [$3])])
+-
+-
+-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+-# --------------------------------------------
+-m4_define([lt_dict_add_subkey],
+-[m4_define([$1($2:$3)], [$4])])
+-
+-
+-# lt_dict_fetch(DICT, KEY, [SUBKEY])
+-# ----------------------------------
+-m4_define([lt_dict_fetch],
+-[m4_ifval([$3],
+- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+-
+-
+-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+-# -----------------------------------------------------------------
+-m4_define([lt_if_dict_fetch],
+-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+- [$5],
+- [$6])])
+-
+-
+-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+-# --------------------------------------------------------------
+-m4_define([lt_dict_filter],
+-[m4_if([$5], [], [],
+- [lt_join(m4_quote(m4_default([$4], [[, ]])),
+- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+-])
+-
+-# ltversion.m4 -- version numbers -*- Autoconf -*-
+-#
+-# Copyright (C) 2004 Free Software Foundation, Inc.
+-# Written by Scott James Remnant, 2004
+-#
+-# This file is free software; the Free Software Foundation gives
+-# unlimited permission to copy and/or distribute it, with or without
+-# modifications, as long as this notice is preserved.
+-
+-# Generated from ltversion.in.
+-
+-# serial 3017 ltversion.m4
+-# This file is part of GNU Libtool
+-
+-m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+-m4_define([LT_PACKAGE_REVISION], [1.3017])
+-
+-AC_DEFUN([LTVERSION_VERSION],
+-[macro_version='2.2.6b'
+-macro_revision='1.3017'
+-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+-_LT_DECL(, macro_revision, 0)
+-])
+-
+-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+-#
+-# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+-# Written by Scott James Remnant, 2004.
+-#
+-# This file is free software; the Free Software Foundation gives
+-# unlimited permission to copy and/or distribute it, with or without
+-# modifications, as long as this notice is preserved.
+-
+-# serial 4 lt~obsolete.m4
+-
+-# These exist entirely to fool aclocal when bootstrapping libtool.
+-#
+-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+-# which have later been changed to m4_define as they aren't part of the
+-# exported API, or moved to Autoconf or Automake where they belong.
+-#
+-# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+-# using a macro with the same name in our local m4/libtool.m4 it'll
+-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+-# and doesn't know about Autoconf macros at all.)
+-#
+-# So we provide this file, which has a silly filename so it's always
+-# included after everything else. This provides aclocal with the
+-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+-# because those macros already exist, or will be overwritten later.
+-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+-#
+-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+-# Yes, that means every name once taken will need to remain here until
+-# we give up compatibility with versions before 1.7, at which point
+-# we need to keep only those names which we still refer to.
+-
+-# This is to help aclocal find these macros, as it can't see m4_define.
+-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+-
+-m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+-m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+-m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+-m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+-m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+-m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+-m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+-m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+-m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+-m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+-m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+-m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+-m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+-m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+-m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+-m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+-m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+-m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+-m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+-m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+-m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+-m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+-m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+-m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+-m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+-m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+-m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+-m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
+-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+-m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+-m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+-m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+-m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+-m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+-m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+-
+ # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+@@ -9121,3 +1155,8 @@ AC_SUBST([am__untar])
+ ]) # _AM_PROG_TAR
+
+ m4_include([config/autotroll.m4])
++m4_include([config/libtool.m4])
++m4_include([config/ltoptions.m4])
++m4_include([config/ltsugar.m4])
++m4_include([config/ltversion.m4])
++m4_include([config/lt~obsolete.m4])
+--- mathgl-1.11.0.1.orig/configure
++++ mathgl-1.11.0.1/configure
+@@ -8735,6 +8735,10 @@ _lt_linker_boilerplate=`cat conftest.err
+ $RM -r conftest*
+
+
++## CAVEAT EMPTOR:
++## There is no encapsulation within the following macros, do not change
++## the running order or otherwise move them around unless you know exactly
++## what you are doing...
+ if test -n "$compiler"; then
+
+ lt_prog_compiler_no_builtin_flag=
+@@ -8760,11 +8764,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:8763: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:8767: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:8767: \$? = $ac_status" >&5
++ echo "$as_me:8771: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+@@ -9099,11 +9103,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:9102: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:9106: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:9106: \$? = $ac_status" >&5
++ echo "$as_me:9110: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+@@ -9204,11 +9208,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:9207: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:9211: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:9211: \$? = $ac_status" >&5
++ echo "$as_me:9215: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -9259,11 +9263,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:9262: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:9266: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:9266: \$? = $ac_status" >&5
++ echo "$as_me:9270: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -11643,7 +11647,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11646 "configure"
++#line 11650 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11739,7 +11743,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11742 "configure"
++#line 11746 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -13695,11 +13699,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:13698: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13702: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:13702: \$? = $ac_status" >&5
++ echo "$as_me:13706: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+@@ -13794,11 +13798,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:13797: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13801: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:13801: \$? = $ac_status" >&5
++ echo "$as_me:13805: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -13846,11 +13850,11 @@ else
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:13849: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13853: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:13853: \$? = $ac_status" >&5
++ echo "$as_me:13857: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+--- mathgl-1.11.0.1.orig/widgets/Makefile.in
++++ mathgl-1.11.0.1/widgets/Makefile.in
+@@ -62,7 +62,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(sr
+ subdir = widgets
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- /dev/null
++++ mathgl-1.11.0.1/texinfo/mgl_ru.info-1
+@@ -0,0 +1,6077 @@
++This is mgl_ru.info, produced by makeinfo version 4.13 from mgl_ru.texi.
++
++Это документация для MathGL (версии 1.11) - библиотеки классов и
++функций для построения научной графики. Пожалуйста сообщайте о любых
++ошибках в этом руководстве на <mathgl.abalakin@gmail.org>.
++
++ Copyright (C) 2009 Алексей Балакин.
++
++ Permission is granted to copy, distribute and/or modify this
++ document under the terms of the GNU Free Documentation License,
++ Version 1.2 or any later version published by the Free Software
++ Foundation; with no Invariant Sections, with the Front-Cover Texts
++ being "A GNU Manual," and with the Back-Cover Texts as in (a)
++ below. A copy of the license is included in the section entitled
++ "GNU Free Documentation License."
++
++ (a) The FSF's Back-Cover Text is: "You have the freedom to copy
++ and modify this GNU manual. Buying copies from the FSF supports
++ it in developing GNU and promoting software freedom."
++
++INFO-DIR-SECTION MathGL documentation system
++START-INFO-DIR-ENTRY
++* MathGL: (mathgl). The library for scientific graphics.
++END-INFO-DIR-ENTRY
++
++\1f
++File: mgl_ru.info, Node: Top, Next: MGL interface, Up: (dir)
++
++Язык MGL
++************
++
++Это документация для языка MGL (версии 1.11). Пожалуйста сообщайте о
++любых ошибках в этом руководстве на <mathgl.abalakin@gmail.org>.
++Дополнительную информацию о MGL и MathGL можно найти на домашней
++странице проекта `http://mathgl.sourceforge.net/'.
++
++ Copyright (C) 2010 Алексей Балакин.
++
++ Permission is granted to copy, distribute and/or modify this
++ document under the terms of the GNU Free Documentation License,
++ Version 1.2 or any later version published by the Free Software
++ Foundation; with no Invariant Sections, with the Front-Cover Texts
++ being "A GNU Manual," and with the Back-Cover Texts as in (a)
++ below. A copy of the license is included in the section entitled
++ "GNU Free Documentation License."
++
++ (a) The FSF's Back-Cover Text is: "You have the freedom to copy
++ and modify this GNU manual. Buying copies from the FSF supports
++ it in developing GNU and promoting software freedom."
++
++* Menu:
++
++* MGL interface::
++* Examples::
++* Samples::
++* Copying This Manual::
++* Index::
++
++\1f
++File: mgl_ru.info, Node: MGL interface, Next: Examples, Up: Top
++
++1 Язык MGL
++**************
++
++MathGL имеет встроенный скриптовый язык MGL для обработки и отображения
++данных. Скрипты MGL можно использовать как независимо (программами
++UDAV, mgl2png, mgl2eps, mgl2svg и пр., *note Utilities::) так и
++вызовами библиотеки.
++
++ Язык MGL достаточно простой. Каждая строка - отдельная команда.
++Первое слово - имя команды, а все остальные ее аргументы. Команда может
++иметь до 1000 аргументов (по крайней мере сейчас). Слова разделяются
++одно от другого пробелом или символом табуляции. Различий между верхним
++и нижним индексом нет, т.е. переменные A и A идентичны. Символ `#'
++начинает комментарий - все символы после него игнорируются до конца
++строки. Исключением является случай, когда `#' входит в строку. Опции
++команды указываются после символа `;' (*note Command options::). Символ
++`:' начинает новую команду (подобно переводу строки) если он расположен
++не внутри скобок или строки.
++
++ Если строка содержит ссылки на внешние параметры (`$0', `$1' ...
++`$9') или макроопределения (`$a', `$b' ... `$z'), то текущие значения
++параметров/макроопределений подставляются в строку вместо ссылки до
++выполнением команды. Это позволяет использовать один и тот же скрипт
++при различных входных параметрах командной строки или вводить
++макроопределения по ходу исполнения команд скрипта.
++
++ Аргументы команды могут быть строками, переменными или числами.
++ * Строка - произвольный набор символов между метками `''.
++
++ * Обычно переменная имеет имя, состоящее из букв и чисел (должно
++ начинаться с буквы и не быть длиннее 64 символов). В качестве
++ переменной можно использовать временные массивы, включающие в себя:
++ * срезы ("подмассивы") массивов данных (подобно команде *note
++ subdata::). Например, `a(1)' или `a(1,:)' или `a(1,:,:)' -
++ вторая строка массива A, `a(:,2)' или `a(:,2,:)' - третий
++ столбец, `a(:,:,0)' - первый срез и т.д. Также можно выделить
++ часть массива с m-го по n-ый элемент `a(m:n,:,:)' или просто
++ `a(m:n)'.
++
++ * произвольные комбинации столбцов данных (например,
++ `a('n*w^2/exp(t)')'), если столбцы данных были именованы
++ командой *note idset:: или в файле данных (в строке
++ начинающейся с `##').
++
++ * произвольное выражение из существующих переменных и констант.
++ Например, `sqrt(dat(:,5)+1)' даст временный массив данных с
++ элементами равными `tmp[i,j] = sqrt(dat[i,5,j]+1)'.
++
++ * массивы с элементами заданными в квадратных скобках [],
++ разделенные `,'. При этом внутри выражения не должно быть
++ пробелов! Например, `[1,2,3]' даст временный массив из 3
++ элементов {1, 2, 3}; `[[11,12],[21,22]]' даст матрицу 2*2 и
++ т.д. Элементами такой конструкции могут быть и массивы если
++ их размерности одинаковые, например `[v1,v2,...,vn]'.
++
++ * результат команд построения новых данных (*note Make another
++ data::), если они заключены в фигурные скобки {}. Например,
++ `{sum dat 'x'}' даст временный массив, который есть результат
++ суммирования DAT вдоль 'x'. Это такой же массив как и TMP,
++ полученный командой `sum tmp dat 'x''. При этом можно
++ использовать вложенные конструкции, например `{sum {max dat
++ 'z'} 'x'}'.
++ Временные массивы не могут стоять в качестве первого аргумента
++ команд, создающих массивы (например, `new', `read', `hist' и т.д.).
++
++ * К скалярным переменным, кроме собственно чисел, относятся:
++ специальные переменные `nan=#QNAN, pi=3.1415926..., on=1, off=0,
++ :=-1', переменные с суффиксами (*note Suffixes::), переменные
++ определенные командой *note define::. Также массивы размером 1x1x1
++ считаются скалярами (например, `pi/dat.nx').
++ Перед первым использованием все переменные должны быть определены с
++помощью команд, создающих массивы (*note new::, *note var::, *note
++list::, *note copy::, *note read::, *note hist::, *note sum:: и др.,
++*note Data create:: и *note Make another data::).
++
++ Команды могут иметь несколько наборов аргументов (например, `plot
++ydat' и `plot xdat ydat'). Все аргументы команды для выбранного набора
++должны быть указаны, однако часть из них могут иметь значения по
++умолчанию. Такие аргументы в описании команд будут помещены в
++квадратные скобки [], например `plot ydat ['stl'='' zval=nan]'. При
++этом запись `[arg1 arg2 arg3 ...]' подразумевает `[arg1 [arg2 [arg3
++...]]]', т.е. опускать можно только аргументы с конца, если вы согласны
++с их значениями по умолчанию. Например, `plot ydat '' 1' или `plot ydat
++''' правильно, а `plot ydat 1' не правильно (аргумент `'stl'' пропущен).
++
++ Все команды MGL можно разделить на несколько групп. В дальнейшем
++будет использованы следующие обозначения при описании команд: имя
++команды выделено жирным, строки заключены в одинарные кавычки ",
++переменные выделены курсивом, числа (скаляры) выделены моноширинным
++шрифтом. Необязательные аргументы будут помещены в квадратные скобки []
++и показаны их значения по умолчанию. Подробную информацию о цвете и
++стиле линий (*note Line styles::), цветовых схемах (*note Color
++scheme::), стиле текста и символах TeX (*note Font styles::), текстовых
++формулах (*note Textual formulas::) можно найти в соответствующих
++разделах.
++
++* Menu:
++
++
++* General concepts::
++* Graphics setup ::
++* Axis settings ::
++* Transformation matrix ::
++* Export to file ::
++* Primitives drawing ::
++* Text printing ::
++* Axis and Colorbar ::
++* Legend ::
++* 1D plotting ::
++* 2D plotting ::
++* 3D plotting ::
++* Dual plotting ::
++* Vector fields ::
++* Other plotting ::
++* Nonlinear fitting ::
++* Data create ::
++* Data filling ::
++* Rearrange data ::
++* File I/O ::
++* Make another data ::
++* Change data ::
++* Operators ::
++* Program flow ::
++* Command options ::
++* Suffixes::
++* Utilities::
++
++\1f
++File: mgl_ru.info, Node: General concepts, Prev: Utilities, Up: MGL interface
++
++1.1 Основные принципы
++=====================================
++
++Возможности библиотеки MathGL довольно богаты - число только основных
++типов графиков превышает 50 видов. Кроме того, есть функции для
++обработки данных, настройки вида графика и пр. и пр. Тем не менее, я
++старался придерживаться единого стиля в порядке аргументов функций и
++способе их "настройки". В основном все ниже сказанное относится к
++функциям рисования различных графиков.
++
++ Всего основных концепций (базисных идей) четыре:
++ 1. *Все настройки графиков (стиль линий, цветовые схемы поверхностей,
++ стиль и цвет текста) задаются строками.* Это обеспечивает:
++ удобство для пользователя - короткую строку легче читать и здесь
++ тяжелее ошибиться, чем в большом списке параметров; переносимость
++ - строки выглядят одинаково на всех платформах и не надо
++ заботиться о типе и числе аргументов.
++
++ 2. *Все функции имеют "упрощенный" и "продвинутый" варианты.* Сделано
++ опять из-за удобства. В "упрощенном" варианте для построения
++ графика нужны только один-два массив(а) данных, которые
++ автоматически равнораспределяются в заданном диапазоне осей
++ координат. В "продвинутой" версии можно не только указать явно
++ диапазон построения графика, но и задать его параметрически.
++ Последнее позволяет легко строить довольно сложные кривые и
++ поверхности. В обоих вариантах функций порядок аргументов
++ стандартен: сначала идут массивы данных, потом необязательный
++ строковый параметр стиля графика, а далее - второстепенные
++ необязательные параметры для более точной настройки графика.
++
++ 3. *Все элементы рисунков векторные.* Изначально библиотека MathGL
++ была ориентированна на работу с научными данными, которые по своей
++ природе векторные (линии, грани, матрицы и т.д.). Поэтому
++ векторность используется во всех рисунках! Причем иногда даже в
++ ущерб производительности (например, при выводе шрифтов). Помимо
++ всего прочего, векторность позволяет легко масштабировать рисунок
++ - измените размер картинки в 2 раза, и рисунок пропорционально
++ растянется.
++
++ 4. *Новые графики не удаляют уже нарисованное.* Этот, в чем-то
++ неожиданный, подход позволяет создавать огромное количество
++ "комбинированных" графиков. Например, поверхность с наложенными
++ линиями уровня строится двумя последовательными вызовами функций
++ рисования поверхности и линий уровня (в любом порядке). И
++ совершенно не надо писать специальную функцию (как в Matlab и
++ некоторых других программах) для рисования этого графика. Примеров
++ таких графиков можно привести множество (см. раздел *note Hints::
++ и сайт программы `http://mathgl.sf.net/index.html').
++
++ Кроме основных концепций я хотел бы остановиться на нескольких, как
++оказалось, нетривиальных моментах - способе указания положения графика,
++осей координат и строковых параметров линий, поверхностей, текста.
++
++* Menu:
++
++* Coordinate axes::
++* Line styles::
++* Color scheme::
++* Font styles::
++* Textual formulas::
++
++\1f
++File: mgl_ru.info, Node: Coordinate axes, Next: Line styles, Up: General concepts
++
++1.1.1 Оси координат
++-------------------------------
++
++Представление системы координат в MathGL состоит из двух частей.
++Вначале координаты нормируются в интервал MINxMAX (*note Axis
++settings::). Если флаг CUT установлен, то точки вне интервала
++отбрасываются, в противном случае, они проецируются на ограничивающий
++параллелепипед (*note Cutting::). Кроме того, отбрасываются точки
++внутри границ, определенных переменными CUTMINxCUTMAX и точки, для
++которых значение функции `CutOff'() не равно нулю. После этого формулы
++перехода в криволинейную систему координат `SetFunc()'применяются к
++каждой точке. Наконец, точка данных отображается с помощью одной из
++графических функций.
++
++ Величины MAX, MIN можно изменять вручную. Однако, после этого
++необходимо вызвать функцию `RecalcBorder()' для настройки графика.
++Более удобный и безопасный путь состоит в вызове функций `Axis(),
++SetRanges()' и др. В последнем случае функция `RecalcBorder()'
++вызывается автоматически. Размеры осей можно задавать и автоматически
++по минимальному и максимальному значениям массива данных. Для этого
++предназначены функции `XRange(), YRange(), ZRange()'. Второй не
++обязательный аргумент указывает, заменять ли новые значения диапазона
++изменения оси координат (по умолчанию) или только расширить уже
++существующий диапазон.
++
++ Точка пересечения осей координат задается переменной ORG и действует
++на последующие вызовы функций рисования осей координат и сетки. По
++умолчанию, если точка пересечения осей координат попадает вне диапазона
++осей координат, то она проецируется на границу области. Изменить такое
++поведение можно, задав AUTOORG=`false'. В случае, если одно из значений
++ORG равно NAN, то соответствующее значение будет выбрано автоматически.
++
++ Кроме привычных осей _x, y, z_ есть еще одна ось - цветовая шкала -
++ось _c_. Она используется при окрашивании поверхностей и задает границы
++изменения функции при окрашивании. При вызове `Axis()' ее границы
++автоматически устанавливаются равными Min.z и Max.z. Возможно и ручное
++изменение границ цветового интервала посредством вызова функции
++`CAxis()' или изменение границ по заданному массиву `CRange()'.
++Используйте `Colorbar()' для отображения цветовой шкалы.
++
++ Вид меток по осям определяется функцией `SetTicks()' (*note Axis
++settings::). Она имеет 3 аргумента: первый D задает шаг меток (если
++положительны) или их число (если отрицательны) или логарифмические
++метки (если равны нулю); второ NS задает число "подметок"; последний
++определяет начальную точку для меток (по умолчанию это точка
++пересечения осей). Функция SETTUNETICKS включает/выключает выделение
++общего множителя (большого или малого факторов в диапазоне) для меток
++осей координат. Наконец, если стандартный вид меток не устраивает
++пользователя, то их шаблон можно задать явно (можно использовать и ТеХ
++символы), воспользовавшись функциями `SetXTT(), SetYTT(). SetZTT().
++SetCTT()'. Кроме того, в качестве меток можно вывести произвольный
++текст использовав функцию `SetTicksVal()'.
++
++\1f
++File: mgl_ru.info, Node: Line styles, Next: Color scheme, Prev: Coordinate axes, Up: General concepts
++
++1.1.2 Стиль линий
++---------------------------
++
++Стиль линии задается строкой, которая может содержать символ цвета
++(`wkrgbcymhRGBCYMHWlenupqLENUPQ'), тип пунктира (`-|;:ji' или пробел),
++ширину линии (`0123456789') и тип маркера (`o+xsd.^v' и модификатор
++`#'). Если пропущен цвет или тип пунктира, то используется значение по
++умолчанию с последним указанным цветом или значение из палитры (для
++*note 1D plotting::). По умолчанию палитры содержит следующие цвета:
++темно серый `H', синий `b', зеленый `g', красный `r', голубой `c',
++пурпурный `m', yellow `y', серый `h', сине-зеленый `l', небесно-синий
++`n', оранжевый `q', желто-зеленый `e', сине-фиолетовый `u', фиолетовый
++`p'.
++
++ Символы цвета те же, что и в классе mglColor (*note mglColor
++class::): `k' - черный, `r' - красный, `R' - темно красный, `g' -
++зеленый, `G' - темно зеленый, `b' - синий, `B' - темно синий, `c' -
++голубой, `C' - темно голубой, `m' - пурпурный, `M' - темно пурпурный,
++`y' - желтый, `Y' - темно желтый (золотой), `h' - серый, `H' - темно
++серый, `w' - белый, `W' - светло серый, `l' - сине-зеленый, `L' - темно
++сине-зеленый, `e' - желто-зеленый, `E' - темно желто-зеленый, `n' -
++небесно-синий, `N' - темно небесно-синий, `u' - сине-фиолетовый, `U' -
++темно сине-фиолетовый, `p' - фиолетовый, `P' - темно фиолетовый, `q' -
++оранжевый, `Q' - темно оранжевый (коричневый).
++
++ Тип пунктира: пробел - нет линии (для рисования только маркеров),
++`-' - сплошная линия (################), `|' - длинный пунктир
++(########________), `;' - пунктир (####____####____), `=' - короткий
++пунктир (##__##__##__##__), `:' - точки (#___#___#___#___), `j' -
++пунктир с точками (#######____#____), `i' - мелкий пунктир с точками
++(###__#__###__#__).
++
++ Типы маркеров: `o' - окружность, `+' - крест, `x' - косой крест, `s'
++- квадрат, `d' - ромб, `.' - точка, `^' - треугольник вверх, `v' -
++треугольник вниз, `<' - треугольник влево, `>' - треугольник вправо,
++`#*' - знак Y, `#+' - крест в квадрате, `#x' - косой крест в квадрате,
++`#.' - точка в окружности. Если в строке присутствует символ `#', то
++используются символы с заполнением.
++
++\0\b[image src="../png/sample5.png"\0\b]
++
++Стили линий и маркеров.
++
++ На конце и в начале линии можно выводить специальный символ
++(стрелку), если в строке указать один из символов: `A' - стрелка
++наружу, `V' - стрелка внутрь, `I' - поперечная черта, `K' - стрелка с
++чертой, `T' - треугольник, `S' - квадрат, `D' - ромб, `O' - круг, `_' -
++нет стрелки (по умолчанию). При этом действует следующее правило:
++первый символ определяет стрелку на конце линии, второй символ -
++стрелку в начале линии. Например, `r-A' - красная сплошная линия со
++стрелкой на конце, `b|AI' - синий пунктир со стрелкой на конце и чертой
++вначале, `_O' - линия с текущим стилем и кружком вначале. Эти стили
++действуют и при построении графиков (например, *note 1D plotting::).
++
++\0\b[image src="../png/sampled.png"\0\b]
++
++Стили стрелок.
++
++\1f
++File: mgl_ru.info, Node: Color scheme, Next: Font styles, Prev: Line styles, Up: General concepts
++
++1.1.3 Цветовая схема
++---------------------------------
++
++Цветовая схема используется для определения цвета поверхностей, линий
++уровня и пр. Цветовая схема задается строкой _s_, которая содержит
++символы цвета (*note Line styles::) или символы `d#:|'. Символ `d'
++указывает на определение цвета в зависимости от положения точки в
++пространстве, а не по амплитуде данных. Символ `#' переключает
++рисование поверхности на сетчатое (для трехмерных поверхностей) или
++включает рисование сетки на поверхности. Символ `|' отключает
++интерполяцию цвета в цветовой схеме. Это может быть полезно для
++"резких" цветов, например, при рисовании матриц. Если в строке
++встречается символ `:', то он принудительно заканчивает разбор строки
++для стиля поверхности. После этого символа могут идти описание стиля
++текста или оси вращения кривой/линий уровня. Цветовая схема может
++содержать до 32 значений цвета.
++
++ В цветовой схеме можно использовать тональные ("подсвеченные") цвета
++(_не в стиле линий!_). Тональный цвет задается двумя символами: первый
++- обычный цвет, второй - его яркость цифрой. Цифра может быть в
++диапазоне `1'...`9'. При этом `5' соответствует нормальному цвету, `1'
++- очень темная версия цвета (почти черный), `9' - очень светлая версия
++цвета (почти белый). Например цветовая схема может быть `b2b7wr7r2'.
++
++\0\b[image src="../png/colors.png"\0\b]
++
++Цвета и их идентификаторы.
++
++ При определении цвета по _амплитуде_ (наиболее часто используется)
++окончательный цвет определяется путем линейной интерполяции массива
++цветов. Массив цветов формируется из цветов, указанных в строке
++спецификации. Аргумент - амплитуда, нормированная между CMIN - CMAX
++(*note Axis settings::). Например, строка из 4 символов `bcyr'
++соответствует изменению цвета от синего (минимальное значение) через
++голубой и желтый (промежуточные значения) к красному (максимальное
++значение). Строка `kw' соответствует изменению цвета от черного
++(минимальное значение) к белому (максимальное значение). Строка из
++одного символа (например, `g') соответствует однотонному цвету (в
++данному случае зеленому).
++
++ Есть несколько полезных цветовых схем. Строка `kw' дает обычную
++серую (черно-белую) схему, когда большие значения светлее. Строка `wk'
++представляет обратную серую схему, когда большие значения темнее.
++Строки `kRryw', `kGgw', `kBbcw' представляют собой хорошо известные
++схемы _hot_, _summer_ и _winter_. Строки `BbwrR' и `bBkRr' позволяют
++рисовать двухцветные фигуры на белом или черном фоне, когда
++отрицательные значения показаны синим цветом, а положительные -
++красным. Строка `BbcyrR' дает цветовую схему, близкую к хорошо
++известной схеме _jet_.
++
++\0\b[image src="../png/color_schemes.png"\0\b]
++
++Наиболее популярные цветовые схемы.
++
++ При определении цвета по _положению точки в пространстве_
++окончательный цвет определяется по формуле c=x*c[1] + y*c[2] + z*c[3].
++Здесь c[1], c[2], c[3] - первые три цвета в цветовом массиве; x, y, z -
++координаты точки, нормированные на MINxMAX. Такой тип определения цвета
++полезен, например, при построении поверхностей уровня, когда цвет дает
++представление о положении точки в пространстве.
++
++\1f
++File: mgl_ru.info, Node: Font styles, Next: Textual formulas, Prev: Color scheme, Up: General concepts
++
++1.1.4 Стиль текста
++-----------------------------
++
++Стиль текста задается строкой, которая может содержать несколько
++символов: тип шрифта (`ribwou') и/или выравнивания (`LRC'), а также
++цвет текста `wkrgbcymhRGBCYMHW' (*note Line styles::) после символа
++`:'. Например, `biC:b' соответствует жирному курсиву с выравниванием по
++центру синего цвета.
++
++ Начертания шрифта: `r' - прямой шрифт, `i' - курсив, `b' - жирный.
++По умолчанию используется прямой шрифт. Типы выравнивания текста: `L' -
++по левому краю (по умолчанию), `C' - по центру, `R' - по правому краю.
++Дополнительные эффекты шрифта: `w' - контурный, `o' - надчеркнутый, `u'
++- подчеркнутый.
++
++ Синтаксический разбор LaTeX-их команд по умолчанию включен. Это
++команды смены стиля текста (например, \b для жирного текста): \a или
++\overline - надчеркивание, \b или \textbf - жирный, \i или \textit -
++курсив, \r или \textrm - прямой (отменяет стили жирного и курсива), \u
++или \underline - подчеркнутый, \w или \wire - контурный, \big -
++большего размера, @ - меньшего размера. Нижний и верхний индексы
++задаются символами `_' и `^'. При этом изменение стиля применяется
++только к следующему символу или к символам в фигурных скобках {},
++которые понимаются как единый блок. Например, сравните строки `sin
++(x^{2^3})' и `sin (x^2^3)'. Можно также менять цвет текста внутри
++строки с помощью команд #? или \color?, где `?' - символ цвета (*note
++Line styles::). Например, слова `Blue' и `red' будут окрашены в
++соответствующий цвет в строке `#b{Blue} and \colorr{red} text'.
++Большинство функций понимает символ новой строки `\n' и позволяет
++выводить много строчный текст. Наконец, можно использовать символы с
++произвольным UTF кодом с помощью команды `\utf0x????'. Например,
++`\utf0x3b1' даст символ \alpha.
++
++ Распознаются также большинство символов TeX и AMSTeX, команды смены
++стиля текста (\textrm, \textbf, \textit, \textsc, \overline,
++\underline), акценты (\hat, \tilde, \dot, \ddot, \acute, \check,
++\grave, \bar, \breve) и корни (\sqrt, \sqrt3, \sqrt4). Полный список
++содержит около 2000 символов. Отмечу, что первый пробел (пробел,
++табуляция и пр.) после команды игнорируется, а все остальные пробелы
++печатаются обычным образом. Например, следующие строки дают одинаковый
++результат \tilde a: `\tilde{a}'; `\tilde a'; `\tilde{}a'.
++
++ В частности, распознаются греческие буквы: \alpha - \alpha, \beta -
++\beta, \gamma - \gamma, \delta - \delta, \epsilon - \epsilon, \eta -
++\eta, \iota - \iota, \chi - \chi, \kappa - \kappa, \lambda - \lambda,
++\mu - \mu, \nu - \nu, o - \o, \omega - \omega, \phi - \phi, \pi - \pi,
++\psi - \psi, \rho - \rho, \sigma - \sigma, \theta - \theta, \tau -
++\tau, \upsilon - \upsilon, \xi - \xi, \zeta - \zeta, \varsigma -
++\varsigma, \varepsilon - \varepsilon, \vartheta - \vartheta, \varphi -
++\varphi, A - \Alpha, B - \Beta, \Gamma - \Gamma, \Delta - \Delta, E -
++\Epsilon, H - \Eta, I - \Iota, C - \Chi, K - \Kappa, \Lambda - \Lambda,
++M - \Mu, N - \Nu, O - \O, \Omega - \Omega, \Phi - \Phi, \Pi - \Pi, \Psi
++- \Psi, R - \Rho, \Sigma - \Sigma, \Theta - \Theta, T - \Tau, \Upsilon
++- \Upsilon, \Xi - \Xi, Z - \Zeta.
++
++ Еще примеры наиболее общеупотребительных TeX-их символов: \angle -
++\angle, \aleph - \aleph, \cdot - \cdot, \clubsuit - \clubsuit, \cup -
++\cup, \cap - \cap, \diamondsuit - \diamondsuit, \diamond - \diamond,
++\div - \div, \downarrow - \downarrow, \dag - \dag, \ddag - \ddag,
++\equiv - \equiv, \exists - \exists, \frown - \frown, \flat - \flat, \ge
++- \ge, \geq - \geq, \gets - \gets, \heartsuit - \heartsuit, \infty -
++\infty, \in - \in, \int - \int, \Im - \Im, \langle - \langle, \le -
++\le, \leq - \leq, \leftarrow - \leftarrow, \mp - \mp, \nabla - \nabla,
++\ne - \ne, \neq - \neq, \natural - \natural, \oint - \oint, \odot -
++\odot, \oplus - \oplus, \partial - \partial, \parallel - \parallel,
++\perp - \perp, \pm - \pm, \propto - \propto, \prod - \prod, \Re - \Re,
++\rightarrow - \rightarrow, \rangle - \rangle, \spadesuit - \spadesuit,
++\sim - \sim, \smile - \smile, \subset - \subset, \supset - \supset,
++\surd - \sqrt or \surd, \S - \S, \sharp - \sharp, \sum - \sum, \times -
++\times, \to - \to, \uparrow - \uparrow, \wp - \wp and so on.
++
++ Размер текста может быть задан явно (если SIZE>0) или относительно
++базового размера шрифта для рисунка |SIZE|*FONTSIZE при SIZE<0.
++Значение SIZE=0 указывает, что соответствующая строка выводиться не
++будет. Базовый размер шрифта измеряется во внутренних единицах.
++Специальные функции `SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()'
++позволяют задавать его в более "привычных" единицах.
++
++\1f
++File: mgl_ru.info, Node: Textual formulas, Prev: Font styles, Up: General concepts
++
++1.1.5 Текстовые формулы
++---------------------------------------
++
++MathGL имеет быстрый парсер текстовых формул , понимающий большое число
++функций и операций. Базовые операции: `+' - сложение, `-' - вычитание,
++`*' - умножение, `/' - деление, `^' - возведение в целосичленную
++степень. Также есть логические операции: `<' - истина если if x<y, `>'
++- истина если x>y, `=' - истина если x=y, `&' - истина если x и y оба
++не равны нулю, `|' - истина если x или y не нуль. Логические операции
++имеют наинизший приоритет и возвращают 1 если истина или 0 если ложно.
++
++ Базовые функции: `sqrt(x)' - квадратный корень из X, `pow(x,y)' - X
++в степени Y, `ln(x)' - натуральный логарифм X, `lg(x)' - десятичный
++логарифм X, `log(a,x)' - логарифм по основанию A от X, `abs(x)' -
++модуль X, `sign(x)' - знак X, `mod(x,y)' - остаток от деления x на y,
++`step(x)' - ступенчатая функция, `int(x)' - целая часть X, `rnd' -
++случайное число, `pi' - число \pi=3.1415926...
++
++ Тригонометрические функции: `sin(x)', `cos(x)', `tan(x)' (или
++`tg(x)'). Обратные тригонометрические функции: `asin(x)', `acos(x)',
++`atan(x)'. Гиперболические функции: `sinh(x)' (или `sh(x)'), `cosh(x)'
++(или `ch(x)'), `tanh(x)' (или `th(x)'). Обратные гиперболические
++функции: `asinh(x)', `acosh(x)', `atanh(x)'.
++
++ Специальные функции: `gamma(x)' - гамма функция \Gamma(x) =
++\int_0^\infty dt t^{x-1} \exp(-t) , `psi(x)' - дигамма функция \psi(x)
++= \Gamma</samp>’(x)/\Gamma(x) для x!=0, `ai(x)' - Эйри функция
++Ai(x), `bi(x)' - Эйри функция Bi(x), `cl(x)' - функция Клаузена,
++`li2(x)' (или `dilog(x)') - дилогарифм Li_2(x) = - \Re \int_0^x ds
++\log(1-s)/s, `sinc(x)' - функция sinc(x) = \sin(\pi x) / (\pi x) для
++любых x, `zeta(x)' - зета функция Римана \zeta(s) = \sum_{k=1}^\infty
++k^{-s} для s!=1, `eta(x)' - эта функция \eta(s) = (1-2^{1-s}) \zeta(s)
++для произвольного s, `lp(l,x)' - полином Лежандра P_l(x), (|x|<=1,
++l>=0), `w0(x)', `w1(x)' - функции Ламберта W. Функции W(x) определены
++как решение уравнения W \exp(W) = x.
++
++ Экспоненциальные интегралы: `ci(x)' - cos-интеграл Ci(x) = \int_0^x
++dt \cos(t)/t, `si(x)' - sin-интеграл Si(x) = \int_0^x dt \sin(t)/t,
++`erf(x)' - функция ошибки erf(x) = (2/\sqrt(\pi)) \int_0^x dt
++\exp(-t^2), `ei(x)' - интеграл Ei(x) := - PV(\int_{-x}^\infty dt
++\exp(-t)/t) (где PV обозначает главное значение), `e1(x)' - интеграл
++E_1(x) := Re \int_1^\infty dt \exp(-xt)/t , `e2(x)' - интеграл E_2(x)
++:= Re \int_1^\infty dt \exp(-xt)/t^2, `ei3(x)' - интеграл Ei_3(x) =
++\int_0^x dt \exp(-t^3) для x>=0.
++
++ Функции Бесселя: `j(nu,x)' - функция Бесселя первого рода, `y(nu,x)'
++- функция Бесселя второго рода, `i(nu,x)' - модифицированная функция
++Бесселя первого рода, `k(nu,x)' - модифицированная функция Бесселя
++второго рода.
++
++ Эллиптические интегралы: `ee(k)' - полный эллиптический интеграл
++E(k) = E(\pi/2, k), `ek(k)' - полный эллиптический интеграл K(k) =
++F(\pi/2, k), `e(phi,k)' - эллиптический интеграл E(\phi,k) =
++\int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))), `f(phi,k)' - эллиптический
++интеграл F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))).
++
++ Функции Якоби: `sn(u,m)', `cn(u,m)', `dn(u,m)', `sc(u,m)',
++`sd(u,m)', `ns(u,m)', `cs(u,m)', `cd(u,m)', `nc(u,m)', `ds(u,m)',
++`dc(u,m)', `nd(u,m)'.
++
++ Некоторые из функций могут быть недоступны если флаг NO_GSL был
++определен при компиляции библиотеки MathGL.
++
++ При разборе формул нет различия между верхним и нижним регистром.
++Если аргумент лежит вне области определения функции, то возвращается
++NaN.
++
++\1f
++File: mgl_ru.info, Node: Graphics setup, Next: Axis settings, Prev: General concepts, Up: MGL interface
++
++1.2 Настройка графика
++=====================================
++
++Команды в этой группе влияют на вид всего рисунка. Соответственно они
++должны располагаться _перед_ вызовом функций непосредственно рисующих
++графики.
++
++* Menu:
++
++* Transparency ::
++* Lighting ::
++* Fog ::
++* Default sizes ::
++* Zooming ::
++* Cutting ::
++* Other settings ::
++
++\1f
++File: mgl_ru.info, Node: Transparency, Next: Lighting, Up: Graphics setup
++
++1.2.1 Прозрачность
++------------------------------
++
++Эти команды настраивают тип и степень прозрачности поверхностей.
++Главной является функция *note alpha::, которая включает/выключает
++прозрачность для всех графиков, созданных после вызова *note alpha::.
++Функция *note alphadef:: устанавливает величину alpha-канала по
++умолчанию. Прозрачность можно выключить для отдельного графика с
++помощью *note transparent::. Наконец, функция *note transptype:: задает
++тип прозрачности. См. раздел *note Transparent surface sample::, для
++примеров кода и графика.
++
++ -- Команда MGL: alpha `[val=on]'
++ Включает/выключает прозрачность для _всего_ рисунка. По умолчанию
++ прозрачность выключена. Используйте `transparent off' для
++ конкретного графика для выключения прозрачности.
++
++ -- Команда MGL: alphadef `val'
++ Задает значение прозрачности по умолчанию для всех графиков.
++ Начальное значение 0.5.
++
++ -- Команда MGL: transparent `val'
++ Временно включает/возвращает прозрачность графиков.
++
++ -- Команда MGL: transptype `val'
++ Задает тип прозрачности. Обычная прозрачность (`0') - "закрытые"
++ объекты видны меньше чем закрывающие. "Стеклянная" прозрачность
++ (`1') - закрытые и закрывающие объекты единообразно ослабляют
++ интенсивность света (по RGB каналам). "Ламповая" прозрачность
++ (`2') - закрытые и закрывающие объекты являются источниками
++ дополнительного освещения (рекомендую установить `alphadef 0.3'
++ или меньше в этом случае). *Note Normal transparency::, *note
++ Glass-like transparency::, *note Lamp-like transparency::.
++
++\1f
++File: mgl_ru.info, Node: Lighting, Next: Fog, Prev: Transparency, Up: Graphics setup
++
++1.2.2 Освещение
++------------------------
++
++Эти функции настраивают освещение графика. Главная функция *note
++light:: включает/выключает освещение графиков построенных после ее
++вызова. MathGL поддерживает до 10 независимых источников света.
++Положение, цвет, яркость каждого источника света можно задавать по
++отдельности. По умолчанию включен только первый (с порядковым номером
++`0') источник света белого цвета, расположенный сверху.
++
++ -- Команда MGL: light `[val=on]'
++ Включает/выключает освещение графика. По умолчанию освещение
++ выключено.
++
++ -- Команда MGL: light `n val'
++ Включает/выключает N-ый источник света.
++
++ -- Команда MGL: light `n xpos ypos zpos' ['col'='w' `br=0.5']
++ Добавляет источник света с номером N в положение {XPOS, YPOS,
++ ZPOS} с цветом COL и яркостью BR, которая должна быть в диапазоне
++ [0,1].
++
++ -- Команда MGL: ambient `val'
++ Задает яркость рассеянного освещения. Значение должно быть в
++ диапазоне [0,1].
++
++\1f
++File: mgl_ru.info, Node: Fog, Next: Default sizes, Prev: Lighting, Up: Graphics setup
++
++1.2.3 Туман
++----------------
++
++ -- Команда MGL: fog `val [dz=0.25]'
++ Имитирует туман на графике. Туман начинается на относительном
++ расстоянии DZ от точки обзора и его плотность растет
++ экспоненциально вглубь по закону ~1-exp(-d*z). Здесь _z_ -
++ нормализованная на 1 глубина графика. Если D=`0' то туман
++ отсутствует. См. раздел *note Surface in fog sample::, для
++ примеров кода и графика.
++
++\1f
++File: mgl_ru.info, Node: Default sizes, Next: Zooming, Prev: Fog, Up: Graphics setup
++
++1.2.4 Базовые размеры
++-----------------------------------
++
++Эти команды задают величины большинства параметров графика, включая
++размеры маркеров, стрелок, толщину линий и т.д. Как и любые другие
++настройки, они подействуют только на графики созданные после изменения
++настроек.
++
++ -- Команда MGL: barwidth `val'
++ Относительный размер прямоугольников в `bars, barh, boxplot'.
++ Значение по умолчанию `0.7'.
++
++ -- Команда MGL: marksize `val'
++ Размер маркеров для *note 1D plotting::. Значение по умолчанию `1'.
++
++ -- Команда MGL: arrowsize `val'
++ Размер стрелок для *note 1D plotting::, линий и кривых (*note
++ Primitives drawing::). Значение по умолчанию `1'.
++
++ -- Команда MGL: linewidth `val'
++ Базовая толщина линий. Значения <1 игнорируются. Для значений >1
++ реальная толщина получается перемножением указанной ширины линии
++ на данное значение. Увеличение ширины линии актуально для больших
++ растровых рисунков. Значение по умолчанию `1'.
++
++ -- Команда MGL: ticklen `val' [`stt=1']
++ Относительная длина меток осей координат. Значение по умолчанию
++ `0.1'. Параметр STT>0 задает относительную длину подметок, которые
++ в `sqrt(1+stt)' раз меньше.
++
++ -- Команда MGL: tickstl 'stl' ['sub'="]
++ Стиль меток (STL) и подметок (SUB) осей координат. Если `stl=''',
++ то используется стиль по умолчанию (`k' или `w' в зависимости от
++ типа прозрачности). Если `sub=''', то используется стиль меток
++ (т.е. STL).
++
++\1f
++File: mgl_ru.info, Node: Zooming, Next: Cutting, Prev: Default sizes, Up: Graphics setup
++
++1.2.5 Масштабирование
++------------------------------------
++
++Эти команды управляют масштабированием всего рисунка (*note zoom::) или
++отдельной картинки (*note plotfactor::). Обычно эти функции
++используются для удаления пустого места вокруг графиков.
++
++ -- Команда MGL: plotfactor `val'
++ Масштаб картинки (значение должно быть больше 1). Не рекомендуется
++ устанавливать значения меньше 1.5. Это аналог *note zoom::, но
++ применяется только к конкретной картинке, заданной *note inplot::.
++ Используйте ноль для включения автоматического масштабирования.
++
++ -- Команда MGL: zoom `x1 y1 x2 y2'
++ Масштабирует весь рисунок. После вызова функции текущий график
++ будет очищен и в дальнейшем рисунок будет содержать только область
++ [x1,x2]*[y1,y2] от исходного рисунка. Координаты X1, X2, Y1, Y2
++ меняются в диапазоне от 0 до 1. Внимание! эти настройки не могут
++ быть переписаны никакими другими функциями. Используйте `zoom 0 0
++ 1 1' для перехода в масштаб по умолчанию.
++
++\1f
++File: mgl_ru.info, Node: Cutting, Next: Other settings, Prev: Zooming, Up: Graphics setup
++
++1.2.6 Обрезание
++------------------------
++
++Эти команды задают условия когда точка будет исключена (вырезана) из
++рисования. Замечу, что все точки со значением(-ями) `nan' по одной из
++координат или амплитуде автоматически исключаются из рисования.
++
++ -- Команда MGL: cut `val'
++ Задает обрезание точек за пределами осей координат. Если `on' то
++ такие точки исключаются из рисования (это по умолчанию) иначе они
++ проецируются на ограничивающий прямоугольник.
++
++ -- Команда MGL: cut `x1 y1 z1 x2 y2 z2'
++ Задает границы параллелепипеда внутри которого точки не рисуются.
++ Если границы одинаковы (переменные равны), то параллелепипеда
++ считается пустым. См. раздел *note CutMinMax sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: cut 'cond'
++ Задает условие обрезания по формуле COND. Это условие исключает
++ точки из рисования если результат вычисления формулы не равен
++ нулю. Установите аргумент `''' для выключения условия обрезания.
++ См. раздел *note CutOff sample::, для примеров кода и графика.
++
++\1f
++File: mgl_ru.info, Node: Other settings, Prev: Cutting, Up: Graphics setup
++
++1.2.7 Прочие настройки
++-------------------------------------
++
++ -- Команда MGL: font 'fnt' [`val=6']
++ Задает стиль и размер шрифта (*note Text printing::). Вначале
++ используется `rC' - прямой шрифт с выравниванием по центру. По
++ умолчанию размер подписей оси координат в 1.4 раза больше.
++
++ -- Команда MGL: rotatetext `val'
++ Включает/выключает вращение меток и подписей осей координат вдоль
++ оси. Начальное значение `on'.
++
++ -- Команда MGL: palette 'colors'
++ Задает палитру как последовательность цветов. Значение по
++ умолчанию `"Hbgrcmyhlnqeup"', что соответствует цветам: темно
++ серый `H', синий `b', зеленый `g', красный `r', голубой `c',
++ малиновый `m', желтый `y', серый `h', сине-зеленый `l',
++ небесно-голубой `n', оранжевый `q', желто-зеленый `e',
++ сине-фиолетовый `u', фиолетовый `p'. Палитра в основном
++ используется в 1D графиках (*note 1D plotting::) для кривых с
++ неопределенным стилем линии.
++
++ -- Команда MGL: meshnum `num'
++ Задает ориентировочное число линий в *note mesh::, *note fall::,
++ *note grid::, число стрелок (штрихов) в *note vect::, *note dew::
++ и число ячеек в *note cloud::. По умолчанию (=0) рисуются все
++ линии, стрелки, ячейки.
++
++ -- Команда MGL: axialdir 'dir'
++ Задает ось вращения для *note axial::, *note torus::. По умолчанию
++ это 'z'.
++
++\1f
++File: mgl_ru.info, Node: Axis settings, Next: Transformation matrix, Prev: Graphics setup, Up: MGL interface
++
++1.3 Параметры осей координат
++==================================================
++
++Этот большой набор команд определяет вид осей и меток координат. Перед
++построением для каждой точки выполняются 3 преобразования: сначала
++определяется возможность рисования точки (*note Cutting::), далее
++применяются формулы перехода к криволинейным координатам и наконец
++точка отображается.
++
++ -- Команда MGL: axis `x1 y1 x2 y2'
++ -- Команда MGL: axis `x1 y1 z1 x2 y2 z2'
++ -- Команда MGL: ranges `x1 x2 y1 y2 [z1=0 z2=0]'
++ Задает диапазон изменения координат. Если минимальное и
++ максимальное значение координаты равны, то они игнорируются по
++ данному направлению. Также устанавливает размер цветовой шкалы,
++ аналогично команде `caxis z1 z2'. Начальные диапазоны равны [-1,
++ 1].
++
++ -- Команда MGL: axis 'fx' 'fy' ['fz'=" 'fa'="]
++ Задает формулы перехода к криволинейным координатам. Каждая строка
++ является математическим выражением, зависящим от старых координат
++ `x', `y', `z' и `a' или `c' для цветовой шкалы. Например, для
++ цилиндрических координат будет `axis 'x*cos(y)' 'x*sin(y)' 'z''.
++ Для удаления формул соответствующий параметр должен быть пустым
++ `'''. Использование формул преобразования слегка замедляет
++ программу, т.е.. `axis '' '' ''' быстрее чем `axis '1*x' '1*y'
++ '1*z''. Параметр FA задает аналогичную формулу для цветовой шкалы.
++ *Note Textual formulas::.
++
++ -- Команда MGL: axis `how'
++ Устанавливает одну из предопределенных систем криволинейных
++ координат в зависимости от параметра HOW: `0' - декартова система
++ (нет преобразования координат, наиболее быстрая); `1' - полярные
++ координаты x_n=x*cos(y),y_n=x*sin(y), z_n=z; `2' - сферические
++ координаты x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y);
++ `3' - параболические координаты x_n=x*y, y_n=(x*x-y*y)/2, z_n=z;
++ `4' - Paraboloidal coordinates x_n=(x*x-y*y)*cos(z)/2,
++ y_n=(x*x-y*y)*sin(z)/2, z_n=x*y; `5' - Oblate coordinates
++ x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z),
++ z_n=sinh(x)*sin(y); `6' - Prolate coordinates
++ x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z),
++ z_n=cosh(x)*cos(y); `7' - эллиптические координаты
++ x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z; `8' - тороидальные
++ координаты x_n=sinh(x)*cos(z)/(cosh(x)-cos(y)),
++ y_n=sinh(x)*sin(z)/(cosh(x)-cos(y)), z_n=sin(y)/(cosh(x)-cos(y));
++ `9' - бисферические координаты x_n=sin(y)*cos(z)/(cosh(x)-cos(y)),
++ y_n=sin(y)*sin(z)/(cosh(x)-cos(y)), z_n=sinh(x)/(cosh(x)-cos(y));
++ `10' - биполярные координаты x_n=sinh(x)/(cosh(x)-cos(y)),
++ y_n=sin(y)/(cosh(x)-cos(y)), z_n=z.
++
++ -- Команда MGL: caxis `z1 z2'
++ Задает масштаб цветовой шкалы (c-координаты). Эти значения
++ используются для определения цвета поверхностей и прочих 2D и 3D
++ графиков. Начальный диапазон равен [-1, 1].
++
++ -- Команда MGL: origin `x0 y0 [z0=nan]'
++ Задает центр пересечения осей координат. Если одно из значений
++ равно `nan', то выбрается оптимальное положение осей координат по
++ этому направлению.
++
++ -- Команда MGL: ternary `val'
++ Задает рисование треугольных (Ternary) осей координат. Это
++ специальный тип графика для 3 зависимых координат (компонент) A,
++ B, C таких, что A+B+C=1. MathGL использует только 2 независимые
++ координаты A=x и B=y поскольку их достаточно для построения всех
++ графиков. При этом третья координата z является независимым
++ параметром для построения линий уровня, поверхностей и т.д. См.
++ раздел *note Ternary plot sample::, для примеров кода и графика.
++
++ -- Команда MGL: xrange dat [`add=off fact=0']
++ -- Команда MGL: yrange dat [`add=off fact=0']
++ -- Команда MGL: zrange dat [`add=off fact=0']
++ -- Команда MGL: crange dat [`add=off fact=0']
++ Задает диапазон изменения x-,y-,z-,c- координат как минимальное и
++ максимальное значение массива DAT. Параметр ADD указывает
++ добавлять новый диапазон к существующему или заменять его.
++ Параметр FACT дополнительно расширяет диапазон на величину
++ (MAX-MIN)*FACT.
++
++ -- Команда MGL: xrange `x1 x2'
++ -- Команда MGL: yrange `x1 x2'
++ -- Команда MGL: zrange `x1 x2'
++ -- Команда MGL: crange `x1 x2'
++ Задает диапазон изменения x-,y-,z-,c- координат. См. также *note
++ axis::.
++
++ -- Команда MGL: xtick `val [sub=0 org=nan]'
++ -- Команда MGL: ytick `val [sub=0 org=nan]'
++ -- Команда MGL: ztick `val [sub=0 org=nan]'
++ -- Команда MGL: ctick `val'
++ Задает шаг меток осей VAL, число подметок NS и начальное положение
++ меток ORG. Переменная VAL задает шаг меток (если положительна) или
++ их число на оси (если отрицательна). Нулевое значение задает
++ логарифмические метки. Если ORG=`NAN', то используется значение из
++ *note origin::.
++
++ -- Команда MGL: xtick 'templ'
++ -- Команда MGL: ytick 'templ'
++ -- Команда MGL: ztick 'templ'
++ -- Команда MGL: ctick 'templ'
++ Задает шаблоны для меток вдоль x-,y-,z-оси или colorbar. Шаблон
++ может содержать и символы TeX. Если XTT, YTT, ZTT, CTT=`''', то
++ используется шаблон по умолчанию (в простейшем случае `%.2g').
++ Установка шаблона выключает автоматическое улучшение вида меток.
++
++ -- Команда MGL: xtick `val1' 'lbl1' [`val2' 'lbl2' ...]
++ -- Команда MGL: ytick `val1' 'lbl1' [`val2' 'lbl2' ...]
++ -- Команда MGL: ztick `val1' 'lbl1' [`val2' 'lbl2' ...]
++ Задает явное положение VAL и подписи LBL для меток вдоль оси.
++ Метки могут содержать и символы TeX.
++
++ -- Команда MGL: adjust ['dir'='xyzc']
++ Автоматически задает шаг меток осей, число подметок и начальное
++ положение меток для осей координат DIR в виде наиболее удобном для
++ человека.
++
++\1f
++File: mgl_ru.info, Node: Transformation matrix, Next: Export to file, Prev: Axis settings, Up: MGL interface
++
++1.4 Матрица преобразования
++===============================================
++
++Эти команды контролируют где и как график будет расположен. Существует
++определенный порядок вызова этих функций для лучшего вида графика.
++Вначале должны вызываться команды *note subplot:: или *note inplot::
++для указания местоположения вывода. После них - команды вращения *note
++rotate:: и сжатия *note aspect::. И наконец любые другие функции для
++рисования графика. Вместо вращения графика можно вызвать команды *note
++columnplot:: для расположения графиков в столбец одного над другим или
++*note stickplot:: для расположения в линейку.
++
++ -- Команда MGL: subplot `nx ny m [dx=0 dy=0]'
++ Помещает последующий вывод в M-ую ячейку сетки размером NX*NY от
++ всего рисунка. Функция сбрасывает матрицу трансформации (повороты
++ и сжатие графика) и должна вызываться первой для создания
++ "подграфика". С эстетической точки зрения не рекомендуется
++ вызывать эту функцию с различными (или не кратными) размерами
++ сетки. Ячейка может быть дополнительно сдвинута относительно
++ своего обычного положения на относительный размер DX, DY.
++
++ -- Команда MGL: subplot `nx ny m' 'style'
++ Аналогично предыдущему, но место для осей/colorbar резервируется
++ только если строка STYLE содержит: `L' или `<' - с левого края,
++ `R' или `>' - с правого края, `A' или `^' - с верхнего края, `U'
++ или `_' - с нижнего края.
++
++ -- Команда MGL: inplot `x1 x2 y1 y2 [rel=off]'
++ Помещает последующий вывод в прямоугольную область [X1, X2]*[Y1,
++ Y2] (исходный размер [0,1]*[0,1]). Эта функция позволяет поместить
++ график в произвольную область рисунка. Если параметр REL=`on', то
++ используется позиция относительно текщего *note subplot:: (или
++ *note inplot:: с REL=`off'). Функция сбрасывает матрицу
++ трансформации (повороты и сжатие графика) и должна вызываться
++ первой для создания "подграфика".
++
++ -- Команда MGL: columnplot `num ind [d=0]'
++ Помещает последующий вывод в IND-ую строку столбца из NUM строк.
++ Положение столбца выбирается относительно последнего вызова *note
++ subplot:: (или *note inplot:: с REL=`off'). Параметр D задает
++ дополнительный зазор между строк. См. раздел *note ColumnPlot
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: stickplot `num ind tet phi'
++ Помещает последующий вывод в IND-ую ячейку "бруска" из NUM ячеек.
++ При этом сам брусок повернут на углы TET, PHI. Положение
++ выбирается относительно последнего вызова *note subplot:: (или
++ *note inplot:: с REL=`off'). См. раздел *note StickPlot sample::,
++ для примеров кода и графика.
++
++ -- Команда MGL: rotate `tetz tetx [tety=0]'
++ Вращает систему координат относительно осей {x, z, y}
++ последовательно на углы TETX, TETZ, TETY.
++
++ -- Команда MGL: rotate `tet x y z'
++ Вращает систему координат относительно вектора {X, Y, Z} на угол
++ TET.
++
++ -- Команда MGL: aspect `ax ay [az=1]'
++ Устанавливает соотношение размеров осей в отношении AX:AY:AZ. Для
++ лучшего вида следует вызывать после функции *note rotate::.
++
++ -- Команда MGL: perspective `val'
++ Добавляет (включает) перспективу для графика. Параметр val ~
++ 1/z_{eff} \in [0,1). По умолчанию (`val=0') перспектива отключена.
++
++\1f
++File: mgl_ru.info, Node: Export to file, Next: Primitives drawing, Prev: Transformation matrix, Up: MGL interface
++
++1.5 Экспорт в файл
++==============================
++
++ -- Команда MGL: write 'fname' [`solid=off']
++ Экспортирует текущий кадр в файл 'fname' (тип определяется по
++ расширению). Параметр SOLID задает вывод картинки на текущем фоне
++ (обычно белом) или полупрозрачной. Если 'fname'=", то используется
++ имя `frame####.jpg', где `####' - текущий номер кадра.
++
++ -- Команда MGL: setsize `w h'
++ Изменяет размер картинки в пикселях. Функция должна вызываться
++ *перед* любыми функциями построения потому что полностью очищает
++ содержимое рисунка. В некоторых программах исполнение этой команды
++ может запрещено.
++
++\1f
++File: mgl_ru.info, Node: Primitives drawing, Next: Text printing, Prev: Export to file, Up: MGL interface
++
++1.6 Рисование примитивов
++===========================================
++
++Эти команды рисуют рисуют простые объекты типа линий, точек, сфер,
++капель, конусов, и т.д.
++
++ -- Команда MGL: clf
++ Очищает рисунок и заполняет его цветом по умолчанию (обычно белым).
++
++ -- Команда MGL: ball `x y' ['col'='r']
++ -- Команда MGL: ball `x y z' ['col'='r']
++ Рисует точку (шарик) с координатами {X, Y, Z} и цветом COL.
++
++ -- Команда MGL: line `x1 y1 x2 y2' ['stl'="]
++ -- Команда MGL: line `x1 y1 z1 x2 y2 z2' ['stl'="]
++ Рисует геодезическую линию (декартовых координатах - прямую) из
++ точки {X1,Y1,Z1} в {X2,Y2,Z2} использую стиль линии STL. Кривая
++ рисуется даже если часть ее лежит вне диапазона осей координат.
++
++ -- Команда MGL: curve `x1 y1 dx1 dy1 x2 y2 dx2 dy2' ['stl'="]
++ -- Команда MGL: curve `x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2'
++ ['stl'="]
++ Рисует кривую Безье из точки {X1,Y1,Z1} в {X2,Y2,Z2} использую
++ стиль линии STL. Касательные в точках пропорциональны
++ {DX1,DY1,DZ1}, {DX2,DY2,DZ2}. Кривая рисуется даже если часть ее
++ лежит вне диапазона осей координат.
++
++ -- Команда MGL: facex `x0 y0 z0 wy wz' ['stl'=" `d1=0 d2=0']
++ -- Команда MGL: facey `x0 y0 z0 wx wz' ['stl'=" `d1=0 d2=0']
++ -- Команда MGL: facez `x0 y0 z0 wx wy' ['stl'=" `d1=0 d2=0']
++ Рисует закрашенный прямоугольник (грань) перпендикулярно оси
++ [x,y,z] в точке {X0, Y0, Z0} цветом STL и шириной WX, WY, WZ вдоль
++ соответствующего направления. При этом цвет может быть один для
++ всей грани, или различным для разных вершин если указаны все 4
++ цвета (полезно для градиента цвета, например `wwrr'). Параметры
++ D1!=0, D2!=0 задают дополнительный сдвиг последней точки (т.е.
++ рисуют четырехугольник). Грань будет нарисована даже если часть ее
++ лежит вне диапазона осей координат.
++
++ -- Команда MGL: sphere `x0 y0 r' ['col'='r']
++ -- Команда MGL: sphere `x0 y0 z0 r' ['col'='r']
++ Рисует сферу радиуса R с центром в точке {X, Y, Z} цветом STL.
++
++ -- Команда MGL: drop `x0 y0 dx dy r' ['col'='b' `sh=1 asp=1']
++ -- Команда MGL: drop `x0 y0 z0 dx dy dz r' ['col'='b' `sh=1 asp=1']
++ Рисует каплю радиуса R в точке {X0,Y0,Z0} вытянутую вдоль
++ направления {DX,DY,DZ} цветом COL. Параметр SH определяет степень
++ вытянутости: `0' - сфера, `1' - классическая капля. Параметр ASP
++ определяет относительную ширину капли (аналог "эллиптичности" для
++ сферы). См. раздел *note Drops sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: cone `x1 y1 z1 x2 y2 z2 r1' [`r2=-1' 'stl'="
++ `edge=off']
++ Рисует трубу (или усеченный конус если EDGE=`off') между точками
++ {X1,Y1,Z1}, {X2,Y2,Z2} с радиусами на концах R1, R2. Если R2<0, то
++ полагается R2=R1. Цвет конуса задается строкой STL.
++
++ -- Команда MGL: rect `x1 y1 x2 y2' ['st'="]
++ -- Команда MGL: rect `x1 y1 z1 x2 y2 z2' ['st'="]
++ Рисует закрашенный прямоугольник (грань) с противоположными
++ вершинами в точках {X1,Y1,Z1}, {X2,Y2,Z2} цветом STL. При этом
++ цвет может быть один для всей грани, или различным для разных
++ вершин если указаны все 4 цвета (полезно для градиента цвета,
++ например `wwrr'). Грань будет нарисована даже если часть ее лежит
++ вне диапазона осей координат.
++
++\1f
++File: mgl_ru.info, Node: Text printing, Next: Axis and Colorbar, Prev: Primitives drawing, Up: MGL interface
++
++1.7 Вывод текста
++===========================
++
++Команды для вывода текста позволяют вывести строку текста в
++произвольном месте рисунка, в произвольном направлении и вдоль
++произвольной кривой. Можно использовать произвольное начертание шрифта
++и многие ТеХ-ие команды (детальнее *note Font styles::). Аргумент SIZE
++определяет размер текста: размер шрифта если положителен или
++относительный размер (=-SIZE*FONTSIZE) если отрицателен.
++
++ Параметры шрифта задаются строкой, которая может содержать символы
++стиля (`rbiwou') и/или выравнивания (`LRC'). Также строка может
++содержать символы цвета `wkrgbcymhRGBCYMHW' (*note Line styles::) после
++символа `:'. Стили шрифта: `r' - прямой, `i' - курсив, `b' - жирный,
++`w' - контурный, `o' - надчеркнутый, `u' - подчеркнутый. По умолчанию
++используется прямой шрифт. Типы выравнивания: `L' - по левому краю (по
++умолчанию), `C' - по центру, `R' - по правому краю. Например, строка
++`iC:b' соответствует курсиву синего цвета с выравниванием по центру. По
++умолчанию используются параметры, определенные командой *note font::.
++
++ Если строка содержит символы `aA', то текст выводится в абсолютных
++координатах (полагаются в диапазоне [0,1]). При этом используются
++координаты относительно рисунка (если указано `A') или относительно
++последнего *note subplot::/*note inplot:: (если указано `a').
++
++ -- Команда MGL: text `x y' 'text' ['fnt'=" `size=-1.4']
++ -- Команда MGL: text `x y z' 'text' ['fnt'=" `size=-1.4']
++ Выводит строку TEXT от точки {X,Y,Z} шрифтом FNT и размером SIZE.
++
++ -- Команда MGL: text `x y dx dy' 'text' [`size=-1.4']
++ -- Команда MGL: text `x y z dx dy dz' 'text' [`size=-1.4']
++ Выводит строку TEXT от точки {X,Y,Z} вдоль направления {DX,DY,DZ}
++ шрифтом FNT и размером SIZE.
++
++ -- Команда MGL: text ydat 'text' ['fnt'=" `size=-1 zval=nan']
++ -- Команда MGL: text xdat ydat 'text' ['fnt'=" `size=-1 zval=nan']
++ -- Команда MGL: text xdat ydat zdat 'text' ['fnt'=" `size=-1']
++ Выводит строку TEXT вдоль кривой {XDAT[i], YDAT[i], ZDAT[i]}
++ шрифтом FONT. Строка FONT может содержать символы: `t' для вывода
++ текста под кривой (по умолчанию), или `T' для вывода текста над
++ кривой. Если массив XDAT не указан, то используется массив со
++ значениями равно распределенными вдоль оси x. Если массив ZDAT не
++ указан, то используется ZDAT[i] = ZVAL. См. раздел *note Text
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: title 'text' ['fnt'=" `size=-2']
++ Выводит строку TEXT как заголовок (сверху рисунка). Может
++ использоваться в любом месте (даже внутри *note subplot::).
++
++ -- Команда MGL: fgets `x y' 'fname' [`n=0' 'fnt'=" `size=-1.4']
++ -- Команда MGL: fgets `x y z' 'fname' [`n=0' 'fnt'=" `size=-1.4']
++ Выводит N-ую строку файла FNAME от точки {X,Y,Z} шрифтом FNT и
++ размером SIZE.
++
++\1f
++File: mgl_ru.info, Node: Axis and Colorbar, Next: Legend, Prev: Text printing, Up: MGL interface
++
++1.8 Оси и Colorbar
++======================
++
++Эти команды рисуют объекты для "измерения" типа осей координат,
++цветовой таблицы (colorbar), сетку по осям, обрамляющий параллелепипед
++и подписи по осям координат. См. также *note Axis settings::.
++
++ -- Команда MGL: axis ['dir'='xyz' `adjust=off']
++ Рисует оси координат и метки на них (*note Axis settings::) в
++ направлениях, указанных строкой DIR. Если строка содержит символ
++ `_', то подписи меток отображаться не будут. Шрифт подписей
++ определяется командой *note font::. Метки будут "подогнаны" если
++ ADJUST=`on' (с помощью вызова `adjust 'dir'').
++
++ -- Команда MGL: colorbar ['sch'=" `pos=0']
++ Рисует полосу соответствия цвета и числовых значений (colorbar)
++ для цветовой схемы SCH (используется текущая для `sch=''') с краю
++ от графика. Параметр POS задает местоположение: `0' - справа (по
++ умолчанию), `1' - слева, `2' - сверху, `3' - снизу. Если строка
++ SCH содержит `<>^_', то параметр POS определяется как: `pos=0' для
++ `>' (справа), `pos=1' для `<' (слева), `pos=2' для `^' (сверху),
++ `pos=3' для `_' (снизу). Если строка содержит `A', то используются
++ абсолютные координаты (относительно рисунка). См. раздел *note
++ Dens sample::, для примеров кода и графика.
++
++ -- Команда MGL: colorbar vdat ['sch'=" `pos=0']
++ Аналогично предыдущему, но для цветовой схемы без сглаживания с
++ заданными значениями VDAT. См. раздел *note ContD sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: colorbar 'sch' `pos x y w h'
++ Аналогично первому, но в произвольном месте графика {X, Y}
++ (полагаются в диапазоне [0,1]). Параметры W, H задают
++ относительную ширину и высоту colorbar.
++
++ -- Команда MGL: grid ['dir'='xyz' 'pen'='B']
++ Рисует линии сетки в направлениях перпендикулярным DIR. Шаг сетки
++ такой же как у меток осей координат. Стиль линий задается
++ параметром PEN (по умолчанию - сплошная темно синяя линия `B-').
++
++ -- Команда MGL: box ['stl'='k' `ticks=on']
++ Рисует ограничивающий параллелепипед цветом 'stl'. При `ticks=on'
++ рисуются метки в соответствии с текущими настройками осей
++ координат *note axis::.
++
++ -- Команда MGL: xlabel 'text' [`pos=0 size=-1.4 shift=0']
++ -- Команда MGL: ylabel 'text' [`pos=0 size=-1.4 shift=0']
++ -- Команда MGL: zlabel 'text' [`pos=0 size=-1.4 shift=0']
++ -- Команда MGL: tlabel 'text' [`pos=0 size=-1.4 shift=0']
++ Выводит подпись TEXT для x-,y-,z-,t-оси (где `t' - "тернарная" ось
++ t=1-x-y). Параметр POS задает положение подписи: при POS=0 - по
++ центру оси, при POS>0 - около максимальных значений, при POS<0 -
++ около минимальных значений. Параметр SIZE задает размер шрифта (по
++ умолчанию в 1.4 раза больше чем у меток). *Note Text printing::.
++
++\1f
++File: mgl_ru.info, Node: Legend, Next: 1D plotting, Prev: Axis and Colorbar, Up: MGL interface
++
++1.9 Легенда
++==================
++
++Эти команды обеспечивают рисование легенды графика (полезно для *note
++1D plotting::). Запись в легенде состоит из двух строк: одна для стиля
++линии и маркеров, другая с текстом описания (с включенным разбором
++TeX-их команд), накапливаемые во внутренние массивы с помощью команды
++*note addlegend:: или опции *note legend::. Положение легенды можно
++задать автоматически или вручную. Параметры FONT и SIZE задают стиль и
++размер шрифта. Параметр LLEN задает относительную ширину примера линии.
++Ели стиль линии пустой, то соответствующий текст печатается без
++отступа. Если строка FONT содержит символ `A', то координаты легенды
++считаются относительно картинки (а не текущего subplot). См. раздел
++*note Legend sample::, для примеров кода и графика.
++
++ -- Команда MGL: legend [`pos=3' 'fnt'='rL' `size=-1 llen=0.1']
++ Рисует легенду из накопленных записей шрифтом FNT размером SIZE.
++ Параметр POS задает положение легенды: `0' - в нижнем левом углу,
++ `1' - нижнем правом углу, `2' - верхнем левом углу, `3' - верхнем
++ правом углу (по умолчанию).
++
++ -- Команда MGL: legend `x y' ['fnt'='rL' `size=-1 llen=0.1']
++ Рисует легенду из накопленных записей шрифтом FONT размером SIZE.
++ Положение легенды задается параметрами X, Y, которые полагаются
++ нормированными в диапазоне [0,1].
++
++ -- Команда MGL: addlegend 'text' 'stl'
++ Добавляет описание TEXT кривой со стилем STL (*note Line styles::)
++ во внутренний массив записей легенды. Максимальное число записей
++ 100.
++
++ -- Команда MGL: clearlegend
++ Очищает внутренний массив записей легенды.
++
++ -- Команда MGL: legendbox `val'
++ Включает/выключает рисование прямоугольника вокруг легенды. По
++ умолчанию (=`on') прямоугольник рисуется.
++
++ -- Команда MGL: legendmarks `val'
++ Задает число маркеров в легенде. По умолчанию используется 1
++ маркер.
++
++\1f
++File: mgl_ru.info, Node: 1D plotting, Next: 2D plotting, Prev: Legend, Up: MGL interface
++
++1.10 1D графики
++======================
++
++Эти команды строят графики для одномерных (1D) массивов. Одномерными
++считаются массивы, зависящие только от одного параметра (индекса)
++подобно кривой в параметрической форме {x(i),y(i),z(i)}, i=1...n. Есть
++5 основных типов 1D графиков: линия (*note plot::), линия с заполнением
++(*note area::), ступеньки (*note step::), прямоугольники (*note bars::,
++*note barh::) и вертикальные линии (*note stem::). Все эти типы
++графиков имеют похожий интерфейс. Есть версии для рисования в
++пространстве и на плоскости. В последнем случае имеется возможность
++использования только одного массива. Стиль линии и маркеров указывается
++строковой переменной. Если она равна `'''. Кроме того, есть еще
++несколько типов графиков для одномерных массивов, имеющих другой
++интерфейс и вид: поверхность вращения кривой (*note torus::), диаграмма
++(*note chart::), размер ошибки (*note error::), маркеры переменного
++размера (*note mark::), трубками (*note tube::) и т.д. См. раздел *note
++1D plot sample::, для примеров кода и графика.
++
++ График рисуется для каждой строки если один из массивов матрица.
++Размер по 1-ой координате *должен быть одинаков* для всех массивов
++`xdat.nx=ydat.nx=zdat.nx'. Если массив XDAT не указан, то используется
++массив со значениями равно распределенными вдоль оси x. Если массив
++ZDAT не указан, то используется ZDAT[i] = ZVAL. Строка STL задает цвет
++и стиль линии и маркеров (*note Line styles::). По умолчанию (`stl=''')
++рисуется сплошная линия с текущим цветом из палитры.
++
++ -- Команда MGL: plot ydat ['stl'=" `zval=nan']
++ -- Команда MGL: plot xdat ydat ['stl'=" `zval=nan']
++ -- Команда MGL: plot xdat ydat zdat ['stl'="]
++ Рисует ломанную линию между точками {X[i], Y[i], Z[i]}. См. также
++ *note area::, *note step::, *note stem::, *note tube::, *note
++ mark::, *note error::, *note belt::, *note tens::. См. раздел
++ *note Plot sample::, для примеров кода и графика.
++
++ -- Команда MGL: radar adat ['stl'=" `r=-1']
++ Рисует radar chart, представляющий собой ломанную с вершинами на
++ радиальных линиях (типа ломанной в полярных координатах). График
++ рисуется для каждой строки если один из массивов матрица. Параметр
++ R задает дополнительный сдвиг данных (т.е. используется A+R вместо
++ A). Если `r<0', то `r=max(0, -min(a)'. Если STL содержит символ
++ `#', то также рисуется "сетка" (радиальные линии и круг для R).
++ См. также *note plot::. См. раздел *note Radar sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: tens ydat cdat ['stl'=" `zval=nan']
++ -- Команда MGL: tens xdat ydat cdat ['stl'=" `zval=nan']
++ -- Команда MGL: tens xdat ydat zdat cdat ['stl'="]
++ Рисует ломанную линию по точкам {X[i], Y[i], Z[i]} с цветом,
++ определяемым массивом C[i] (типа графика натяжений). См. также
++ *note plot::, *note mesh::, *note fall::. См. раздел *note Tens
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: area ydat ['stl'=" `zval=nan']
++ -- Команда MGL: area xdat ydat ['stl'=" `zval=nan']
++ -- Команда MGL: area xdat ydat zdat ['stl'="]
++ Рисует ломанную линию по точками {XDAT[i], YDAT[i], ZDAT[i]} и
++ закрашивает ее вниз до плоскости осей координат. Можно
++ использовать градиентное закрашивание если число указанных цветов
++ в STL равно удвоенному числу кривых для построения. Если строка
++ содержит символ `a', то линии рисуются одна поверх другой (с
++ суммированием) - того же эффекта можно достичь вызовом `cumsum
++ ydat 'y'' перед построением графика. См. также *note plot::, *note
++ bars::, *note stem::, *note region::. См. раздел *note Area
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: region fdat gdat ['stl'=" `inside=off']
++ -- Команда MGL: region xdat fdat gdat ['stl'=" `inside=off']
++ Закрашивает область между 2 кривыми {XDAT[i], FDAT[i]} и {XDAT[i],
++ GDAT[i]}. При `inside=off' закрашивается только область y1<y<y2,
++ в противном случае также будет закращена область y2<y<y1. Можно
++ использовать градиентное закрашивание если число указанных цветов
++ STL равно удвоенному числу кривых для построения. См. также *note
++ area::, *note bars::, *note stem::. См. раздел *note Region
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: stem ydat ['stl'=" `zval=nan']
++ -- Команда MGL: stem xdat ydat ['stl'=" `zval=nan']
++ -- Команда MGL: stem xdat ydat zdat ['stl'="]
++ Рисует вертикальные линии из точек {XDAT[i], YDAT[i], ZDAT[i]} до
++ плоскости осей координат. См. также *note area::, *note bars::,
++ *note plot::, *note mark::. См. раздел *note Stem sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: bars ydat ['stl'=" `zval=nan']
++ -- Команда MGL: bars xdat ydat ['stl'=" `zval=nan']
++ -- Команда MGL: bars xdat ydat zdat ['stl'="]
++ Рисует вертикальные полосы (прямоугольники) из точек {XDAT[i],
++ YDAT[i], ZDAT[i]} до плоскости осей координат. Если строка STL
++ содержит символ `a', то линии рисуются одна поверх другой. Если
++ строка содержит символ `f', то рисуется график типа waterfall для
++ определения кумулятивного эффекта последовательности положительных
++ и отрицательных значений. Можно использовать разные цвета для
++ положительных и отрицательных значений если число указанных цветов
++ равно удвоенному числу кривых для построения. См. также *note
++ barh::, *note area::, *note stem::, *note chart::. См. раздел
++ *note Bars sample::, для примеров кода и графика.
++
++ -- Команда MGL: barh xdat ['stl'=" `zval=nan']
++ -- Команда MGL: barh ydat xdat ['stl'=" `zval=nan']
++ Рисует горизонтальные полосы (прямоугольники) из точек {XDAT[i],
++ YDAT[i]} до плоскости оси y. Если массив YDAT не указан, то
++ используется массив со значениями равно распределенными вдоль оси
++ y. Если строка STL содержит символ `a', то линии рисуются одна
++ поверх другой. Если строка содержит символ `f', то рисуется график
++ типа waterfall для определения кумулятивного эффекта
++ последовательности положительных и отрицательных значений. Можно
++ использовать разные цвета для положительных и отрицательных
++ значений если число указанных цветов равно удвоенному числу кривых
++ для построения. См. также *note bars::. См. раздел *note Barh
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: chart adat ['col'="]
++ Рисует цветные полосы (пояса) для массива данных ADAT. Число полос
++ равно числу строк ADAT (равно A.NY). Цвет полос поочередно
++ меняется из цветов указанных в COL или в палитре (если `col=''').
++ Пробел в цветах соответствует прозрачному "цвету", т.е.
++ соответствующая полоса не рисуется. Ширина полосы пропорциональна
++ значению элемента в ADAT. График строится только для массивов не
++ содержащих отрицательных значений. Если строка COL содержит `#',
++ то рисуется также черная граница полос. График выглядит лучше в 3d
++ (после вращения системы координат) и/или в полярной системе
++ координат (становится Pie chart). См. раздел *note Chart sample::,
++ для примеров кода и графика.
++
++ -- Команда MGL: step ydat ['stl'=" `zval=nan']
++ -- Команда MGL: step xdat ydat ['stl'=" `zval=nan']
++ -- Команда MGL: step xdat ydat zdat ['stl'="]
++ Рисует ступеньки для точек массива {XDAT[i], YDAT[i], ZDAT[i]}.
++ См. также *note plot::, *note stem::, *note tile::, *note boxs::.
++ См. раздел *note Step sample::, для примеров кода и графика.
++
++ -- Команда MGL: torus zdat ['stl'="]
++ -- Команда MGL: torus rdat zdat ['stl'="]
++ Рисует поверхность вращения кривой {RDAT[i], ZDAT[i], ZDAT[i]}
++ относительно оси *note axialdir::. Если массив RDAT не указан, то
++ используется массив со значениями равно распределенными вдоль оси
++ x. См. также *note plot::, *note axial::. См. раздел *note Torus
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: tube ydat rdat ['stl'=" `zval=nan']
++ -- Команда MGL: tube ydat `rval' ['stl'=" `zval=nan']
++ -- Команда MGL: tube xdat ydat rdat ['stl'=" `zval=nan']
++ -- Команда MGL: tube xdat ydat `rval' ['stl'=" `zval=nan']
++ -- Команда MGL: tube xdat ydat zdat rdat ['stl'="]
++ -- Команда MGL: tube xdat ydat zdat `rval' ['stl'="]
++ Рисует трубу радиуса RDAT[i] (or RVAL) вдоль кривой между точками
++ {XDAT[i], YDAT[i], ZDAT[i]}. См. также *note plot::. См. раздел
++ *note Tube sample::, для примеров кода и графика.
++
++ -- Команда MGL: mark ydat rdat ['stl'=" `zval=nan']
++ -- Команда MGL: mark xdat ydat rdat ['stl'=" `zval=nan']
++ -- Команда MGL: mark xdat ydat zdat rdat ['stl'="]
++ Рисует маркеры размером RDAT[i]*`marksize' в точках {XDAT[i],
++ YDAT[i], ZDAT[i]}. Для рисования маркеров одинакового размера
++ можно использовать функцию `plot' с невидимой линией (со стилем
++ содержащим ` '). См. также *note plot::, *note textmark::, *note
++ stem::, *note error::. См. раздел *note Mark sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: textmark ydat 'txt' ['stl'=" `zval=nan']
++ -- Команда MGL: textmark ydat rdat 'txt' ['stl'=" `zval=nan']
++ -- Команда MGL: textmark xdat ydat rdat 'txt' ['stl'=" `zval=nan']
++ -- Команда MGL: textmark xdat ydat zdat rdat 'txt' ['stl'="]
++ Рисует текст TXT как маркер с размером пропорциональным
++ RDAT[i]*`marksize' в точках {XDAT[i], YDAT[i], ZDAT[i]}. Если
++ массив RDAT не указан, то полагается RDAT[i] = 1. См. также *note
++ plot::, *note mark::, *note stem::. См. раздел *note TextMark
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: error ydat yerr ['stl'=" `zval=nan']
++ -- Команда MGL: error xdat ydat yerr ['stl'=" `zval=nan']
++ -- Команда MGL: error xdat ydat xerr yerr ['stl'=" `zval=nan']
++ Рисует размер ошибки {XERR[i], YERR[i]} в точках {XDAT[i],
++ YDAT[i]} на плоскости Z = ZVAL. Такой график полезен для
++ отображения ошибки эксперимента, вычислений и пр. См. также *note
++ plot::. См. раздел *note Error sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: boxplot adat ['stl'=" `zval=nan']
++ -- Команда MGL: boxplot xdat adat ['stl'=" `zval=nan']
++ Рисует boxplot (называемый также как box-and-whisker diagram или
++ как "ящик с усами") в точках XDAT[i] на плоскости Z = ZVAL. Это
++ график, компактно изображающий распределение вероятностей
++ ADAT[i,j] (минимум, нижний квартиль (Q1), медиана (Q2), верхний
++ квартиль (Q3) и максимум) вдоль второго (j-го) направления. См.
++ также *note plot::, *note error::, *note bars::. См. раздел *note
++ BoxPlot sample::, для примеров кода и графика.
++
++\1f
++File: mgl_ru.info, Node: 2D plotting, Next: 3D plotting, Prev: 1D plotting, Up: MGL interface
++
++1.11 2D графики
++======================
++
++Эти команды строят графики для двумерных (2D) массивов. Двумерными
++считаются массивы, зависящие только от двух параметров (индексов)
++подобно матрице f(x_i,y_j), i=1...n, j=1...m. Есть несколько основных
++типов 2D графиков: сплошная поверхность (*note surf::), сетчатая
++поверхность (*note mesh::), поверхность из ящиков (*note boxs::),
++поверхность из плиток (*note tile::), водопад (*note fall::), ленточки
++(*note belt::), график плотности (*note dens::), линии уровня (*note
++cont::), линии уровня с заполнением (*note contf::) и результат их
++вращения (*note axial::). В функциях *note cont::, *note contf:: и
++*note axial:: значения уровней можно задавать автоматически и вручную.
++Можно также нарисовать сетку (*note grid::) по массиву данных для
++улучшения вида графика плотности или линий уровня. Каждый тип графика
++имеет похожий интерфейс. Есть версия для рисования одного массива с
++автоматическими координатами и версия для параметрически заданной
++поверхности. См. раздел *note 1D plot sample::, для примеров кода и
++графика.
++
++ Строка SCH задает цветовую схему (*note Color scheme::. Предыдущая
++цветовая схема используется по умолчанию. Младшие размерности массивов
++XDAT, YDAT, ZDAT должны быть одинаковы `xdat.nx=zdat.nx &&
++ydat.nx=zdat.ny' или `xdat.nx=ydat.nx=zdat.nx &&
++xdat.ny=ydat.ny=zdat.ny'. Массивы XDAT и YDAT могут быть векторами (не
++матрицами как ZDAT). Если массивы XDAT, YDAT не указаны, то
++используются массивы со значениями равно распределенными вдоль осей x,
++y. График строится для каждого z среза данных.
++
++ -- Команда MGL: surf zdat ['sch'="]
++ -- Команда MGL: surf xdat ydat zdat ['sch'="]
++ Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
++ ZDAT[i,j]}. Если SCH содержит `#', то на поверхности рисуется
++ сетка. См. также *note mesh::, *note dens::, *note belt::, *note
++ tile::, *note boxs::, *note surfc::, *note surfa::. См. раздел
++ *note Surf sample::, для примеров кода и графика.
++
++ -- Команда MGL: mesh zdat ['sch'="]
++ -- Команда MGL: mesh xdat ydat zdat ['sch'="]
++ Рисует сетчатую поверхность, заданную параметрически {XDAT[i,j],
++ YDAT[i,j], ZDAT[i,j]}. См. также *note surf::, *note fall::, *note
++ meshnum::, *note cont::, *note tens::. См. раздел *note Mesh
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: fall zdat ['sch'="]
++ -- Команда MGL: fall xdat ydat zdat ['sch'="]
++ Рисует водопад для параметрически заданной поверхности {XDAT[i,j],
++ YDAT[i,j], ZDAT[i,j]}. График удобен для построения нескольких
++ кривых, сдвинутых вглубь друг относительно друга. Если SCH
++ содержит `x', то линии рисуются вдоль x-оси (по умолчанию линии
++ рисуются вдоль y-оси). См. также *note belt::, *note mesh::, *note
++ tens::, *note meshnum::. См. раздел *note Fall sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: belt zdat ['sch'="]
++ -- Команда MGL: belt xdat ydat zdat ['sch'="]
++ Рисует ленточки для параметрически заданной поверхности
++ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. Если SCH содержит `x', то линии
++ рисуются вдоль x-оси (по умолчанию линии рисуются вдоль y-оси).
++ См. также *note fall::, *note surf::, *note plot::, *note
++ meshnum::. См. раздел *note Belt sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: boxs zdat ['sch'="]
++ -- Команда MGL: boxs xdat ydat zdat ['sch'="]
++ Рисует вертикальные ящики для параметрически заданной поверхности
++ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. См. также *note surf::, *note
++ dens::, *note tile::, *note step::. См. раздел *note Boxs
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: tile zdat ['sch'="]
++ -- Команда MGL: tile xdat ydat zdat ['sch'="]
++ Рисует плитки для параметрически заданной поверхности {XDAT[i,j],
++ YDAT[i,j], ZDAT[i,j]}. График может использоваться как 3d
++ обобщение *note step::. См. также *note surf::, *note boxs::,
++ *note step::, *note tiles::. См. раздел *note Tile sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: dens zdat ['sch'=" `zval=nan']
++ -- Команда MGL: dens xdat ydat zdat ['sch'=" `zval=nan']
++ Рисует график плотности для параметрически заданной поверхности
++ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL. Если SCH содержит
++ `#', то рисуется сетка. См. также *note surf::, *note cont::,
++ *note contf::, *note boxs::, *note tile::, `dens[xyz]'. См. раздел
++ *note Dens sample::, для примеров кода и графика.
++
++ -- Команда MGL: cont vdat zdat ['sch'=" `zval=nan']
++ -- Команда MGL: cont vdat xdat ydat zdat ['sch'=" `zval=nan']
++ Рисует линии уровня для параметрически заданной поверхности
++ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL (или при Z=VDAT[k]
++ если `zval==nan'). Линии уровня рисуются для Z=VDAT[k]. Если SCH
++ содержит `#', то рисуется сетка. Если SCH содержит `t' или `T', то
++ значения VDAT[k] будут выведены вдоль контуров над (или под)
++ кривой. См. также *note dens::, *note contf::, *note contd::,
++ *note axial::, `cont[xyz]'. См. раздел *note Cont sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: cont zdat ['sch'=" `num=7 zval=nan']
++ -- Команда MGL: cont xdat ydat zdat ['sch'=" `num=7 zval=nan']
++ Как предыдущий с вектором V из NUM элементов равно распределенных
++ в интервале цветовой шкалы (см., *note caxis::).
++
++ -- Команда MGL: contf vdat zdat ['sch'=" `zval=nan']
++ -- Команда MGL: contf vdat xdat ydat zdat ['sch'=" `zval=nan']
++ Рисует закрашенные линии (контуры) уровня для параметрически
++ заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z =
++ ZVAL (или при Z=V[k] если `zval=nan'). Линии уровня рисуются для
++ Z=VDAT[k]. Если SCH содержит `#', то рисуется сетка. См. также
++ *note dens::, *note cont::, *note contd::, `contf[xyz]'. См.
++ раздел *note ContF sample::, для примеров кода и графика.
++
++ -- Команда MGL: contf zdat ['sch'=" `num=7 zval=nan']
++ -- Команда MGL: contf xdat ydat zdat ['sch'=" `num=7 zval=nan']
++ Как предыдущий с вектором V из NUM элементов равно распределенных
++ в интервале цветовой шкалы (см., *note caxis::).
++
++ -- Команда MGL: contd vdat zdat ['sch'=" `zval=nan']
++ -- Команда MGL: contd vdat xdat ydat zdat ['sch'=" `zval=nan']
++ Рисует закрашенные линии (контуры) уровня для параметрически
++ заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z =
++ ZVAL (или при Z=V[k] если `zval==nan') цветами заданными явно.
++ Линии уровня рисуются для Z=VDAT[k]. Строка SCH задает цвет
++ контуров: цвет k-го контура определяется символом
++ `sch[k%strlen(sch)]'. См. также *note dens::, *note cont::, *note
++ contf::, `cont[xyz]'. См. раздел *note ContD sample::, для
++ примеров кода и графика.
++
++ -- Команда MGL: contd zdat ['sch'=" `num=7 zval=nan']
++ -- Команда MGL: contd xdat ydat zdat ['sch'=" `num=7 zval=nan']
++ Как предыдущий с вектором V из NUM элементов равно распределенных
++ в интервале цветовой шкалы (см., *note caxis::).
++
++ -- Команда MGL: axial vdat zdat ['sch'="]
++ -- Команда MGL: axial vdat xdat ydat zdat ['sch'="]
++ Рисует поверхность вращения линии уровня для параметрически
++ заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. Линии
++ уровня рисуются для ZDAT[i,j]=VDAT[k]. Если SCH содержит `#', то
++ рисуется сетчатая поверхность. Если строка содержит символы `x',
++ `y' или `z', то ось вращения устанавливается в указанное
++ направление (по умолчанию вдоль оси *note axialdir::). См. также
++ *note cont::, *note contf::, *note torus::, *note surf3::. См.
++ раздел *note Axial sample::, для примеров кода и графика.
++
++ -- Команда MGL: axial zdat ['sch'=" `num=3']
++ -- Команда MGL: axial xdat ydat zdat ['sch'=" `num=3']
++ Как предыдущий с вектором V из NUM элементов равно распределенных
++ в интервале цветовой шкалы (см., *note caxis::).
++
++ -- Команда MGL: grad pdat ['sch'=" `num=5 zval=nan']
++ -- Команда MGL: grad xdat ydat pdat ['sch'=" `num=5 zval=nan']
++ -- Команда MGL: grad xdat ydat zdat pdat ['sch'=" `num=5']
++ Рисует линии градиента скалярного поля PDAT заданного
++ параметрически {XDAT[i,j], YDAT[i,j]} или {XDAT[i,j,k],
++ YDAT[i,j,k], ZDAT[i,j,k]}. Число линий пропорционально NUM. Линии
++ рисуются только с границ интервала при NUM<0. См. также *note
++ dens::, *note cont::, *note dens3::, *note cont3::, *note flow::.
++ См. раздел *note Grad sample::, для примеров кода и графика.
++
++ -- Команда MGL: grid2 zdat ['sch'=" `zval=nan']
++ -- Команда MGL: grid2 xdat ydat zdat ['sch'=" `zval=nan']
++ Рисует плоскую сету для параметрически заданной поверхности
++ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL. См. также *note
++ dens::, *note cont::, *note contf::.
++
++\1f
++File: mgl_ru.info, Node: 3D plotting, Next: Dual plotting, Prev: 2D plotting, Up: MGL interface
++
++1.12 3D графики
++======================
++
++Эти функции строят графики для трехмерных (3D) массивов. Трехмерными
++считаются массивы, зависящие от трех параметров (индексов) подобно
++матрице f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l. Есть 5 основных
++типов 3D графиков: поверхность постоянного уровня (*note surf3::),
++график плотности на срезе (DENS3), линии уровня на срезе (*note
++cont3::), закрашенные контуры уровня на срезе (*note contf3::) и график
++объемной прозрачности типа облака (*note cloud::). В функциях *note
++cont3::, *note contf3:: и *note surf3:: значения уровней можно задавать
++автоматически и вручную. Можно также нарисовать на срезе сетку (*note
++grid3::) по массиву данных для улучшения вида графика плотности или
++линий уровня. Каждый тип графика имеет похожий интерфейс. Есть версия
++для рисования одного массива с автоматическими координатами и версия
++для параметрически заданного массива. См. раздел *note 3D plot
++sample::, для примеров кода и графика.
++
++ Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
++цветовая схема используется по умолчанию. Массивы X, Y, Z могут быть
++векторами (не 3d массивами как A). Если массивы XDAT, YDAT, ZDAT не
++указаны, то используются массивы со значениями равно распределенными
++вдоль осей x, y, z.
++
++ -- Команда MGL: surf3 adat `val' ['sch'="]
++ -- Команда MGL: surf3 xdat ydat zdat adat `val' ['sch'="]
++ Рисует поверхность уровня для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
++ ADAT(x,y,z)=VAL. Если SCH содержит `#', то рисуется сетчатая
++ поверхность. См. также *note cloud::, *note dens3::, *note
++ surf3c::, *note surf3a::, *note axial::. См. раздел *note Surf3
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: surf3 adat ['sch'=" `num=5']
++ -- Команда MGL: surf3 xdat ydat zdat adat ['sch'=" `num=5']
++ Рисует NUM поверхностей уровня равномерно распределенных в
++ интервале цветовой шкалы (см. *note caxis::).
++
++ -- Команда MGL: dens3 adat 'dir' [`sval=-1' 'sch'="]
++ -- Команда MGL: dens3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="]
++ Рисует график плотности для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График
++ рисуется на срезе SVAL в направлении DIR={`x', `y', `z'}. Если STL
++ содержит `#', то на срезе рисуется сетка. См. также *note cont3::,
++ *note contf3::, *note dens::, *note grid3::. См. раздел *note
++ Dens3 sample::, для примеров кода и графика.
++
++ -- Команда MGL: densa adat ['sch'="]
++ -- Команда MGL: densa xdat ydat zdat adat ['sch'="]
++ Рисует графики плотности на всех центральных срезах 3d данных.
++
++ -- Команда MGL: cont3 vdat adat 'dir' [`sval=-1' 'sch'="]
++ -- Команда MGL: cont3 vdat xdat ydat zdat adat 'dir' [`sval=-1'
++ 'sch'="]
++ Рисует линии уровня для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). Линии рисуются
++ для значений из массива V на срезе SVAL в направлении DIR={`x',
++ `y', `z'}. Если STL содержит `#', то на срезе рисуется сетка. Если
++ SCH содержит `t' или `T', то значения VDAT[k] будут выведены вдоль
++ контуров над (или под) кривой. См. также *note dens3::, *note
++ contf3::, *note cont::, *note grid3::. См. раздел *note Cont3
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: cont3 adat 'dir' [`sval=-1' 'sch'=" `num=7']
++ -- Команда MGL: cont3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="
++ `num=7']
++ Как предыдущий с вектором V из NUM элементов равно распределенных
++ в интервале цветовой шкалы (см., *note caxis::).
++
++ -- Команда MGL: conta adat ['sch'=" `num=7']
++ -- Команда MGL: conta xdat ydat zdat adat ['sch'=" `num=7']
++ Рисует линии уровня на всех центральных срезах 3d данных.
++
++ -- Команда MGL: contf3 vdat adat 'dir' [`sval=-1' 'sch'="]
++ -- Команда MGL: contf3 vdat xdat ydat zdat adat 'dir' [`sval=-1'
++ 'sch'="]
++ Рисует закрашенные линии (контуры) уровня для 3d массива,
++ заданного параметрически ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k],
++ ZDAT[i,j,k]). Линии рисуются для значений из массива V на срезе
++ SVAL в направлении DIR={`x', `y', `z'}. Если STL содержит `#', то
++ на срезе рисуется сетка. См. также *note dens3::, *note cont3::,
++ *note contf::, *note grid3::. См. раздел *note ContF3 sample::,
++ для примеров кода и графика.
++
++ -- Команда MGL: contf3 adat 'dir' [`sval=-1' 'sch'=" `num=7']
++ -- Команда MGL: contf3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="
++ `num=7']
++ Как предыдущий с вектором V из NUM элементов равно распределенных
++ в интервале цветовой шкалы (см., *note caxis::).
++
++ -- Команда MGL: contfa adat ['sch'=" `num=7']
++ -- Команда MGL: contfa xdat ydat zdat adat ['sch'=" `num=7']
++ Рисует закрашенные линии (контуры) уровня на всех центральных
++ срезах 3d данных.
++
++ -- Команда MGL: grid3 adat 'dir' [`sval=-1' 'sch'="]
++ -- Команда MGL: grid3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="]
++ Рисует сетку для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График
++ рисуется на срезе SVAL в направлении DIR={`x', `y', `z'}. См.
++ также *note cont3::, *note contf3::, *note dens3::, *note grid2::.
++
++ -- Команда MGL: grida adat ['sch'="]
++ -- Команда MGL: grida xdat ydat zdat adat ['sch'="]
++ Рисует сетку на всех центральных срезах 3d данных.
++
++ -- Команда MGL: cloud adat ['sch'="]
++ -- Команда MGL: cloud xdat ydat zdat adat ['sch'="]
++ Рисует облачный график для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График состоит
++ из кубиков с цветом и прозрачностью пропорциональной значениям
++ ADAT. Результат похож на облако - малые значения прозрачны, а
++ большие нет. Число кубиков зависит от *note meshnum::. Параметр
++ ALPHA меняет общую прозрачность графика. См. также *note surf3::.
++ См. раздел *note Cloud sample::, для примеров кода и графика.
++
++ -- Команда MGL: beam tr g1 g2 adat `rval' ['sch'=" `flag=0 num=3']
++ Рисует поверхность уровня для 3d массива ADAT при постоянном
++ значении ADAT=VAL. Это специальный тип графика для ADAT заданного
++ в сопровождающей системе координат вдоль кривой TR с ортами G1, G2
++ и с поперечным размером RVAL. Переменная FLAG - битовый флаг:
++ `0x1' - рисовать в сопровождающих (не лабораторных) координатах;
++ `0x2' - рисовать проекцию на плоскость \rho-z; `0x4' - рисовать
++ нормированное в каждом сечении поле. Размеры массивов по 1-му
++ индексу TR, G1, G2 должны быть nx>2. Размеры массивов по 2-му
++ индексу TR, G1, G2 и размер по 3-му индексу массива ADAT должны
++ быть одинаковы. См. также *note surf3::.
++
++\1f
++File: mgl_ru.info, Node: Dual plotting, Next: Vector fields, Prev: 3D plotting, Up: MGL interface
++
++1.13 Парные графики
++================================
++
++Эти команды строят графики для двух связанных массивов. Есть несколько
++основных типов 3D графиков: поверхность и поверхность уровня с окраской
++по второму массиву (*note surfc::, *note surf3c::), поверхность и
++поверхность уровня с прозрачностью по второму массиву (*note surfa::,
++*note surf3a::), плитки переменного размера (*note tiles::), диаграмма
++точечного отображения (*note map::), STFA диаграмма (*note stfa::). В
++командах *note surf3a:: и *note surf3c:: значения уровней можно
++задавать автоматически и вручную. Каждый тип графика имеет похожий
++интерфейс. Есть версия для рисования одного массива с автоматическими
++координатами и версия для параметрически заданного массива.
++
++ Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
++цветовая схема используется по умолчанию. Массивы X, Y, Z могут быть
++векторами (не 3d массивами как A). Если массивы XDAT, YDAT, ZDAT не
++указаны, то используются массивы со значениями равно распределенными
++вдоль осей x, y, z.
++
++ -- Команда MGL: surfc zdat cdat ['sch'="]
++ -- Команда MGL: surfc xdat ydat zdat cdat ['sch'="]
++ Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
++ ZDAT[i,j]} с цветом, заданным массивом CDAT[i,j]. Если SCH
++ содержит `#', то на поверхности рисуется сетка. См. также *note
++ surf::, *note surfa::, *note surf3c::. См. раздел *note SurfC
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: surf3c adat cdat `val' ['sch'="]
++ -- Команда MGL: surf3c xdat ydat zdat adat cdat `val' ['sch'="]
++ Рисует поверхность уровня для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
++ A(x,y,z)=VAL. Аналогично *note surf3::, но цвет задается массивом
++ CDAT. Если SCH содержит `#', то рисуется сетчатая поверхность. См.
++ также *note surf3::, *note surfc::, *note surf3a::. См. раздел
++ *note Surf3C sample::, для примеров кода и графика.
++
++ -- Команда MGL: surf3c adat cdat ['sch'=" `num=5']
++ -- Команда MGL: surf3c xdat ydat zdat adat cdat ['sch'=" `num=5']
++ Рисует NUM поверхностей уровня равномерно распределенных в
++ интервале цветовой шкалы (см. *note caxis::).
++
++ -- Команда MGL: surfa zdat cdat ['sch'="]
++ -- Команда MGL: surfa xdat ydat zdat cdat ['sch'="]
++ Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
++ ZDAT[i,j]} с прозрачностью, заданным массивом CDAT[i,j]. Если SCH
++ содержит `#', то на поверхности рисуется сетка. См. также *note
++ surf::, *note surfc::, *note surf3a::. См. раздел *note SurfA
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: surf3a adat cdat `val' ['sch'="]
++ -- Команда MGL: surf3a xdat ydat zdat adat cdat `val' ['sch'="]
++ Рисует поверхность уровня для 3d массива, заданного параметрически
++ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
++ A(x,y,z)=VAL. Аналогично *note surf3::, но прозрачность задается
++ массивом CDAT. Если SCH содержит `#', то рисуется сетчатая
++ поверхность. См. также *note surf3::, *note surfa::, *note
++ surf3c::. См. раздел *note Surf3A sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: surf3a adat cdat ['sch'=" `num=5']
++ -- Команда MGL: surf3a xdat ydat zdat adat cdat ['sch'=" `num=5']
++ Рисует NUM поверхностей уровня равномерно распределенных в
++ интервале цветовой шкалы (см. *note caxis::).
++
++ -- Команда MGL: tiles zdat rdat ['sch'="]
++ -- Команда MGL: tiles xdat ydat zdat rdat ['sch'="]
++ Рисует плитки для параметрически заданной поверхности {XDAT[i,j],
++ YDAT[i,j], ZDAT[i,j]}. Аналогично *note tile::, но размер плиток
++ задается массивов RDAT. Это создает эффект "прозрачности" при
++ экспорте в файлы EPS. См. также *note surfa::, *note tile::. См.
++ раздел *note TileS sample::, для примеров кода и графика.
++
++ -- Команда MGL: map udat vdat ['sch'=" `pnts=on']
++ -- Команда MGL: map xdat ydat udat vdat ['sch'=" `pnts=on']
++ Визуализирует точечное отображение для матриц {UDAT, VDAT }
++ параметрически зависящих от координат XDAT, YDAT. Исходное
++ положение ячейки задает ее цвет. Высота пропорциональна якобиану
++ Jacobian(udat,vdat). График является аналогом диаграммы Арнольда.
++ Если `pnts=off', то рисуются грани, иначе цветные точки рисуются в
++ узлах матриц (полезно для "запутанного" отображения). См. раздел
++ *note Map sample::, для примеров кода и графика.
++
++ -- Команда MGL: stfa re im `dn' ['sch'=" `pnts=on']
++ -- Команда MGL: stfa xdat ydat re im `dn' ['sch'=" `pnts=on']
++ Рисует спектрограмму комплексного массива RE+i*`im' для Фурье
++ размером DN точек. Параметр DN - любое четное число. Например в 1D
++ случае, результатом будет график плотности от массива
++ res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn
++ размером {int(nx/dn), dn, ny}. Массивы RE, IM параметрически
++ зависят от координат XDAT, YDAT. См. раздел *note STFA sample::,
++ для примеров кода и графика.
++
++\1f
++File: mgl_ru.info, Node: Vector fields, Next: Other plotting, Prev: Dual plotting, Up: MGL interface
++
++1.14 Векторные поля
++================================
++
++Эти функции рисуют графики для 2D и 3D векторных полей. Есть несколько
++типов графиков: просто векторное поле (*note vect::), вектора вдоль
++траектории (*note traj::), векторное поле каплями (*note dew::), нити
++тока (*note flow::), трубки тока (*note pipe::). Каждый тип графика
++имеет похожий интерфейс. Есть версия для рисования одного массива с
++автоматическими координатами и версия для параметрически заданного
++массива.
++
++ Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
++цветовая схема используется по умолчанию. Все размеры массивов AX и AY
++должны быть одинаковы. Младшие размерности массивов X, Y и AX должны
++быть одинаковы. Массивы X и Y могут быть векторами (не матрицами как
++AX). График строится для каждого z среза AX, AY для 2D случаев.
++
++ -- Команда MGL: traj xdat ydat udat vdat ['sch'=" `zval=nan len=0']
++ -- Команда MGL: traj xdat ydat zdat udat vdat wdat ['sch'=" `len=0']
++ Рисует вектора {UDAT, VDAT, WDAT} вдоль кривой {XDAT, YDAT, ZDAT}.
++ Длина векторов пропорциональна \sqrt{udat^2+vdat^2+wdat^2}. Строка
++ PEN задает цвет (*note Line styles::). По умолчанию (`pen=''').
++ Параметр LEN задает фактор длины векторов (если не нуль) или
++ выбирать длину пропорционально расстоянию между точками кривой
++ (если LEN=0). См. также *note vect::. См. раздел *note Traj
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: vect udat vdat ['sch'=" `zval=nan flag=0']
++ -- Команда MGL: vect xdat ydat udat vdat ['sch'=" `zval=nan flag=0']
++ Рисует векторное поле {UDAT, VDAT} параметрически зависящее от
++ координат XDAT, YDAT на плоскости при Z=ZVAL. Длина и цвет
++ векторов пропорциональна \sqrt{ax^2+ay^2}. Число рисуемых векторов
++ зависит от *note meshnum::. Параметр FLAG побитовый флаг для
++ настройки вид векторов: `1' - двуцветный вектор, `2' - одинаковая
++ длина векторов, `4' - рисует стрелку в точку сетки, `8' - рисует
++ стрелку с серединой в точке сетки, `16' - рисует штрихи вместо
++ стрелок. См. также *note flow::, *note dew::, *note vectc::. См.
++ раздел *note Vect sample::, для примеров кода и графика.
++
++ -- Команда MGL: vect udat vdat wdat ['sch'=" `flag=0']
++ -- Команда MGL: vect xdat ydat zdat udat vdat wdat ['sch'=" `flag=0']
++ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
++ 3d массивами, а длина и цвет пропорциональны
++ \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note Vect 3D sample::,
++ для примеров кода и графика.
++
++ -- Команда MGL: vectc udat vdat ['sch'=" `zval=nan']
++ -- Команда MGL: vectc xdat ydat udat vdat ['sch'=" `zval=nan']
++ Аналогично *note vect:: c `flag=2+16=18'. См. раздел *note VectC
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: vectc udat vdat wdat ['sch'="]
++ -- Команда MGL: vectc xdat ydat zdat udat vdat wdat ['sch'="]
++ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
++ 3d массивами, а длина и цвет пропорциональны
++ \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note VectC 3D sample::,
++ для примеров кода и графика.
++
++ -- Команда MGL: vectl udat vdat ['sch'=" `zval=nan']
++ -- Команда MGL: vectl xdat ydat udat vdat ['sch'=" `zval=nan']
++ Аналогично *note vect:: c `flag=1+16=17'. См. раздел *note VectL
++ sample::, для примеров кода и графика.
++
++ -- Команда MGL: vectl udat vdat wdat ['sch'="]
++ -- Команда MGL: vectl xdat ydat zdat udat vdat wdat ['sch'="]
++ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
++ 3d массивами, а длина и цвет пропорциональны
++ \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note VectL 3D sample::,
++ для примеров кода и графика.
++
++ -- Команда MGL: dew udat vdat ['sch'=" `zval=nan']
++ -- Команда MGL: dew xdat ydat udat vdat ['sch'=" `zval=nan']
++ Рисует капли для векторного поля {UDAT, VDAT}, параметрически
++ зависящего от координат XDAT, YDAT при Z=ZVAL. Замечу, что график
++ требует много памяти и процессорного времени для своего создания!
++ Цвет капель пропорционален \sqrt{ax^2+ay^2}. Число капель
++ определяется *note meshnum::. См. также *note vect::. См. раздел
++ *note Dew sample::, для примеров кода и графика.
++
++ -- Команда MGL: flow udat vdat ['sch'=" `num=5 zval=nan']
++ -- Команда MGL: flow xdat ydat udat vdat ['sch'=" `num=5 zval=nan']
++ Рисует нити тока для векторного поля {UDAT, VDAT}, параметрически
++ зависящего от координат XDAT, YDAT на плоскости при z = ZVAL.
++ Число нитей пропорционально NUM. При NUM>0 нитей могут стартовать
++ и изнутри сетки, в противном случае только с краев. Цвет нитей
++ пропорционален \sqrt{udat^2+vdat^2}. Теплые цвета соответствуют
++ нормальному току (типа стока). Холодные цвета соответствуют
++ обратному току (типа источника). См. также *note pipe::, *note
++ vect::. См. раздел *note Flow sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: flow udat vdat wdat ['sch'=" `num=3']
++ -- Команда MGL: flow xdat ydat zdat udat vdat wdat ['sch'=" `num=3']
++ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
++ 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
++ См. раздел *note Flow 3D sample::, для примеров кода и графика.
++
++ -- Команда MGL: flow `x0 y0' udat vdat ['sch'=" `zval=nan']
++ -- Команда MGL: flow `x0 y0' xdat ydat udat vdat ['sch'=" `zval=nan']
++ Рисует нить тока из точки {X0, Y0} для векторного поля {UDAT,
++ VDAT}, параметрически зависящего от координат XDAT, YDAT на
++ плоскости при z = ZVAL. Цвет нити пропорционален
++ \sqrt{udat^2+vdat^2}. Теплые цвета соответствуют нормальному току
++ (типа стока). Холодные цвета соответствуют обратному току (типа
++ источника).
++
++ -- Команда MGL: flow `x0 y0 z0' udat vdat wdat ['sch'="]
++ -- Команда MGL: flow `x0 y0 z0' xdat ydat zdat udat vdat wdat ['sch'="]
++ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
++ 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
++
++ -- Команда MGL: pipe udat vdat ['sch'=" `r0=0.05 num=5 zval=nan']
++ -- Команда MGL: pipe xdat ydat udat vdat ['sch'=" `r0=0.05 num=5
++ zval=nan']
++ Рисует трубки тока для векторного поля {UDAT, VDAT},
++ параметрически зависящего от координат XDAT, YDAT на плоскости при
++ z = ZVAL. Число трубок пропорционально NUM. При NUM>0 нитей могут
++ стартовать и изнутри сетки, в противном случае только с краев.
++ Цвет и радиус трубок пропорционален \sqrt{udat^2+vdat^2}. Теплые
++ цвета соответствуют нормальному току (типа стока). Холодные цвета
++ соответствуют обратному току (типа источника). Параметр R0 задает
++ радиус трубок. При R0<0 радиус трубок обратно пропорционален их
++ амплитуде. См. также *note flow::, *note vect::. См. раздел *note
++ Pipe sample::, для примеров кода и графика.
++
++ -- Команда MGL: pipe udat vdat wdat ['sch'=" `r0=0.05 num=3']
++ -- Команда MGL: pipe xdat ydat zdat udat vdat wdat ['sch'=" `r0=0.05
++ num=3']
++ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
++ 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
++ См. раздел *note Pipe 3D sample::, для примеров кода и графика.
++
++\1f
++File: mgl_ru.info, Node: Other plotting, Next: Nonlinear fitting, Prev: Vector fields, Up: MGL interface
++
++1.15 Прочие графики
++================================
++
++Это команды, не относящиеся к какой-то специальной категории. Сюда
++входят функции построения графиков по текстовым формулам (*note
++fplot::, *note fsurf::), рисования поверхностей из треугольников (*note
++triplot::), произвольных точек в пространстве (*note dots::) и
++реконструкции по ним поверхности (*note crust::), графики плотности и
++линии уровня на плоскостях, перпендикулярных осям x, y или z
++(dens[xyz], cont[xyz], contf[xyz]). Каждый тип графика имеет похожий
++интерфейс. Есть версия для рисования одного массива с автоматическими
++координатами и версия для параметрически заданного массива. Строка SCH
++задает цветовую схему (*note Color scheme::). Предыдущая цветовая схема
++используется по умолчанию.
++
++ -- Команда MGL: densx dat ['sch'=" `val=nan']
++ -- Команда MGL: densy dat ['sch'=" `val=nan']
++ -- Команда MGL: densz dat ['sch'=" `val=nan']
++ Рисуют график плотности на x, y или z плоскостях. Если DAT - 3d
++ массив, то выполняется интерполяция к заданному срезу VAL. Функции
++ полезны для создания проекций 3D массивов на оси координат. См.
++ также `cont[xyz], contf[xyz]', *note dens::. См. раздел *note Dens
++ projection sample::, для примеров кода и графика.
++
++ -- Команда MGL: contx dat ['sch'=" `val=nan num=7']
++ -- Команда MGL: conty dat ['sch'=" `val=nan num=7']
++ -- Команда MGL: contz dat ['sch'=" `val=nan num=7']
++ Рисуют линии уровня на x, y или z плоскостях. Если DAT - 3d
++ массив, то выполняется интерполяция к заданному срезу VAL. Функции
++ полезны для создания проекций 3D массивов на оси координат. См.
++ также `dens[xyz], contf[xyz]', *note cont::. См. раздел *note Cont
++ projection sample::, для примеров кода и графика.
++
++ -- Команда MGL: contfx dat ['sch'=" `val=nan num=7']
++ -- Команда MGL: contfy dat ['sch'=" `val=nan num=7']
++ -- Команда MGL: contfz dat ['sch'=" `val=nan num=7']
++ Рисуют закрашенные контуры уровня на x, y или z плоскостях. Если
++ DAT - 3d массив, то выполняется интерполяция к заданному срезу
++ VAL. Функции полезны для создания проекций 3D массивов на оси
++ координат. См. также `dens[xyz], cont[xyz]', *note contf::.
++
++ -- Команда MGL: dots xdat ydat zdat ['sch'="]
++ -- Команда MGL: dots xdat ydat zdat adat ['sch'="]
++ Рисует произвольно расположенные точки {XDAT[i], YDAT[i],
++ ZDAT[i]}. Если определен массив ADAT[i], то он задает прозрачность
++ точек. См. также *note crust::, *note mark::, *note plot::. См.
++ раздел *note Dots sample::, для примеров кода и графика.
++
++ -- Команда MGL: crust xdat ydat zdat ['sch'="]
++ Реконструирует и рисует поверхность по произвольно расположенным
++ точкам {XDAT[i], YDAT[i], ZDAT[i]}. Если строка содержит `#', то
++ рисуется сетчатая поверхность. См. также *note dots::, *note
++ triplot::. См. раздел *note Crust sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: triplot idat xdat ydat ['sch'=" `zval=nan']
++ -- Команда MGL: triplot idat xdat ydat zdat ['sch'="]
++ -- Команда MGL: triplot idat xdat ydat zdat cdat ['sch'="]
++ Рисует поверхность из треугольников. Вершины треугольников
++ задаются индексами IDAT в массиве точек {XDAT[i], YDAT[i],
++ ZDAT[i]}. Если строка содержит `#', то рисуется сетчатая
++ поверхность. Размер по 1-му индексу массива IDAT должен быть 3 или
++ больше. Массивы XDAT, YDAT, ZDAT должны иметь одинаковые размеры.
++ Массив CDAT задает цвет треугольников (если IDAT.ny=CDAT.nx) или
++ цвет вершин (если XDAT.nx=CDAT.nx). См. также *note dots::, *note
++ crust::, *note quadplot::, *note tricont::.
++
++ -- Команда MGL: tricont vdat idat xdat ydat zdat cdat ['sch'="
++ `zval=nan']
++ -- Команда MGL: tricont vdat idat xdat ydat zdat ['sch'=" `zval=nan']
++ -- Команда MGL: tricont idat xdat ydat zdat ['sch'=" `num=7 zval=nan']
++ Рисует линии уровня поверхности из треугольников при Z = ZVAL (или
++ для z=VDAT[k] если `zval==NAN'). Вершины треугольников задаются
++ индексами IDAT в массиве точек {XDAT[i], YDAT[i], ZDAT[i]}. Размер
++ по 1-му индексу массива IDAT должен быть 3 или больше. Массивы
++ XDAT, YDAT, ZDAT должны иметь одинаковые размеры. Массив CDAT
++ (если указан) задает цвет треугольников (если IDAT.ny=CDAT.nx) или
++ цвет вершин (если XDAT.nx=CDAT.nx). См. также *note triplot::,
++ *note cont::.
++
++ -- Команда MGL: quadplot idat xdat ydat ['sch'=" `zval=nan']
++ -- Команда MGL: quadplot idat xdat ydat zdat ['sch'="]
++ -- Команда MGL: quadplot idat xdat ydat zdat cdat ['sch'="]
++ Рисует поверхность из четырехугольников. Вершины треугольников
++ задаются индексами IDAT в массиве точек {XDAT[i], YDAT[i],
++ ZDAT[i]}. Если строка содержит `#', то рисуется сетчатая
++ поверхность. Размер по 1-му индексу массива IDAT должен быть 4 или
++ больше. Массивы XDAT, YDAT, ZDAT должны иметь одинаковые размеры.
++ Массив CDAT задает цвет четырехугольников (если IDAT.ny=CDAT.nx)
++ или цвет вершин (если XDAT.nx=CDAT.nx). См. также *note triplot::.
++
++ -- Команда MGL: fplot 'y(x)' ['pen'=" `zval=nan num=100']
++ Рисует функцию `y(x)' в плоскости z=ZVAL с координатой `x' в
++ диапазоне x-оси координат. Параметр NUM задает минимальное число
++ точек по координате для графика. См. также *note plot::.
++
++ -- Команда MGL: fplot 'x(t)' 'y(t)' 'z(t)' ['pen'=" `num=100']
++ Рисует параметрическую кривую {`x(t)', `y(t)', `z(t)'}, где
++ координата `t' меняется в диапазоне [0, 1]. Параметр NUM задает
++ минимальное число точек по координате для графика. См. также *note
++ plot::.
++
++ -- Команда MGL: fsurf 'z(x,y)' ['sch'=" `num=100']
++ Рисует поверхность `z(x,y)' с координатами `x', `y' в диапазоне
++ x-,y-осей координат. Параметр NUM задает минимальное число точек
++ по координатам для графика. См. также *note surf::.
++
++ -- Команда MGL: fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'=" `num=100']
++ Рисует параметрическую поверхность {`x(u,v)', `y(u,v)', `z(u,v)'},
++ где координаты `u', `v' меняются в диапазоне [0, 1]. Параметр NUM
++ задает минимальное число точек по координатам для графика. См.
++ также *note surf::.
++
++\1f
++File: mgl_ru.info, Node: Nonlinear fitting, Next: Data create, Prev: Other plotting, Up: MGL interface
++
++1.16 Nonlinear fitting
++======================
++
++Эти команды подбирают параметры функций для наилучшей аппроксимации
++данных, т.е. минимизируют сумму \sum_i (f(x_i, y_i, z_i) -
++a_i)^2/s_i^2. При этом аппроксимирующая функция `f' может зависеть от
++одного аргумента `x' (1D случай), от двух аргументов `x,y' (2D случай)
++или от трех аргументов `x,y,z' (3D случай). Функция `f' также может
++зависеть от параметров. Список параметров задается строкой VAR
++(например, `abcd'). Обычно пользователь должен предоставить начальные
++значения параметров в переменной INI. Однако, при его отсутствии
++используются нулевые значения.
++
++ Команды *note fit:: и *note fits:: не рисуют полученные массивы. Они
++заполняют массив FIT по формуле `f' с найденными коэффициентами. При
++этом, координаты `x,y,z' равно распределены в вдоль осей координат.
++Число точек в FIT выбирается максимальным из размера массива FIT и 100.
++Формулу с найденными коэффициентами можно вывести с помощью команды
++*note putsfit::. См. раздел *note Fitting sample::, для примеров кода и
++графика.
++
++ Размерность массивов должны быть не меньше, чем число указанных
++массивов XDAT, YDAT, ZDAT. Также подбор коэффициентов будет
++осуществляться только вдоль указанных направлений (например, вдоль x и
++y если указаны только XDAT и YDAT). Если массив XDAT не указан, то
++используется массив со значениями равно распределенными вдоль оси x.
++
++ -- Команда MGL: fits adat sdat 'func' 'var' [ini=0]
++ -- Команда MGL: fits xdat adat sdat 'func' 'var' [ini=0]
++ -- Команда MGL: fits xdat ydat adat sdat 'func' 'var' [ini=0]
++ -- Команда MGL: fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]
++ "Подгоняют" формулу вдоль x-, y- и z-направлений для массива
++ заданного параметрически A[i,j,k](X[i,j,k], Y[i,j,k], Z[i,j,k]) с
++ весовыми коэффициентами SDAT[i,j,k].
++
++ -- Команда MGL: fit adat 'func' 'var' [ini=0]
++ -- Команда MGL: fit xdat adat 'func' 'var' [ini=0]
++ -- Команда MGL: fit xdat ydat adat 'func' 'var' [ini=0]
++ -- Команда MGL: fit xdat ydat zdat adat 'func' 'var' [ini=0]
++ "Подгоняют" формулу вдоль x-, y- и z-направлений для массива
++ заданного параметрически A[i,j,k](X[i,j,k], Y[i,j,k], Z[i,j,k]) с
++ весовыми коэффициентами равными 1.
++
++ -- Команда MGL: putsfit `x y' ['pre'=" 'fnt'=" `size=-1']
++ Печатает последнюю подобранную формулу с найденными коэффициентами
++ в точке {X, Y}. Строка PRE будет напечатана перед формулой. Все
++ другие параметры такие же как в *note Text printing::.
++
++\1f
++File: mgl_ru.info, Node: Data create, Next: Data filling, Prev: Nonlinear fitting, Up: MGL interface
++
++1.17 Создание данных
++==================================
++
++ -- Команда MGL: new dat [`nx=1 ny=1 nz=1']
++ Создает/пересоздает массив с именем DAT данных указанного размера
++ и заполняет его нулями. Ничего не делает при NX, NY, NZ
++ отрицательных или равных нулю.
++
++ -- Команда MGL: var dat `num v1 [v2=nan]'
++ Создает одномерный массив с именем DAT размером `num' и заполняет
++ его равномерно в диапазоне [V1, V2]. Если V2=`nan', то
++ используется V2=V1.
++
++ -- Команда MGL: list dat `v1 ...'
++ Создает массив с именем DAT и заполняет его числовыми значениями
++ аргументов `v1 ...'. Команда может создавать 1d- и 2d-массивы. Для
++ создания 2d-массивов требуется указать разделитель строк данных
++ `|'. Размер массива будет [максимальное число чисел в строке *
++ число строк]. Например, команда `list 1 | 2 3' создаст массив [1
++ 0; 2 3]. Отмечу, что максимальное число аргументов 1000.
++
++ -- Команда MGL: list dat d1 ...
++ Создает массив с именем DAT и заполняет его числами из массивов
++ `d1 ...'. Команда может создавать 2d- и 3d-массивы (если аргументы
++ 2d массивы). Младшие размерности всех массивов в аргументах должны
++ быть равны размерности D1. Отмечу, что максимальное число
++ аргументов 1000.
++
++ -- Команда MGL: copy dat dat2 ['eq'=" `on_axis=on']
++ -- Команда MGL: copy dat `val'
++ Создает массив с именем DAT и копирует в него данные из массива
++ DAT2. При этом, если указан параметр EQ, то данные будут изменены
++ по формуле аналогично команде *note fill:: (для `on_axis=on') или
++ *note modify:: (для `on_axis=off').
++
++ -- Команда MGL: idset dat 'ids'
++ Устанавливает символьные обозначения для колонок данных. Строка
++ должна содержать символы 'a'...'z' один на колонку (без пробелов).
++
++ -- Команда MGL: info dat [`detail=off']
++ Выводит информацию о массиве (размер, максимальное/минимальное
++ значение, моменты и пр.). При `detail=off' показывается только
++ краткая информация.
++
++ -- Команда MGL: info 'text'
++ Выводит текст TEXT как информацию (предупреждение).
++
++\1f
++File: mgl_ru.info, Node: Data filling, Next: Rearrange data, Prev: Data create, Up: MGL interface
++
++1.18 Заполнение данных
++======================================
++
++ -- Команда MGL: fill dat v1 v2 ['dir'='x']
++ Заполняет значениями равно распределенными в диапазоне [V1, V2] в
++ направлении DIR={`x',`y',`z'}.
++
++ -- Команда MGL: fill dat 'eq' [vdat=0 wdat=0]
++ Заполняет значениями вычисленными по формуле EQ. Формула
++ представляет собой произвольное выражение, зависящее от переменных
++ `x', `y', `z', `u', `v', `w'. Координаты `x', `y', `z' полагаются
++ меняющимися в диапазоне осей координат (в отличие от *note
++ modify::). Переменная `u' - значения исходного массива, переменные
++ `v', `w' - значения массивов VDAT, WDAT. Последние могут быть
++ опущены.
++
++ -- Команда MGL: modify dat 'eq' [`dim=0']
++ -- Команда MGL: modify dat 'eq' vdat [wdat=0]
++ Заполняет значениями вычисленными по формуле EQ. Формула
++ представляет собой произвольное выражение, зависящее от переменных
++ `x', `y', `z', `u', `v', `w'. Координаты `x', `y', `z' полагаются
++ меняющимися в диапазоне [0,1] (в отличие от *note fill::).
++ Переменная `u' - значения исходного массива, переменные `v', `w' -
++ значения массивов VDAT, WDAT. Последние могут быть опущены. Если
++ указан DIM>0, то изменяются только слои >=DIM.
++
++ -- MGL command: put dat `val [i=: j=: k=:]'
++ Присваивает значения (под-)массива DAT[I, J, K] = VAL. Индексы I,
++ J, K равные `:' задают значениия VAL для всего диапазона
++ соответствующего направления(ий). Например, `put dat val : 0 :'
++ задает DAT[i,0,j]=VAL для i=0...(DAT.nx-1), j=0...(DAT.nz-1).
++
++ -- MGL command: put dat vdat [`i=: j=: k=:']
++ Копирует значения из массива VDAT в диапазон значений массива DAT.
++ Индексы I, J, K равные `:' задают диапазон изменения значений в
++ соответствующих направление(ях). Младшие размерности массива VDAT
++ должны быть больше выбранного диапазона массива DAT. Например,
++ `put dat v : 0 :' присвоит DAT[i,0,j]=VDAT.ny>DAT.nz ? VDAT[i,j] :
++ VDAT[i], где i=0...(DAT.nx-1), j=0...(DAT.nz-1) и условие
++ vdat.nx>=dat.nx выполнено.
++
++\1f
++File: mgl_ru.info, Node: Rearrange data, Next: File I/O, Prev: Data filling, Up: MGL interface
++
++1.19 Изменение размеров данных
++=====================================================
++
++ -- Команда MGL: rearrange dat `mx [my=0 mz=0]'
++ Изменяет размерность данных без изменения самого массива данных,
++ так что результирующий массив MX*MY*MZ < nx*ny*nz. Если один из
++ параметров MY или MZ ноль, то он будет выбран оптимальным образом.
++ Например, если MY=0, то будет MY=nx*ny*nz/MX и MZ=1.
++
++ -- Команда MGL: extend dat `n1 [n2=0]'
++ Увеличивает размер данных путем вставки (|N1|+1) новых срезов
++ после (для N1>0) или перед (для N1<0) существующими данными. Можно
++ добавить сразу 2 размерности для 1d массива, используя второй
++ параметр N2. Данные в новые срезы будут скопированы из
++ существующих. Например, для N1>0 новый массив будет a_ij^new =
++ a_i^old where j=0...N1. Соответственно, для N1<0 новый массив
++ будет a_ij^new = a_j^old, где i=0...|N1|.
++
++ -- Команда MGL: transpose dat ['dim'='yxz']
++ Транспонирует (меняет порядок размерностей) массив данных. Новый
++ порядок размерностей задается строкой DIM.
++
++ -- Команда MGL: squeeze dat `rx [ry=1 rz=1 sm=off]'
++ Уменьшает размер данных путем удаления элементов с индексами не
++ кратными RX, RY, RZ соответственно. Параметр SMOOTH задает
++ использовать сглаживания (т.е. out[i]=\sum_{j=i,i+r} a[j]/r) или
++ нет (т.е. out[i]=a[j*r]).
++
++ -- Команда MGL: crop dat `n1 n2' 'dir'
++ Обрезает границы данных при I<N1 и I>N2 (при N2>0) или
++ I>`n[xyz]'-N2 (при N2<=0) вдоль направления DIR.
++
++ -- Команда MGL: delete dat
++ Удаляет массив DAT и освобождает использованную память. Может быть
++ полезно для больших неиспользуемых массивов.
++
++ -- Команда MGL: delete dat 'dir' `[pos=off num=0]'
++ Удаляет NUM срезов вдоль направления DIR с позиции POS.
++
++ -- Команда MGL: insert dat 'dir' `[pos=off num=0]'
++ Вставляет NUM срезов вдоль направления DIR с позиции POS и
++ заполняет их нулями.
++
++\1f
++File: mgl_ru.info, Node: File I/O, Next: Make another data, Prev: Rearrange data, Up: MGL interface
++
++1.20 Чтение/сохранение данных
++===================================================
++
++ -- Команда MGL: read dat 'fname'
++ Читает данные из текстового файла с разделителями символом
++ пробела/табуляции с автоматическим определением размера массива.
++ Двойной перевод строки начинает новый срез данных (по направлению
++ z).
++
++ -- Команда MGL: read dat 'fname' `mx [my=1 mz=1]'
++ Читает данные из текстового файла с заданными размерами. Ничего не
++ делается если параметры MX, MY или MZ равны нулю или отрицательны.
++
++ -- Команда MGL: readmat dat 'fname' [`dim=2']
++ Читает данные из текстового файла с размерами, указанными в первых
++ DIM числах файла. При этом переменная DIM задает размерность (1d,
++ 2d, 3d) данных.
++
++ -- Команда MGL: readall dat 'templ' `v1 v2 [dv=1 slice=off]'
++ Объединяет данные из нескольких текстовых файлов. Имена файлов
++ определяются вызовом функции `sprintf(fname,templ,val);', где VAL
++ меняется от V1 до V2 с шагом DV. Данные загружаются один за другим
++ в один и тот же срез данных (при SLICE=`off') или срез-за-срезом
++ (при SLICE=`on').
++
++ -- Команда MGL: readall dat 'templ' `[slice=off]'
++ Объединяет данные из нескольких текстовых файлов, чьи имена
++ удовлетворяют шаблону TEMPL (например, TEMPL=`"t_*.dat"'). Данные
++ загружаются один за другим в один и тот же срез данных (при
++ SLICE=`off') или срез-за-срезом (при SLICE=`on').
++
++ -- Команда MGL: save dat 'fname'
++ Сохраняет массив данных в текстовый файл.
++
++ -- Команда MGL: readhdf dat 'fname' 'dname'
++ Читает массив с именем DNAME из HDF5 или HDF4 файла FNAME.
++
++ -- Команда MGL: savehdf dat 'fname' 'dname'
++ Сохраняет массив под именем DNAME в HDF5 или HDF4 файл FNAME.
++
++ -- Команда MGL: import dat 'fname' 'sch' [`v1=0 v2=1']
++ Читает данные из растрового файла. RGB значения пикселов
++ преобразуются в число в диапазоне [V1, V2] используя цветовую
++ схему SCH (*note Color scheme::).
++
++ -- Команда MGL: export dat 'fname' 'sch' [`v1=0 v2=0']
++ Сохраняет данные в растровый файл. Числовые значения,
++ нормированные в диапазон [V1, V2], преобразуются в RGB значения
++ пикселов, используя цветовую схему SCH (*note Color scheme::).
++ Если V1>=V2, то значения V1, V2 определяются автоматически как
++ минимальное и максимальное значение данных.
++
++\1f
++File: mgl_ru.info, Node: Make another data, Next: Change data, Prev: File I/O, Up: MGL interface
++
++1.21 Создание новых данных
++=============================================
++
++ -- Команда MGL: combine res adat bdat
++ Возвращает в массиве данных RES прямое произведение массивов
++ (наподобие, res[i,j] = adat[i]*bdat[j] и т.д.).
++
++ -- Команда MGL: evaluate res dat idat [`norm=on']
++ -- Команда MGL: evaluate res dat idat jdat [`norm=on']
++ -- Команда MGL: evaluate res dat idat jdat kdat [`norm=on']
++ Возвращает массив данных RES, полученный в результате интерполяции
++ исходного массива в точках других массивов (например,
++ res[i,j]=dat[idat[i,j],jdat[i,j]]). Размеры массивов IDAT, JDAT,
++ KDAT должны совпадать. Координаты в IDAT, JDAT, KDAT полагаются
++ нормированными в диапазон [0,1] (при NORM=`on') или в диапазоны
++ [0,nx], [0,ny], [0,nz] соответственно.
++
++ -- Команда MGL: hist res dat `num v1 v2 [nsub=0]'
++ -- Команда MGL: hist res dat wdat `num v1 v2 [nsub=0]'
++ Возвращает распределение (гистограмму) RES из NUM точек от
++ значений массива DAT в диапазоне [V1, V2]. Массив WDAT задает веса
++ элементов (все веса равны 1 если WDAT не указан). Параметр NSUB
++ задает число дополнительных точек интерполяции (для сглаживания
++ получившейся гистограммы).
++
++ -- Команда MGL: hist res xdat adat
++ -- Команда MGL: hist res xdat ydat adat
++ -- Команда MGL: hist res xdat ydat zdat adat
++ Возвращает распределение (гистограмму) RES от значений массива
++ ADAT, параметрически зависящего от координат {XDAT,YDAT,ZDAT} в
++ диапазоне осей координат. Массив ADAT играет роль веса точки.
++ Число точек в результате RES - максимум из размера RES и 100.
++
++ -- Команда MGL: momentum res dat 'how' ['dir'='z']
++ Возвращает в массиве данных RES момент (1d массив) данных DAT
++ вдоль направления DIR. Строка HOW определяет тип момента. Момент
++ определяется как res_k = \sum_ij how(x_i,y_j,z_k) dat_ij/ \sum_ij
++ a_ij если DIR=`z' и т.д. Координаты `x', `y', `z' - индексы
++ массива в диапазоне [0,1].
++
++ -- Команда MGL: sum res dat 'dir'
++ Возвращает в массиве данных RES результат суммирования DAT вдоль
++ направления(ий) DIR.
++
++ -- Команда MGL: max res dat 'dir'
++ Возвращает в массиве данных RES максимальное значение DAT вдоль
++ направления(ий) DIR. Gets array which is the maximal data values
++ in given direction or direction(s).
++
++ -- Команда MGL: min res dat 'dir'
++ Возвращает в массиве данных RES минимальное значение DAT вдоль
++ направления(ий) DIR.
++
++ -- Команда MGL: resize res dat `mx [my=1 mz=1]'
++ Возвращает массив данных RES размером MX, MY, MZ со значениями
++ полученными интерполяцией значений массива DAT.
++
++ -- Команда MGL: subdata res dat `xx [yy=: zz=:]'
++ Возвращает в RES подмассив массива данных DAT с фиксированными
++ значениями индексов с положительными значениями. Например,
++ `subdata a b : 2' выделяет третью строку (индексы начинаются с
++ нуля), `subdata a b 4 :' выделяет 5-ую колонку, `subdata a b : :
++ 3' выделяет 4-ый срез и т.д.
++
++ -- Команда MGL: trace res dat
++ Возвращает массив REF диагональных элементов DAT[i,i] (для 2D
++ данных) или DAT[i,i,i] (для 3D данных) где i=0...nx-1. В 1D случае
++ возвращается сам массив данных DAT. Размеры массива данных должен
++ быть DAT.ny, DAT.nz >= DAT.nx или DAT.ny, DAT.nz = 1.
++
++ -- Команда MGL: transform dat 'type' real imag
++ Выполняет интегральное преобразование комплексных данных REAL,
++ IMAG в выбранном направлении и возвращает модуль результата в RES.
++ Порядок и тип преобразований задается строкой TYPE: первый символ
++ для x-направления, второй для y-направления, третий для
++ z-направления. Возможные символы: `f' - прямое преобразование
++ Фурье, `i' - обратное преобразование Фурье, `s' - синус
++ преобразование, `c' - косинус преобразование, `h' - преобразование
++ Ханкеля, `n' или ` ' - нет преобразования.
++
++ -- Команда MGL: transforma dat 'type' ampl phase
++ Аналогично предыдущему с заданными амплитудой AMPL и фазой PHASE
++ комплексных чисел.
++
++ -- Команда MGL: stfad res real imag `dn' ['dir'='x']
++ Выполняет оконное преобразование Фурье длиной DN для комплексных
++ данных REAL, IMAG и возвращает модуль результата в RES. Например,
++ для DIR=`x' результат будет иметь размер {int(nx/dn), dn, ny} и
++ будет равен res[i,j,k]=|\sum_d^dn
++ exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn.
++
++ -- Команда MGL: pde res 'ham' ini_re ini_im [`dz=0.1 k0=100']
++ Решает уравнение в частных производных du/dz =
++ i*k0*HAM(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy -
++ псевдо-дифференциальные операторы. Параметры INI_RE, INI_IM задают
++ начальное распределение поля. Координаты в уравнении и в решении
++ полагаются в диапазоне осей координат. Замечу, что внутри этот
++ диапазон увеличивается в 3/2 раза для уменьшения отражения от
++ границ расчетного интервала. Параметр DZ задает шаг по
++ эволюционной координате z. В данный момент использован упрощенный
++ алгоритм, когда все "смешанные" члена (типа `x*p'->x*d/dx)
++ исключаются. Например, в 2D случае это функции типа ham = f(p,z) +
++ g(x,z,u). При этом допускаются коммутирующие комбинации (типа
++ `x*q'->x*d/dy). Переменная `u' используется для обозначения
++ амплитуды поля |u|. Это позволяет решать нелинейные задачи -
++ например, нелинейное уравнение Шредингера `ham='p^2+q^2-u^2''.
++ Также можно указать мнимую часть для поглощения (типа `ham =
++ 'p^2+i*x*(x>0)''), но только если зависимость от `i' линейная,
++ т.е. ham = hre+i*him. См. раздел *note PDE sample::, для примеров
++ кода и графика.
++
++ -- Команда MGL: ray res 'ham' `x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]'
++ Решает систему геометрооптических уравнений d_r_/dt = d HAM/d_p_,
++ d_p_/dt = -d HAM/d_r_. Это гамильтоновы уравнения для траектории
++ частицы в 3D случае. Гамильтониан HAM может зависеть от координат
++ `x', `y', `z', импульсов `p'=px, `q'=py, `v'=pz и времени `t': ham
++ = H(x,y,z,p,q,v,t). Начальная точка (при `t=0') задается
++ переменными {X0, Y0, Z0, P0, Q0, V0}. Параметры DT и TMAX задают
++ шаг и максимальное время интегрирования. Результат RES - массив
++ {x,y,z,p,q,v,t} с размером {7 * int(TMAX/DT+1) }. См. раздел *note
++ Beam tracing sample::, для примеров кода и графика.
++
++ -- Команда MGL: qo2d res 'ham' ini_re ini_im ray [`r=1 k0=100' xx=0
++ yy=0]
++ Решает уравнение в частных производных du/dt =
++ i*k0*HAM(p,q,x,y,|u|)[u] в сопровождающей системе координат, где
++ p=-i/k0*d/dx, q=-i/k0*d/dy - псевдо-дифференциальные операторы.
++ Параметры INI_RE, INI_IM задают начальное распределение поля.
++ Параметр RAY задает опорный луч для сопровождающей системы
++ координат. Можно использовать луч найденный с помощью `ray'.
++ Опорный луч должен быть достаточно гладкий, чтобы система
++ координат была однозначной и для исключения ошибок интегрирования.
++ Если массивы XX и YY указаны, то в них записываются декартовы
++ координаты для каждой точки найденного решения. См. также *note
++ pde::. См. раздел *note Beam tracing sample::, для примеров кода и
++ графика.
++
++ -- Команда MGL: jacobian res xdat ydat [zdat=0]
++ Вычисляет якобиан преобразования {i,j,k} в {XDAT,YDAT,ZDAT}, где
++ координаты {i,j,k} полагаются нормированными в интервал [0,1].
++ Якобиан находится по формуле det||dr_\alpha/d\xi_\beta||, где
++ r={XDAT,YDAT,ZDAT} и \xi={i,j,k}. Все размерности всех массивов
++ должны быть одинаковы. Данные должны быть трехмерными если указаны
++ все 3 массива {XDAT,YDAT,ZDAT} или двумерными если только 2
++ массива {XDAT,YDAT}.
++
++\1f
++File: mgl_ru.info, Node: Change data, Next: Operators, Prev: Make another data, Up: MGL interface
++
++1.22 Изменение данных
++====================================
++
++Эти команды изменяют данные вдоль заданного направления(ий) типа
++например дифференцирования, интегрирования и т.д. Направление
++указывается строкой DIR, которая может содержать символы `x', `y' и/или
++`z', вдоль которых изменения будут применены.
++
++ -- Команда MGL: cumsum dat 'dir'
++ Суммирует с накоплением в выбранном направлении(ях).
++
++ -- Команда MGL: integrate dat 'dir'
++ Выполняет интегрирование (подобно суммированию с накоплением) в
++ выбранном направлении(ях).
++
++ -- Команда MGL: diff dat 'dir'
++ Выполняет дифференцирование в выбранном направлении(ях).
++
++ -- Команда MGL: diff dat xdat ydat [zdat=0]
++ Выполняет дифференцирование данных DAT, параметрически зависящих
++ от координат, в направлении XDAT с YDAT, ZDAT=constant. Параметр
++ ZDAT может быть опущен, что соответствует 2D случаю. Используются
++ следующие формулы (2D случай): da/dx =
++ (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j), где a_i=da/di, a_j=da/dj
++ обозначает дифференцирование вдоль 1-ой и 2-ой размерности.
++ Похожие формулы используются и в 3D случае. Порядок аргументов
++ можно менять - например, если данные a(i,j) зависят от координат
++ {x(i,j), y(i,j)}, то обычная производная по `x' будет равна `diff
++ a x y', а обычная производная по `y' будет равна `diff a y x'.
++
++ -- Команда MGL: diff2 dat 'dir'
++ Выполняет двойное дифференцирование (как в операторе Лапласа) в
++ выбранном направлении(ях).
++
++ -- Команда MGL: sinfft dat 'dir'
++ Выполняет синус преобразование в выбранном направлении(ях). Синус
++ преобразование есть \sum a_i \sin(k i).
++
++ -- Команда MGL: cosfft dat 'dir'
++ Выполняет косинус преобразование в выбранном направлении(ях).
++ Синус преобразование есть \sum a_i \cos(k i).
++
++ -- Команда MGL: hankel dat 'dir'
++ Выполняет преобразование Ханкеля в выбранном направлении(ях).
++ Преобразование Ханкеля есть \sum a_i J_0(k i).
++
++ -- Команда MGL: swap dat 'dir'
++ Меняет местами левую и правую части данных в выбранном
++ направлении(ях). Полезно для отображения результата FFT.
++
++ -- Команда MGL: roll dat 'dir' num
++ Сдвигает данные на NUM ячеек в выбранном направлении(ях).
++ Соответствует замене индекса на I->(I+NUM)%N.
++
++ -- Команда MGL: mirror dat 'dir'
++ Отражает данные в выбранном направлении(ях). Соответствует замене
++ индекса на I->N-I.
++
++ -- Команда MGL: sew dat ['dir'='xyz' `da=2*pi']
++ Удаляет скачки данных (например, скачки фазы после обратных
++ тригонометрических функций) с периодом DA в выбранном
++ направлении(ях).
++
++ -- Команда MGL: smooth data `type' ['dir'='xyz']
++ Сглаживает данные в выбранном направлении(ях) методом TYPE. Сейчас
++ поддерживаются 4 метода: `0' ничего не делает, `1' линейное
++ усреднение по 3 точкам, `2' линейное усреднение по 5 точкам, `3'
++ квадратичное усреднение по 5 точкам.
++
++ -- Команда MGL: envelop dat ['dir'='x']
++ Находит огибающую данных в выбранном направлении. Только одно
++ направление может быть выбрано за раз.
++
++ -- Команда MGL: normsl dat `v1 v2' ['dir'='z' `keep=on sym=off']
++ Нормирует данные срез-за-срезом в выбранном направлении DIR в
++ интервал [V1,V2]. Если SYM=`on', то используется симметричный
++ интервал [-max(|v1|,|v2|), max(|v1|,|v2|)]. Если KEEP=`on', то
++ максимальное значение k-го среза ограничено величиной \sqrt{\sum
++ a_ij(k)/\sum a_ij(0)}.
++
++ -- Команда MGL: norm dat `v1 v2 [sym=off dim=0]'
++ Нормирует данные в интервал [V1,V2]. Если SYM=`on', то
++ используется симметричный интервал [-max(|v1|,|v2|),
++ max(|v1|,|v2|)]. Изменения применяются только к срезам >=DIM.
++
++\1f
++File: mgl_ru.info, Node: Operators, Next: Program flow, Prev: Change data, Up: MGL interface
++
++1.23 Операторы
++=======================
++
++ -- Команда MGL: multo dat dat2
++ Поэлементно умножает массив DAT на DAT2.
++
++ -- Команда MGL: multo dat `val'
++ Умножает каждый элемент на число.
++
++ -- Команда MGL: divto dat dat2
++ Поэлементно делит массив DAT на DAT2.
++
++ -- Команда MGL: divto dat `val'
++ Делит каждый элемент на число.
++
++ -- Команда MGL: addto dat dat2
++ Поэлементно прибавляет DAT2 к массиву DAT.
++
++ -- Команда MGL: addto dat `val'
++ Прибавляет число к каждому элементу.
++
++ -- Команда MGL: subto dat dat2
++ Поэлементно вычитает DAT2 из массива DAT.
++
++ -- Команда MGL: subto dat `val'
++ Вычитает число из каждого элемента.
++
++\1f
++File: mgl_ru.info, Node: Program flow, Next: Command options, Prev: Operators, Up: MGL interface
++
++1.24 Программирование
++=====================================
++
++Эти команды управляют порядком выполнения других команд (условия,
++циклы, подпрограммы), (пере-)определяют аргументы скрипта и пр.
++
++ -- Команда MGL: chdir 'path'
++ Переходит в папку PATH.
++
++ -- Команда MGL: define $N smth
++ Задает N-ый аргумент скрипта равным SMTH. Отмечу, что SMTH
++ используется как есть (с символами `'' если присутствуют).
++ Выполняется только подстановка других макроопределений $0...$9,
++ $a...$z. Здесь N это цифра (0...9) или буква (a...z).
++
++ -- Команда MGL: define name smth
++ Определяет константу (скаляр) с именем `name' и числовым значением
++ `smth'. Позднее она может быть использована как обычное число.
++
++ -- Команда MGL: defchr $N smth
++ Задает N-ый аргумент скрипта равным символу с UTF кодом SMTH.
++ Здесь N это цифра (0...9) или буква (a...z).
++
++ -- Команда MGL: defnum $N smth
++ Задает N-ый аргумент скрипта равным числовому значению SMTH. Здесь
++ N это цифра (0...9) или буква (a...z).
++
++ -- Команда MGL: defpal $N smth
++ Задает N-ый аргумент скрипта равным символу палитры с индексом,
++ найденным из SMTH. Здесь N это цифра (0...9) или буква (a...z).
++
++ -- Команда MGL: call 'fname' [ARG1 ARG2 ... ARG9]
++ Переходит к выполнению (вызывает) подпрограммы FNAME (или внешнего
++ скрипта, если функция не была найдена). Опциональные аргументы
++ передаются в подпрограмму. См. также *note func::.
++
++ -- Команда MGL: func 'fname' [narg=0]
++ Определяет подпрограмму с именем FNAME и задает число требуемых
++ аргументов. Аргументы будут помещены в параметры скрипта $1, $2,
++ ... $9. Отмечу, что выполнение основной программы должно быть
++ остановлено до начала определений подпрограмм. См. также *note
++ stop::, *note return::.
++
++ -- Команда MGL: return
++ Возвращается из подпрограммы.
++
++ -- Команда MGL: if dat 'cond'
++ Начинает блок команд, выполняемый если каждый элемент DAT
++ удовлетворяет условию COND.
++
++ -- Команда MGL: if `val'
++ Начинает блок команд, выполняемый если `val' не ноль.
++
++ -- Команда MGL: elseif dat 'cond'
++ Начинает блок команд, выполняемый если предыдущий `if' или
++ `elseif' не был выполнен и каждый элемент DAT удовлетворяет
++ условию COND.
++
++ -- Команда MGL: elseif `val'
++ Начинает блок команд, выполняемый если предыдущий `if' или
++ `elseif' не был выполнен и `val' не ноль.
++
++ -- Команда MGL: else
++ Начинает блок команд, выполняемый если предыдущий `if' или
++ `elseif' не был выполнен.
++
++ -- Команда MGL: endif
++ Заканчивает определение блока `if/elseif/else'.
++
++ -- Команда MGL: for $N `v1 v2 [dv=1]'
++ Начинает блок команд, выполняемый в цикле с $N-ым аргументом
++ изменяющимся от V1 до V2 с шагом DV. Здесь N это цифра (0...9) или
++ буква (a...z).
++
++ -- Команда MGL: for $N dat
++ Начинает блок команд, выполняемый в цикле с $N-ым аргументом
++ пробегающим значения массива DAT. Здесь N это цифра (0...9) или
++ буква (a...z).
++
++ -- Команда MGL: next
++ Заканчивает блок цикла `for'.
++
++ -- Команда MGL: once `val'
++ Определяет код (между `once on' и `once off') который будет
++ выполнен только один раз. Полезно для работы с большими данными в
++ программах типа UDAV.
++
++ -- Команда MGL: stop
++ Останавливает выполнение скрипта.
++
++\1f
++File: mgl_ru.info, Node: Command options, Next: Suffixes, Prev: Program flow, Up: MGL interface
++
++1.25 Опции команд
++============================
++
++Опции команд позволяют легко настроить вид отдельного графика не меняя
++глобальных настроек для все рисунка. Опции указываются после команды.
++Каждая опция отделяется от предыдущей символом `;'. Опции работают так,
++что запоминают текущие настройки рисунка, применяют собственные
++настройки, выполняют команду и возвращают глобальные настройки обратно.
++Поэтому использование опций для команд обработки данных или настройки
++графика бесполезно.
++
++ Наиболее часто используемые опции - `xrange, yrange, zrange',
++устанавливающие границы изменения осей координат (и тем самым
++автоматических массивов). Например, команда `plot y; xrange 0.1 0.9'
++построит кривую с x-координатой равно распределенной в интервале 0.1
++... 0.9, а не вдоль текущей оси x.
++
++ Полный список опций:
++
++ -- Опция MGL: alpha `val'
++ -- Опция MGL: alphadef `val'
++ Задает величину прозрачности поверхности. Значение должно быть в
++ диапазоне [0, 1]. См. также *note alphadef::
++
++ -- Опция MGL: ambient `val'
++ Задает яркость фонового освещения. Значение должно быть в
++ диапазоне [0, 1]. См. также *note ambient::
++
++ -- Опция MGL: crange `val1 val2'
++ Задает границы цветовой шкалы. См. также *note crange::
++
++ -- Опция MGL: xrange `val1 val2'
++ Задает границы изменения координаты x. См. также *note xrange::
++
++ -- Опция MGL: yrange `val1 val2'
++ Задает границы изменения координаты y. См. также *note yrange::
++
++ -- Опция MGL: zrange `val1 val2'
++ Задает границы изменения координаты z. См. также *note zrange::
++
++ -- Опция MGL: cut `val'
++ Задает обрезание точек за пределами осей координат. См. также
++ *note cut::
++
++ -- Опция MGL: fontsize `val'
++ Задает размер текста. См. также *note font::
++
++ -- Опция MGL: marksize `val'
++ Задает размер маркеров. См. также *note marksize::
++
++ -- Опция MGL: meshnum `val'
++ Задает ориентировочное число линий, стрелок, ячеек и пр. См. также
++ *note meshnum::
++
++ -- Опция MGL: legend 'txt'
++ Добавляет строку 'txt' во внутренний массив записей легенды. Стиль
++ линии и маркера аргумента последней вызванной команды построения
++ *note 1D plotting::. См. также *note legend::
++
++\1f
++File: mgl_ru.info, Node: Suffixes, Next: Utilities, Prev: Command options, Up: MGL interface
++
++1.26 Суффиксы переменных
++==========================================
++
++Суффиксы позволяют быстро получить числовую характеристику (размер,
++максимальное или минимальное значение, сумму элементов и т.д.) массива
++данных и использовать ее как число (скаляр) в аргументах. Суффиксы
++начинаются с точки `.' сразу после (без пробелов) имени переменной и
++временного массива. Например, `a.nx' даст размер массива A по оси х,
++`b(1).max' даст максимальное значение второй строки массива B,
++`(c(:,0)^2).sum' даст сумму квадратов элементов первой колонки массива
++C и т.д.
++
++ Полный список суффиксов:
++*nx, ny, nz*
++ Размер массива в направлении x, y, z соответственно.
++
++*max*
++ Максимальное значение массива.
++
++*min*
++ Минимальное значение массива.
++
++*sum*
++ Сумма элементов массива.
++
++*a*
++ Первый элемент массива (элемент с индексами 0,0,0).
++
++*fst*
++ Первое не нулевое значение массива.
++
++*lst*
++ Последнее не нулевое значение массива.
++
++*mx, my, mz*
++ Положение максимума в направлении x, y, z соответственно.
++
++*ax, ay, az, aa*
++ Положение центра масс в направлении x, y, z соответственно или
++ среднее значение массива.
++
++*wx, wy, wz, wa*
++ Ширина в направлении x, y, z соответственно или дисперсия
++ элементов массива.
++
++*sx, sy, sz, sa*
++ Асимметрия в направлении x, y, z соответственно или элементов
++ массива.
++
++*kx, ky, kz, ka*
++ Эксцесс в направлении x, y, z соответственно или элементов массива.
++
++\1f
++File: mgl_ru.info, Node: Utilities, Prev: Suffixes, Up: MGL interface
++
++1.27 Утилиты для MGL
++==============================
++
++MathGL содержит несколько программ для работы со скриптами MGL. Есть
++утилита для сохранения в растровое (`mgl2png', `mgl2gif') или векторное
++(`mgl2eps', `mgl2svg') изображения. Программа `mglview' показывает
++результат выполнения скрипта MGL и позволяет вращать и настраивать
++график. Также можно транслировать MGL скрипт в C++ файл с помощью
++программы `mgl2cpp'.
++
++ Все эти программы имеют схожий набор аргументов. Первым идет имя
++скрипта, а вторым идет имя выходного файлы (может быть опущено),
++последние аргументы - опции скрипта и программы. К опциям относятся
++параметры скрипта (это `$0, $1, ... $9') и настройки локали. Параметры
++скрипта имеют формат `-Nval', где N=0,1...9 - номер параметра, val -
++его значние. Например, опция `-1test' заменит `$1' на `test' в скрипте.
++Опция -Lval устанавливает локаль в значение val. Например, `-Lutf8'
++будет использовать UTF-8 в скрипте.
++
++ Также можно создавать анимированные изображения GIF или набор JPEG
++файлов с именами `frameNNNN.jpg' (где `NNNN' - номер кадра). Для этого
++в скрипте надо указать параметры анимации для каждого кадра (строками с
++коментариями `##a val' или опциями `-Aval') или в цикле (строкой с
++комментарием `##с v1 v2 [dv]' или опцию `-Cn1:n2'), которые будут
++подставлены в качестве параметра `$0' при последовательном вызове
++скрипта. Для сохранения кадров в JPEG просто добавьте команду `write
++''' в конце скрипта.
++
++\1f
++File: mgl_ru.info, Node: Examples, Next: Samples, Prev: MGL interface, Up: Top
++
++2 MathGL examples
++*****************
++
++This chapter contain information about basic and advanced MathGL, hints
++and samples for all types of graphics. I recommend you read first 2
++sections one after another and at least look on "Hints" section. Also I
++recommend you to look at *note General concepts::. Sample code for some
++of these examples can be found in `http://mathgl.sf.net/pictures.html'
++and in *note Samples::.
++
++* Menu:
++
++* Basic usage::
++* Advanced usage::
++* Data handling::
++* Data plotting::
++* Hints::
++
++\1f
++File: mgl_ru.info, Node: Basic usage, Next: Advanced usage, Up: Examples
++
++2.1 Basic usage
++===============
++
++MGL script can be used by several manners. Each has positive and
++negative sides:
++ * _The using of MGL in UDAV._
++
++ Positive side is the possibility to view the plot at once and to
++ modify it, rotate, zoom or switch on transparency or lighting) by
++ hand or by mouse. Negative sides are: the need of X-terminal.
++
++ * _Direct writing to file in bitmap or vector format without
++ creation of graphical window._
++
++ Positive aspects are: batch processing of similar data set, for
++ example, a set of resulting data files for different calculation
++ parameters), running from the console program, including the
++ cluster calculation), fast and automated drawing, saving pictures
++ for further analysis, or demonstration). Negative sides are: the
++ usage of the external program for picture viewing. Also, the data
++ plotting is non-visual. So, you have to imagine the picture, view
++ angles, lighting and so on) before the plotting. I recommend to
++ use graphical window for determining the optimal parameters of
++ plotting on the base of some typical data set. And later use these
++ parameters for batch processing in console program.
++
++ In this case you can use a set of programs: `mgl2png', `mgl2gif',
++ `mgl2eps', `mgl2svg' or `mglview' for viewing.
++
++ The simplest script is
++box # draw bounding box
++axis # draw axis
++fplot 'x^3' # draw some function
++
++ Just type it in UDAV and press F5. Also you can save it in text file
++`test.mgl' and type in the console `mgl2png test.mgl' what produce file
++`test.mgl.png' with resulting picture.
++
++\1f
++File: mgl_ru.info, Node: Advanced usage, Next: Data handling, Prev: Basic usage, Up: Examples
++
++2.2 Advanced usage
++==================
++
++Now I show several non-obvious features of MGL: several subplots in a
++single picture, curvilinear coordinates, text printing and so on.
++Generally you may miss this section at first reading, but I don't
++recommend it.
++
++* Menu:
++
++* Subplots::
++* Axis and grids::
++* Curvilinear coordinates::
++* Text printing example::
++
++\1f
++File: mgl_ru.info, Node: Subplots, Next: Axis and grids, Up: Advanced usage
++
++2.2.1 Subplots
++--------------
++
++Let me demonstrate possibilities of axes transformation. MathGL has the
++following functions: `SubPlot', `InPlot', `Aspect' and `Rotate', *note
++Transformation matrix::). The order of their calling is strictly
++determined. First, one changes the position of axes in image area,
++functions `SubPlot' and `InPlot'). After that one may rotate the plot,
++function `Rotate'). Finally, one may change aspects of axes, function
++`Aspect'). The following code illustrates the aforesaid it:
++subplot 2 2 0:box
++text -1 1.1 'Just box' 'L'
++inplot 0.2 0.5 0.7 1:box
++text 0 1.2 'Inplot example'
++
++subplot 2 2 1
++rotate 60 40:aspect 1 1 1
++box:text 1 1 1.5 'rotate only' 'R'
++
++subplot 2 2 2
++rotate 60 40:aspect 1 1 2
++box:text 0 0 2 'aspect and rotate'
++
++subplot 2 2 3
++rotate 60 40:aspect 1 2 2
++box:text 0 0 1.5 'Aspect in other direction'
++ Here I used function `text' for printing the text in arbitrary
++position of picture, *note Text printing::). Text coordinates and size
++are connected with axes. However, text coordinates may be everywhere,
++including the outside the bounding box. I shall show its features later
++in *Note Text printing example::.
++
++ Note that several commands can be placed in a string if they are
++separated by `:' symbol.
++
++\0\b[image src="../png/sample1.png"\0\b]
++
++Example of several subplots on the single picture.
++
++\1f
++File: mgl_ru.info, Node: Axis and grids, Next: Curvilinear coordinates, Prev: Subplots, Up: Advanced usage
++
++2.2.2 Axis and grids
++--------------------
++
++MathGL library can draw not only the bounding box but also the axes,
++grids, labels and so on. The limits of axes and their origin (the point
++of intersection) are determined by function `axis'. Also you can use
++`xrange, yrange, zrange' functions (*note Axis settings::). Ticks on
++axis are specified by functions `xtick, ytick, ztick, ttick'. First
++argument the direction for each change will be applied. Second argument
++gives the step between ticks (if positive) or gives the number of ticks
++on the axis (if negative) or set to use logarithmic ticks (if zero).
++Third argument gives numbers of sub-ticks between ticks (default is
++zero). Last argument define the initial ticks position.
++
++ Function `Axis' draws axes. Its textual string shows in which
++directions the axis or axes will be drawn (by default `'xyz'', function
++draws axes in all directions). Function `Grid' draws grid
++perpendicularly to specified directions. Example of axes and grid
++drawing is:
++subplot 2 2 0
++xtick 0.4 3 # sets tick step to 0.5
++ytick 0.4 3 # and draws 3 subticks
++box # should be after the ticks change
++axis 'xy': grid
++text 0 1.3 1 'axis and grid'
++
++xtick -5: ytick -5 # restore back
++subplot 2 2 1:rotate 60 40
++origin 0 0 0
++axis
++xlabel 'x' 1
++ylabel 'y' 1
++zlabel 'z' 1
++text 0 0 1.5 'axis and labels'
++
++subplot 2 2 2:rotate 60 40
++xtick 0.2: ytick 0.2: ztick 0.2 # too low step of ticks
++origin -1 -1 -1
++axis:grid
++text 0 0 1.5 'shift origin and add grid'
++text 0 0 1.2 '(note, too many ticks)'
++
++subplot 2 2 3:rotate 60 40
++xtick -6: ytick -6 # decrease the number of ticks
++axis 'yz'
++ylabel 'y axis'
++zlabel 'z axis'
++text 0 0 1.5 'remove x axis, and'
++text 0 0 1.2 'decrease number of ticks'
++
++ This example shows the importance of the correct choosing of the
++number of ticks on axis. If tick step is too small then its text may
++overlap and becomes unreadable. This code has the example of `Label'
++function. It draws label for axis in specified direction. The text
++position on axis is specified by third argument of `Label' function. If
++it is positive then then text is drawn near the axis maximum, if
++negative then the same takes place near the minimum of axis, if zero -
++then at the center of axis.
++
++\0\b[image src="../png/sample2.png"\0\b]
++
++Example of setting up axis range and axis ticks.
++
++\1f
++File: mgl_ru.info, Node: Curvilinear coordinates, Next: Text printing example, Prev: Axis and grids, Up: Advanced usage
++
++2.2.3 Curvilinear coordinates
++-----------------------------
++
++Now let use curvilinear coordinates. In difference from other systems
++of plot creation, MathGL uses textual formulas for connection of the
++old (data) and new (output) coordinates. This allows one to plot in
++arbitrary coordinates. The following code plots the line Y=0, Z=0 in
++Cartesian, polar, parabolic and spiral coordinates:
++new x 50: new y 50: new z 50
++fill y 0.5 0.5: fill x -1 1 # creates data arrays
++origin -1 1 -1
++
++subplot 2 2 0:rotate 60 40
++plot x y z 'r2'
++axis: grid
++text 0 1.3 1 'cartesian'
++
++subplot 2 2 1:rotate 60 40
++axis 'y*sin(pi*x)' 'y*cos(pi*x)' ''
++plot x y z 'r2'
++axis: grid
++text 0 1.3 1 'cylindrical'
++
++subplot 2 2 2:rotate 60 40
++axis '2*y*x' 'y*y - x*x' ''
++plot x y z 'r2'
++axis: grid
++text 0 1.3 1 'parabolic'
++
++subplot 2 2 3:rotate 60 40
++axis 'y*sin(pi*x)' 'y*cos(pi*x)' 'x+z'
++plot x y z 'r2'
++axis: grid
++text 0 1.3 1 'spiral'
++
++\0\b[image src="../png/sample3.png"\0\b]
++
++Example of curvilinear coordinates
++
++\1f
++File: mgl_ru.info, Node: Text printing example, Prev: Curvilinear coordinates, Up: Advanced usage
++
++2.2.4 Text printing example
++---------------------------
++
++MathGL prints text by vector font. There are functions for manual
++specifying of text position (like `Puts') and for its automatic
++selection (like `Label', `legend' and so on). MathGL prints text always
++in specified position even if it lies outside the bounding box. The
++default size of font is specified by command FONTSIZE. However, the
++actual size of output string depends on position of axes (depends on
++functions `SubPlot', `InPlot'). The switching of the font style
++(italic, bold, wire and so on) can be done for the whole string (by
++function parameter) or inside the string. By default MathGL parses
++TeX-like commands for symbols and indexes (see *note Font styles::).
++Example of MathGL font drawing is:
++text 0 1 'Text can be in ASCII and in Unicode'
++text 0 0.6 'It can be \wire{wire}, \big{big} or #r{colored}'
++text 0 0.2 'One can change style in string: \b{bold}, \i{italic, \b{both}}'
++text 0 -0.2 'Easy to \a{overline} or \u{underline}'
++text 0 -0.6 'Easy to change indexes ^{up} _{down} @{center}'
++text 0 -1 'It parse TeX: \int \alpha \cdot \sqrt3{sin(\pi x)^2 + \gamma_{i_k}} dx'
++
++\0\b[image src="../png/sample4.png"\0\b]
++
++Example of text printing with different font effects
++
++ Another example demonstrate the features of TeX formula parsing.
++text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}', 0, -4
++
++\0\b[image src="../png/samplee.png"\0\b]
++
++Example of TeX formula parsing
++
++\1f
++File: mgl_ru.info, Node: Data handling, Next: Data plotting, Prev: Advanced usage, Up: Examples
++
++2.3 Data handling
++=================
++
++* Menu:
++
++* Array creation::
++* Data changing::
++
++\1f
++File: mgl_ru.info, Node: Array creation, Next: Data changing, Up: Data handling
++
++2.3.1 Array creation
++--------------------
++
++One can put numbers into the data instance by several ways. Let us do
++it for sinus function:
++ * one can create array by `list' command list a 0 0.04 0.16 0.36 0.64 1
++
++ * another way is to copy from "inline" array copy a [0,0.04,0.16,0.36,0.64,1]
++
++ * next way is to fill the data by textual formula with the help of
++ `modify' function new a 6
++ modify a 'x^2'
++
++ * or one may fill the array in some interval and modify it later new a 6
++ fill a 0 1
++ modify a 'u^2'
++
++ * or fill the array using current axis range new a 6
++ fill a '(x+1)^2/4'
++
++ * finally it can be loaded from file new s 6: modify s 'x^2'
++ save s 'sqr.dat' # create file first
++ read a 'sqr.dat' # load it
++
++ * at this one can read only part of data new s 6: modify s 'x^2'
++ save s 'sqr.dat' # create file first
++ read a 'sqr.dat' 5 # load it
++
++ Creation of 2d- and 3d-arrays is mostly the same. One can use direct
++data filling by `list' command
++list a 11 12 13 | 21 22 23 | 31 32 33
++ or by inline arrays
++copy a [[11,12,13],[21,22,23],[31,32,33]]
++ Also data can be filled by formula
++new z 30 40
++fill z 'sin(pi*x)*cos(pi*y)'
++ or loaded from file.
++
++ The only non-obvious thing here is using multidimensional arrays in
++C/C++, i.e. arrays defined like `float dat[40][30];'. Since, formaly
++this arrays element `dat[i]' can address the memory in arbitrary place
++you should use the proper function to convert such arrays to `mglData'
++object. For C++ this is functions like `mglData::Set(float **dat, int
++N1, int N2'. For C this is functions like `mgl_data_set_float2(HMDT d,
++const float **dat, int N1, int N2'. At this, you should keep in mind
++that `nx=N2' and `ny=N1' after conversion.
++
++\1f
++File: mgl_ru.info, Node: Data changing, Prev: Array creation, Up: Data handling
++
++2.3.2 Data changing
++-------------------
++
++MathGL has functions for data processing: differentiating, integrating,
++smoothing and so on. Let us consider some examples. The simplest ones
++are integration and differentiation. The direction in which operation
++will be performed is specified by textual string, which may contain
++symbols `x', `y' or `z'. For example, the call of `diff a 'x'' will
++differentiate data along `x' direction; the call of `integrate a 'xy''
++perform the double integration of data along `x' and `y' directions;
++the call of `diff2 a 'xyz'' will apply 3d Laplace operator to data and
++so on. Example of this operations on 2d array a=x*y is presented in
++code:
++new a 30 40: modify a 'x*y'
++axis 0 0 0 1 1 1
++subplot 2 2 0:rotate 60 40
++surf a: box
++text 0.7 1 1.2 'a(x,y)'
++subplot 2 2 1:rotate 60 40
++diff a 'x': surf a: box
++text 0.7 1 1.2 'da/dx'
++subplot 2 2 2:rotate 60 40
++integrate a 'xy': surf a: box
++text 0.7 1 1.2 '\int da/dx dxdy'
++subplot 2 2 3:rotate 60 40
++diff2 a 'y': surf a: box
++text 0.7 1 1.2 '\int {d^2}a/dxdy dx'
++
++\0\b[image src="../png/sample6.png"\0\b]
++
++Example of data differentiation and integration
++
++ Data smoothing (function `Smooth') is more interesting and
++important. This function has 2 main arguments: type of smoothing and
++its direction. Now 4 methods are supported: `0' does nothing for
++delta=0 or approaches data to zero with the step delta, `1' linear
++averaging by 3 points, `2' linear averaging by 5 points, `3' quadratic
++averaging by 5 points. Let me demonstrate it for 1d case:
++new y0 30
++modify y0 '0.4*sin(2*pi*x)+0.3*cos(3*pi*x)-0.4*sin(4*pi*x)+0.2*rnd'
++copy y1 y0: smooth y1 1
++copy y2 y0: smooth y2 2
++copy y3 y0: smooth y3 3
++
++plot y0 'k': addlegend 'none' 'k'
++plot y1 'r': addlegend 'line 3' 'r'
++plot y2 'g': addlegend 'line 5' 'g'
++plot y3 'b': addlegend 'quad 5' 'b'
++legend: box
++
++\0\b[image src="../png/sample7.png"\0\b]
++
++Example of data smoothing
++
++ Finally one can create new data arrays on base of the existing one:
++extract slice, row or column of data (`SubData'), summarize along some
++of direction(s) (`Sum'), find distribution of data elements (`Hist').
++Note, that all these functions are not thread-safe because they use
++static internal variable for output array. In particular, the using of
++several of them in arguments of the same function will lead to
++unpredictable result.
++
++\1f
++File: mgl_ru.info, Node: Data plotting, Next: Hints, Prev: Data handling, Up: Examples
++
++2.4 Data plotting
++=================
++
++Let me now show how to plot the data. MathGL generally has 2 types of
++plotting functions. Simple variant requires a single data array for
++plotting, other data (coordinates) are considered uniformly distributed
++in interval MIN*MAX. Second variant requires data arrays for all
++coordinates. It allows one to plot rather complex multivalent curves
++and surfaces (in case of parametric dependencies). Argument setting to
++default values allows one to plot data in standard form. Manual
++arguments setting gives possibility for fine tuning of colors,
++positions and view of graphics. Note, that the call of drawing function
++adds something to picture but does not clear the previous plots (as it
++does in Matlab). Another difference from Matlab is that all setup (like
++transparency, lightning, axis borders and so on) must be specified
++*before* plotting functions.
++
++* Menu:
++
++* Plots for 1D data::
++* Plots for 2D data::
++* Plots for 3D data::
++* Surface transparency::
++
++\1f
++File: mgl_ru.info, Node: Plots for 1D data, Next: Plots for 2D data, Up: Data plotting
++
++2.4.1 Plots for 1D data
++-----------------------
++
++Term "1D data" means that data depend on single index (parameter) like
++curve in parametric form {x(i),y(i),z(i)}, i=1...n. There are 5
++generally different types of data representations: simple line plot,
++line plot with filling under it, stairs plot, bar plot and vertical
++lines (*note 1D plotting::). Each type of plotting has similar
++interface. There are 3D version and two 2D versions. One of last
++requires single array. The parameters of line and marks (*note Line
++styles::) are specified by the string argument. If the string parameter
++is `NULL' then solid line with color from palette is used.
++
++ Below I shall show the features of 1D plotting on base of `plot'
++function (*note 1D plotting::). Let us start from sinus plot:
++new y0 50: modify y0 'sin(pi*(2*x-1))'
++subplot 2 2 0
++plot y0: box
++ Style of line is not specified in `plot' function. So MathGL uses the
++solid line with first color of palette (this is blue). Next subplot
++shows array Y1 with 2 rows:
++subplot 2 2 1
++new y1 50 2
++modify y1 'sin(pi*2*x-pi)'
++modify y1 'cos(pi*2*x-pi)/2' 1
++plot y1: box
++ As previously I did not specify the style of lines. As a result,
++MathGL again uses solid line with next colors in palette (there are
++green and red). Now let us plot a circle on the same subplot. The
++circle is parametric curve x=cos(\pi t), y=sin(\pi t). I will set the
++color of the circle (dark yellow, `Y') and put marks `+' at point
++position:
++new x 50: modify x 'cos(pi*2*x-pi)'
++plot x y0 'Y+'
++ Note that solid line is used because I did not specify the type of
++line. The same picture can be achieved by `Plot2' function. Let us draw
++ellipse by orange dash line:
++plot y1(:,0) y(:,1) 'q|'
++
++ Drawing in 3D space is mostly the same. Let us draw spiral with
++default line style. Now its color is 4-th color from palette (this is
++cyan):
++subplot 2 2 2:rotate 60 40
++new z 50: modify z '2*x-1'
++plot x y0 z 'g':box
++ Function `Plot3' does 3D curve plot but for single array. Use it to
++put circle marks on the previous plot:
++new y2 10 3
++modify y2 'cos(pi*(2*x-1-y))'
++modify y2 '2*x-1' 2
++plot y2(:,0) y2(:,1) y2(:,2) 'bo '
++ Note that line style is empty ` ' here. Usage of other 1D plotting
++functions looks similar:
++subplot 2 2 3:rotate 60 40
++bars x y0 z 'r':box
++
++\0\b[image src="../png/sample8.png"\0\b]
++
++Example of 1D data plot
++
++\1f
++File: mgl_ru.info, Node: Plots for 2D data, Next: Plots for 3D data, Prev: Plots for 1D data, Up: Data plotting
++
++2.4.2 Plots for 2D data
++-----------------------
++
++Surfaces `Surf' and other 2D plots (*note 2D plotting::) are drown the
++same simpler as 1D one. The difference is that the string parameter
++specifies not by line style but by the color scheme of the plot (*note
++Color scheme::). Here I draw attention on 4 most interesting color
++schemes. There is gray scheme where color is changed from black to
++white (string `kw') or from white to black (string `wk'). Another
++scheme is useful for accentuation of negative (by blue color) and
++positive (by red color) regions on plot (string `'BbwrR''). Last one is
++the popular "jet" scheme (string `'BbcyrR'').
++
++ Now I shall show the example of a surface drawing. At first let us
++switch lightning on
++light on
++ and draw the surface, considering coordinates x,y to be uniformly
++distributed in interval MIN*MAX
++new a0 50 40
++modify a0 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
++subplot 2 2 0:rotate 60 40
++surf a0: box
++ Color scheme was not specified. So previous color scheme is used. In
++this case it is default color scheme ("jet") for the first plot. Next
++example is a sphere. The sphere is parametrically specified surface:
++new x 50 40: new y 50 40: new z 50 40
++modify x '0.8*sin(2*pi*x)*sin(pi*y)'
++modify y '0.8*cos(2*pi*x)*sin(pi*y)'
++modify z '0.8*cos(pi*y)'
++subplot 2 2 1:rotate 60 40
++surf x y z 'bbwrr': box
++ I set color scheme to `'BbwrR'' that corresponds to red top and blue
++bottom of the sphere.
++
++ Surfaces will be plotted for each of slice of the data if NZ>1. Next
++example draws surfaces for data arrays with NZ=3:
++new a1 50 40 3
++modify a1 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
++modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*sin(3*pi*(x*y))' 1
++modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))' 2
++subplot 2 2 2:rotate 60 40
++alpha on
++surf a1: box
++ Note, that it may entail a confusion. However, if one will use density
++plot then the picture will look better:
++subplot 2 2 3: rotate 60 40
++dens a1: box
++ Note, that the previous color scheme is used in last plots because
++there are no direct specification of the one.
++
++\0\b[image src="../png/sample9.png"\0\b]
++
++Example of surface plot for 2D data
++
++ Drawing of other 2D plots is analogous. The only peculiarity is the
++usage of flag `#'. By default this flag switches on the drawing of a
++grid on plot (`grid' or `mesh' for plots in plain or in volume).
++However, for isosurfaces (including surfaces of rotation `axial') this
++flag switches the face drawing off. Figure becomes wired. The
++following code gives example of flag `#' using (compare with normal
++function drawing as in its description):
++alpha on: light on: light 0 0 0 1
++new a 30 20
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++
++subplot 2 2 0: rotate 40 60
++surf a 'bbcyrr#': box
++subplot 2 2 1: rotate 40 60
++dens a 'bbcyrr#': box
++subplot 2 2 2: rotate 40 60
++cont a 'bbcyrr#': box
++subplot 2 2 3: rotate 40 60
++axial a 'bbcyrr#': box
++
++\0\b[image src="../png/samplea.png"\0\b]
++
++Example of 2D data plot with color scheme contained `#' symbol
++
++\1f
++File: mgl_ru.info, Node: Plots for 3D data, Next: Surface transparency, Prev: Plots for 2D data, Up: Data plotting
++
++2.4.3 Plots for 3D data
++-----------------------
++
++Drawing procedures for 3D plot looks similarly to 1D and 2D plots
++described above. There are 3 general types of 3D plots (*note 3D
++plotting::): (i) plots on slices or on projections, (ii) isosurfaces,
++(iii) cloud-like plots. Plots on slice are clear enough - one specifies
++a slice (as its index or as coordinate value) and MathGL draws contour
++lines or density plot on slice plane. Isosurface gives more
++information. Isosurface is 3D analogue of the contour line `cont'. It
++shows the region where data array values exceed specified isosurface
++level. Plot becomes more informative if one adds transparency,
++lightning or sets color scheme depending on coordinates. Generalization
++of isosurface is the cloud-like plot. For this plot the darker color
++and less transparent regions correspond to higher values of data.
++Contrary, the regions with low values are transparent. For plotting of
++the phase of fields (or beams or pulses) one can use isosurface which
++transparency depends on the other data array (see function `surf3a').
++As example of 3D data plots let us draw the Gaussian beam diffraction
++in space. Beam propagates along X axis:
++alpha on: light on
++light 0 0 0 1
++new a 30 30 30: new b 30 30 30
++modify a 'exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))'
++modify b '16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)'
++caxis 0 1
++
++subplot 2 2 0: rotate 40 60
++surf3 a 'wgk': box
++subplot 2 2 1: rotate 40 60
++densa a: box: axis
++subplot 2 2 2: rotate 40 60
++cloud a: box
++subplot 2 2 3: rotate 40 60
++surf3a b a 'q': box
++
++\0\b[image src="../png/sampleb.png"\0\b]
++
++Example of Gaussian beam diffraction (3D data)
++
++\1f
++File: mgl_ru.info, Node: Surface transparency, Prev: Plots for 3D data, Up: Data plotting
++
++2.4.4 Surface transparency
++--------------------------
++
++MathGL library has advanced features for setting and handling the
++surface transparency. The simplest way to add transparency is the using
++of function `Alpha'. As a result, all further surfaces (and
++isosurfaces, density plots and so on) become transparent. However,
++their look can be additionally improved.
++
++ First, the selected surface will be non-transparent if one sets the
++flag `transparent' before the surface drawing and sets it off after the
++drawing.
++
++ Second, the value of transparency can be different from surface to
++surface. To do it just change the value of `alphadef' before the
++drawing of the selected surface. If its value is close to 0 then the
++surface becomes more and more transparent. Contrary, if its value is
++close to 1 then the surface becomes practically non-transparent. This
++is some analogue of `transparent on'.
++
++ Third feature is the changing of the way how the light goes through
++overlapped surfaces. The variable `transptype' defines it. By default
++the usual transparency is used (`transptype 0') - surfaces below is
++less visible than the upper ones. A "glass-like" transparency
++(`transptype 1') has a different look when the surface just decreases
++the background light (the surfaces are commutable in this case).
++
++ A "neon-like" transparency (`transptype 2') has more interesting
++look. In this case a surface is the light source (like a lamp on the
++dark background) and just adds some intensity to the color. At this,
++the library sets automatically the black color for the background and
++changes the default line color to white.
++
++ As example I shall show the variant of plot from *note Plots for 2D
++data:: (grid drawing is disabled) for different types of transparency.
++\0\b[image src="../png/type0.png"\0\b]
++
++Example of `TranspType=0'.
++
++\0\b[image src="../png/type1.png"\0\b]
++
++Example of `TranspType=1'.
++
++\0\b[image src="../png/type2.png"\0\b]
++
++Example of `TranspType=2'.
++
++\1f
++File: mgl_ru.info, Node: Hints, Prev: Data plotting, Up: Examples
++
++2.5 Hints
++=========
++
++In this section I have included some small hints and advices for the
++improving of the quality of plots and for the demonstration of some
++non-trivial features of MathGL library. In contrast to previous
++examples I showed mostly the idea but not the whole drawing function.
++More examples with the source code can be find at
++`http://mathgl.sf.net/' or in section *note Samples::.
++
++* Menu:
++
++* ``Compound'' graphics::
++* Two axes in one plot::
++* Titles for the plot::
++* Changing of the color range::
++* Management of a point cutting::
++* Vector field visualization::
++* Several light sources::
++* CutMin and CutMax features::
++* Mapping visualization::
++* Log-scaled plot::
++* Nonlinear fitting hints::
++* PDE solving hints::
++* Stereo image::
++
++\1f
++File: mgl_ru.info, Node: ``Compound'' graphics, Next: Two axes in one plot, Up: Hints
++
++2.5.1 "Compound" graphics
++-------------------------
++
++As I noted above, MathGL functions (except the special one, like `clf')
++do not erase the previous plotting but just add the new one. It allows
++one to draw "compound" plots easily. For example, popular Matlab
++command `surfc' can be emulated in MathGL by 2 calls:
++surf a
++cont a 0 7 -1 # draw contours at z = -1
++ Here A is 2-dimensional data for the plotting, `-1' is the value of
++z-coordinate at which the contour should be plotted (at the bottom in
++this example). Analogously, one can draw density plot instead of
++contour lines and so on.
++
++ Another nice plot is contour lines plotted directly on the surface:
++light on # switch on light for the surface
++surf a 'bbcyrr' # select 'jet' colormap for the surface
++cont a 'y' # and yellow color for contours
++ The possible difficulties arise in black&white case, when the color of
++the surface can be close to the color of a contour line. In that case I
++may suggest the following code:
++light on # switch on light for the surface
++surf a 'kw' # select 'gray' colormap for the surface
++caxis -1 0 # first draw for darker surface colors
++conta 'w' # white contours
++caxis 0 1 # now draw for brighter surface colors
++cont a 'k' # black contours
++ The idea is to divide the color range on 2 parts (dark and bright) and
++to select the contrasting color for contour lines for each of part.
++
++ Similarly, one can plot flow thread over density plot of vector
++field amplitude (this is another amusing plot from Matlab) and so on.
++The list of compound graphics can be prolonged but I hope that the
++general idea is clear.
++
++\1f
++File: mgl_ru.info, Node: Two axes in one plot, Next: Titles for the plot, Prev: ``Compound'' graphics, Up: Hints
++
++2.5.2 Two axes in one plot
++--------------------------
++
++Developing the previous hint one can make a plot with 2 or more axes.
++The idea is that the change of settings does not influence on the
++already drawn graphics. So, for 2-axes plot let us set the first axis
++and draw everything concerning it. Then let us setup the second axis
++and draw things for the second axis. The corresponding code is (*note
++2-axes sample::):
++# set up first axis
++axis -1 -1 1 1: origin -1 -1
++axis:fplot 'sin(pi*x)' # draw something in first axis
++# set up second axis
++axis 0 0 1 1: origin 1 1
++axis: fplot 'cos(4*pi*x^2)' # draw something in second axis
++ Note, that the first and the second axes look better if being placed
++in different corners. In the code presented above the first axis is
++placed in the left-bottom corner, and the second one is placed in the
++right-top corner.
++
++\1f
++File: mgl_ru.info, Node: Titles for the plot, Next: Changing of the color range, Prev: Two axes in one plot, Up: Hints
++
++2.5.3 Titles for the plot
++-------------------------
++
++The printing of nice titles for the plot is not so trivial task in
++general case. The problem is that the rotation and aspect change lead
++to different looks for titles of different subplots. So, the resulting
++look is not so good as it could be. The solution is simple - to print
++titles exactly after `subplot' call and before any rotation, aspect
++change and so on! Analogously, the title for the whole picture looks
++better if it is printed first (before any `subplot' calls).
++Alternatively you can use function `title' for plotting title for the
++picture at any time.
++
++\1f
++File: mgl_ru.info, Node: Changing of the color range, Next: Management of a point cutting, Prev: Titles for the plot, Up: Hints
++
++2.5.4 Changing of the color range
++---------------------------------
++
++By default (for the user comfort), the color range is set equal to
++z-range of the plot. However, there are different ranges. So, one can
++obtain amusing plot by the change of color range manually. For example,
++there are plots with one-color bottom (or top) or practically bi-color
++picture and so on.
++
++ For example, compare 2 surfaces:
++subplot 2 1 0
++surf a # usual coloring range
++subplot 2 1 1
++caxis 0 1
++surf a # bottom of the surface have one-colour filling
++
++\1f
++File: mgl_ru.info, Node: Management of a point cutting, Next: Vector field visualization, Prev: Changing of the color range, Up: Hints
++
++2.5.5 Management of a point cutting
++-----------------------------------
++
++Sometimes an experimental or numerical surface has outstanding points.
++Visualization of such surface will lead to the hole(s) in place of such
++points. The standard method of "fighting" - to change data values - is
++not always good and is not so convenient. MathGL library has another
++method - to set variable `cut off'. As a consequence, all outstanding
++points will be projected on the bounding box.
++
++ Such method is good not only for outstanding points but also for the
++case when one need to plane the bottom or the top of the plot. Exactly
++such case is demonstrated in the code:
++new a 20 30 # create some data
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++# set lower border above the data minimal value
++axis -1 -1 0 1 1 1:rotate 40 60
++cut off # set off cutting flag
++surf a # and draw the surface
++ It is an interesting result, is not it?
++
++\1f
++File: mgl_ru.info, Node: Vector field visualization, Next: Several light sources, Prev: Management of a point cutting, Up: Hints
++
++2.5.6 Vector field visualization
++--------------------------------
++
++Vector field visualization (especially in 3d case `vect3' or `vectc')
++may look tangly - there are too many overlapping lines. I may suggest 2
++ways to solve this problem. The first one is to change `meshnum' for
++decreasing the number of hachures. The second way is to use the flow
++thread chart `Flow'. Unfortunately, I don't know any other methods to
++visualize 3d vector field. If you know any, e-mail me and I shall add
++it to MatGL.
++
++\1f
++File: mgl_ru.info, Node: Several light sources, Next: CutMin and CutMax features, Prev: Vector field visualization, Up: Hints
++
++2.5.7 Several light sources
++---------------------------
++
++In contrast to the most of other programs, MathGL supports several (up
++to 10) light sources. Moreover, the color each of them can be
++different: white (this is usual), yellow, red, cyan, green and so on.
++The use of several light sources may be interesting for the
++highlighting of some peculiarities of the plot or just to make an
++amusing picture. Note, each light source can be switched on/off
++individually (*note Several light sample::).
++
++\1f
++File: mgl_ru.info, Node: CutMin and CutMax features, Next: Mapping visualization, Prev: Several light sources, Up: Hints
++
++2.5.8 CutMin and CutMax features
++--------------------------------
++
++MathGL library has a feature for cutting of points in some region
++CUTMIN*CUTMAX. Such an excision can be used to improve the look of the
++graphics. Moreover, this cutting may help to show an internal structure
++of an object (like `isocaps' plot in Matlab). For example, let us use
++the standard 3D data array and show its interior (*note CutMinMax
++sample::).
++
++new c 61 51 40 # create the data
++new v 10: fill v -0.5 1
++modify c '(-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1))'
++cut 0 -1 -1 1 0 1.1
++rotate 40 60: surf3 c -0.5 'bbcyrr'
++contf3 v c 'x' -1 'bbcyrr': contf3 v c 'y' -1 'bbcyrr'
++contf3 v c 'z' 0 'bbcyrr': contf3 v c 'z' 39 'bbcyrr'
++
++ One can also exclude points from arbitrary area in space. This area
++defined by textual formula `cut' (*note Cutting::). The algorithm is
++the same as shown for "rectangular cutting".
++
++\1f
++File: mgl_ru.info, Node: Mapping visualization, Next: Log-scaled plot, Prev: CutMin and CutMax features, Up: Hints
++
++2.5.9 Mapping visualization
++---------------------------
++
++Sometime ago I worked with mapping and have a question about its
++visualization. Let me remember you that mapping is some transformation
++rule for one set of number to another one. The 1d mapping is just an
++ordinary function - it takes a number and transforms it to another one.
++The 2d mapping (which I used) is a pair of functions which take 2
++numbers and transform them to another 2 ones. Except general plots
++(like `surfc', `surfa') there is a special plot - Arnold diagram. It
++shows the area which is the result of mapping of some initial area
++(usually square).
++
++ I tried to make such plot in `map'. It shows the set of points or
++set of faces, which final position is the result of mapping. At this,
++the color gives information about their initial position and the height
++describes Jacobian value of the transformation. Unfortunately, it looks
++good only for the simplest mapping but for the real multivalent
++quasi-chaotic mapping it produces a confusion. So, use it if you like
++:).
++
++\1f
++File: mgl_ru.info, Node: Log-scaled plot, Next: Nonlinear fitting hints, Prev: Mapping visualization, Up: Hints
++
++2.5.10 Log-scaled plot
++----------------------
++
++Log-scaled plot can be drawn by 2 steps. First, one should change the
++scale of axis by call `axis 'lg(x)' 'lg(y)'' (in this example, x- and
++y-axis will be log-scaled). Second, one should set logarithmic scale
++for axis ticks by changing variables: `xtick 0: yticks 0'. Finally, one
++should check (or change) the axis ranges and origin so that their
++values to be positive. For example of log-log plot *note Log-log
++sample::.
++
++\1f
++File: mgl_ru.info, Node: Nonlinear fitting hints, Next: PDE solving hints, Prev: Log-scaled plot, Up: Hints
++
++2.5.11 Nonlinear fitting hints
++------------------------------
++
++Nonlinear fitting is rather simple. All that you need is the data to
++fit, the approximation formula and the list of coefficients to fit
++(better with its initial guess values). Let me demonstrate it on the
++following simple example (*note Fitting sample::). First, let us use
++sin function with some random noise:
++new rnd 100: new idl 50 # data to be fitted and ideal data
++modify rnd '0.4*rnd+0.1+sin(4*pi*x)'
++modify idl '0.3+sin(4*pi*x)'
++ and plot it to see that data we will fit
++axis -1 -2 1 2
++plot rnd '. ':plot idl 'b'
++box:text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'C:b' -1
++
++ The next step is the fitting itself. For that let me specify an
++initial values INI for coefficients `abc' and do the fitting for
++approximation formula `a+b*sin(c*x)'
++new res # The data for found formula
++fit res rnd 'a+b*sin(c*x)' 'abc' [1, 1, 3]
++ Now display it
++plot res 'r'
++text -1 -1.3 'fitted:' 'L:r' -1
++putsfit 0 -1.8 'y = ' 'C:r' -1
++
++ NOTE! the fitting results may have strong dependence on initial
++values for coefficients due to algorithm features. The problem is that
++in general case there are several local 'optimums' for coefficients and
++the program returns only first found one! There are no guaranties that
++it will be the best. Try for example to set `ini = [0, 0, 0]' in the
++code above.
++
++\1f
++File: mgl_ru.info, Node: PDE solving hints, Next: Stereo image, Prev: Nonlinear fitting hints, Up: Hints
++
++2.5.12 PDE solving hints
++------------------------
++
++Solving of Partial Differential Equations (PDE, including beam tracing)
++and ray tracing (or finding particle trajectory) are more or less
++common task. So, MathGL have several functions for that. There are
++`ray' for ray tracing, `pde' for PDE solving, `qo2d' for beam tracing
++in 2D case. Note, that these functions take "Hamiltonian" or equations
++as string values. And I don't plan now to allow one to use user-defined
++functions. There are 2 reasons: the complexity of corresponding
++interface; and the basic nature of used methods which are good for
++samples but may not good for serious scientific calculations.
++
++ The ray tracing can be done by `ray' function. Really ray tracing
++equation is Hamiltonian equation for 3D space. So, the function can be
++also used for finding a particle trajectory (i.e. solve Hamiltonian
++ODE) for 1D, 2D or 3D cases. The function have a set of arguments.
++First of all, it is Hamiltonian which defined the media (or the
++equation) you are planning to use. The Hamiltonian is defined by string
++which may depend on coordinates `x', `y', `z', time `t' (for particle
++dynamics) and momentums `p'=p_x, `q'=p_y, `v'=p_z. Next, you have to
++define the initial conditions for coordinates and momentums at `t'=0
++and set the integrations step (default is 0.1) and its duration
++(default is 10). The Runge-Kutta method of 4-th order is used for
++integration.
++new re 128:new im 128
++ray r 'p^2+q^2-x-1' -0.7 -1 0 0 0.5 0
++plot r(0) r(1)
++ This example calculate the reflection from linear layer (media with
++Hamiltonian `p^2+q^2-x-1'=p_x^2+p_y^2-x-1). This is parabolic curve.
++The resulting array have 7 columns which contain data for
++{x,y,z,p,q,v,t}.
++
++ The solution of PDE is a bit more complicated. As previous you have
++to specify the equation as pseudo-differential operator \hat H(x,
++\nabla) which is called sometime as "Hamiltonian" (for example, in beam
++tracing). As previously, it is defined by string which may depend on
++coordinates `x', `y', `z' (but not time!), momentums `p'=(d/dx)/i k_0,
++`q'=(d/dy)/i k_0 and field amplitude `u'=|u|. The evolutionary
++coordinate is `z' in all cases. So that, the equation look like du/dz =
++ik_0 H(x,y,\hat p, \hat q, |u|)[u]. Dependence on field amplitude
++`u'=|u| allows one to solve nonlinear problems too. For example, for
++nonlinear Shrodinger equation you may set `ham='p^2 + q^2 - u^2''. Also
++you may specify imaginary part for wave absorption, like `ham = 'p^2 +
++i*x*(x>0)'', but only if dependence on variable `i' is linear (i.e. H =
++Hre+i*Him).
++
++ Next step is specifing the initial conditions at `z'=`Min.z'. The
++function need 2 arrays for real and for imaginary part. Note, that
++coordinates x,y,z are supposed to be in specified range [Min, Max]. So,
++the data arrays should have corresponding scales. Finally, you may set
++the integration step and paramter k0=k_0. Also keep in mind, that
++internally the 2 times large box is used (for suppressing numerical
++reflection from boundaries) and the equation should well defined even
++in this extended range.
++
++ Final comment is concerning the possible form of pseudo-differential
++operator H. At this moment, simplified form of operator H is supported
++- all "mixed" terms (like `x*p'->x*d/dx) are excluded. For example, in
++2D case this operator is effectively H = f(p,z) + g(x,z,u). However
++commutable combinations (like `x*q'->x*d/dy) are allowed for 3D case.
++
++ So, for example let solve the equation for beam deflected from
++linear layer and absorbed later. The operator will have the form
++`'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)'' that correspond to equation ik_0
++\partial_z u + \Delta u + x \cdot u + i (x+z)/2 \cdot u = 0. This is
++typical equation for Electron Cyclotron (EC) absorption in magnetized
++plasmas. For initial conditions let me select the beam with plane phase
++front exp(-48*(x+0.7)^2). The corresponding code looks like this (*note
++PDE sample::):
++new re 128: new im 128
++fill re 'exp(-48*(x+0.7)^2)'
++pde a 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)' re im 0.01, 30
++transpose a 'yxz'
++caxis 0 1
++dens a 'wyrRk'
++
++ The last example is example of beam tracing. Beam tracing equation
++is special kind of PDE equation written in coordinates accompanied to a
++ray. Generally this is the same parameters and limitation as for PDE
++solving but the coordinates are defined by the ray and by parameter of
++grid width W in direction transverse the ray. So, you don't need to
++specify the range of coordinates. *BUT* there is limitation. The
++accompanied coordinates are well defined only for smooth enough rays,
++i.e. then the ray curvature K (which is defined as 1/K^2 = (|\ddot r|^2
++|\dot r|^2 - (\ddot r, \dot r)^2)/|\dot r|^6) is much large then the
++grid width: K>>w. So, you may receive incorrect results if this
++condition will be broken.
++
++ You may use following code for obtaining the same solution as in
++previous example:
++new re 128: new im 128
++define $1 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
++ray r $1 -0.7 -1 0 0 0.5 0 0.02 2
++# now start beam tracing
++fill re 'exp(-48*x^2)'
++new xx: new yy
++qo2d a $1 re im r 1 30 xx yy
++caxis 0 1
++dens xx yy a 'wyrRk'
++
++\1f
++File: mgl_ru.info, Node: Stereo image, Prev: PDE solving hints, Up: Hints
++
++2.5.13 Stereo image
++-------------------
++
++One can easily create stereo image in MathGL. Stereo image can be
++produced by making two subplots with slightly different rotation
++angles. The corresponding code looks like this (*note Stereo image
++sample::):
++subplot 2 1 0 # left image
++rotate 40 60+3
++# draw something here
++subplot 2 1 1 # right image
++rotate 40 60-3
++# draw the same here
++
++\1f
++File: mgl_ru.info, Node: Samples, Next: Copying This Manual, Prev: Examples, Up: Top
++
++3 Примеры использования MathGL
++**************************************************
++
++Эта глава содержит множество примеров кода для всех типов графиков,
++наиболее важных возможностей библиотеки и советов. Аналогичные примеры
++(с картинками) можно найти на `http://mathgl.sf.net/pictures.html'.
++
++* Menu:
++
++* 1D plotting samples::
++* 2D plotting samples::
++* 3D plotting samples::
++* Dual plotting samples::
++* Basic features::
++* Additional features::
++* Advanced features::
++
++\1f
++File: mgl_ru.info, Node: 1D plotting samples, Next: 2D plotting samples, Up: Samples
++
++3.1 Примеры 1D графиков
++======================================
++
++* Menu:
++
++* Plot sample::
++* Radar sample::
++* Tens sample::
++* Area sample::
++* Area gradient sample::
++* Bars sample::
++* Bars 2 colors sample::
++* Bars above sample::
++* Bars fall sample::
++* Barh sample::
++* Step sample::
++* Stem sample::
++* Region sample::
++* Region gradient sample::
++* Error sample::
++* BoxPlot sample::
++* Mark sample::
++* TextMark sample::
++* Tube sample::
++* Text sample::
++* Torus sample::
++* Chart sample::
++* Pie chart sample::
++* Ring chart sample::
++
++\1f
++File: mgl_ru.info, Node: Plot sample, Next: Radar sample, Up: 1D plotting samples
++
++3.1.1 Plot - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/plot.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++box
++plot y
++
++\1f
++File: mgl_ru.info, Node: Radar sample, Next: Tens sample, Prev: Plot sample, Up: 1D plotting samples
++
++3.1.2 Radar - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/radar.png"\0\b]
++
++new y 10 3
++modify y '0.4*sin(pi*(2*x+y/2))+0.1*rnd'
++radar y '#'
++
++\1f
++File: mgl_ru.info, Node: Tens sample, Next: Area sample, Prev: Radar sample, Up: 1D plotting samples
++
++3.1.3 Tens - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/tens.png"\0\b]
++
++new y 50
++new c 50
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify c 'sin(2*pi*x)'
++box
++tens y c
++
++\1f
++File: mgl_ru.info, Node: Area sample, Next: Area gradient sample, Prev: Tens sample, Up: 1D plotting samples
++
++3.1.4 Area - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/area.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++origin 0 0
++box
++area y
++
++\1f
++File: mgl_ru.info, Node: Area gradient sample, Next: Bars sample, Prev: Tens sample, Up: 1D plotting samples
++
++3.1.5 Area с градиентной заливкой - пример использования
++-----------------------------------------------------------------------------------------------
++
++\0\b[image src="../png/area_2.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++origin 0 0
++box
++area y 'cbgGyr'
++
++\1f
++File: mgl_ru.info, Node: Bars sample, Next: Bars 2 colors sample, Prev: Area gradient sample, Up: 1D plotting samples
++
++3.1.6 Bars - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/bars.png"\0\b]
++
++new y 10 3
++modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
++origin 0 0
++box
++bars y
++
++\1f
++File: mgl_ru.info, Node: Bars 2 colors sample, Next: Bars above sample, Prev: Bars sample, Up: 1D plotting samples
++
++3.1.7 Bars (2 цвета) - пример использования
++-------------------------------------------------------------------
++
++\0\b[image src="../png/bars_2.png"\0\b]
++
++new y 10 3
++modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
++origin 0 0
++box
++bars y 'cbgGyr'
++
++\1f
++File: mgl_ru.info, Node: Bars above sample, Next: Bars fall sample, Prev: Bars 2 colors sample, Up: 1D plotting samples
++
++3.1.8 Bars (один над другим) - пример использования
++-----------------------------------------------------------------------------------
++
++\0\b[image src="../png/bars_a.png"\0\b]
++
++new y 10 3
++modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
++origin 0 0
++box
++bars y 'a'
++
++\1f
++File: mgl_ru.info, Node: Bars fall sample, Next: Bars above sample, Prev: Bars above sample, Up: 1D plotting samples
++
++3.1.9 Bars "водопад" - пример использования
++---------------------------------------------------------------------
++
++\0\b[image src="../png/bars_f.png"\0\b]
++
++new y 10 3
++modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
++origin 0 0
++box
++bars y 'f'
++
++\1f
++File: mgl_ru.info, Node: Barh sample, Next: Step sample, Prev: Bars fall sample, Up: 1D plotting samples
++
++3.1.10 Barh - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/barh.png"\0\b]
++
++new y 10 3
++modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
++origin 0 0
++box
++barh y
++
++\1f
++File: mgl_ru.info, Node: Step sample, Next: Stem sample, Prev: Barh sample, Up: 1D plotting samples
++
++3.1.11 Step - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/step.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++box
++step y
++
++\1f
++File: mgl_ru.info, Node: Stem sample, Next: Region sample, Prev: Step sample, Up: 1D plotting samples
++
++3.1.12 Stem - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/stem.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++origin 0 0
++box
++stem y 'o'
++
++\1f
++File: mgl_ru.info, Node: Region sample, Next: Region gradient sample, Prev: Stem sample, Up: 1D plotting samples
++
++3.1.13 Region - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/region.png"\0\b]
++
++new y1 50
++new y2 50
++modify y1 '0.3*sin(2*pi*x)'
++modify y2 '0.5+0.3*cos(2*pi*x)'
++box
++region y1 y2 'r'
++plot y1 'k2'
++plot y2 'k2'
++
++\1f
++File: mgl_ru.info, Node: Region gradient sample, Next: Error sample, Prev: Region sample, Up: 1D plotting samples
++
++3.1.14 Region с градиентной заливкой - пример использования
++--------------------------------------------------------------------------------------------------
++
++\0\b[image src="../png/region_2.png"\0\b]
++
++new y1 50
++new y2 50
++modify y1 '0.3*sin(2*pi*x)'
++modify y2 '0.5+0.3*cos(2*pi*x)'
++box
++region y1 y2 'yr'
++plot y1 'k2'
++plot y2 'k2'
++
++\1f
++File: mgl_ru.info, Node: Error sample, Next: BoxPlot sample, Prev: Region gradient sample, Up: 1D plotting samples
++
++3.1.15 Error - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/error.png"\0\b]
++
++new y 50
++new x0 10
++new y0 10
++new ex 10
++new ey 10
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify x0 '2*x-1 + 0.1*rnd-0.05'
++modify y0 '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x) + 0.2*rnd-0.1'
++modify ey '0.2'
++modify ex '0.1'
++box
++plot y
++error x0 y0 ex ey 'ko'
++
++\1f
++File: mgl_ru.info, Node: BoxPlot sample, Next: Mark sample, Prev: Error sample, Up: 1D plotting samples
++
++3.1.16 BoxPlot - пример использования
++--------------------------------------------------------
++
++\0\b[image src="../png/boxplot.png"\0\b]
++
++new a 10 7
++modify a '(2*rnd-1)^3/2'
++box
++boxplot a
++plot a ' ko'
++
++\1f
++File: mgl_ru.info, Node: Mark sample, Next: TextMark sample, Prev: BoxPlot sample, Up: 1D plotting samples
++
++3.1.17 Mark - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/mark.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++new y1 50
++modify y1 '0.5+0.3*cos(2*pi*x)'
++box
++mark y y1 'bs'
++
++\1f
++File: mgl_ru.info, Node: TextMark sample, Next: Tube sample, Prev: Mark sample, Up: 1D plotting samples
++
++3.1.18 TextMark - пример использования
++---------------------------------------------------------
++
++\0\b[image src="../png/textmark.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++new y1 50
++modify y1 '0.5+0.3*cos(2*pi*x)'
++box
++textmark y y1 '\gamma'
++
++\1f
++File: mgl_ru.info, Node: Tube sample, Next: Text sample, Prev: TextMark sample, Up: 1D plotting samples
++
++3.1.19 Tube - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/tube.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++rotate 40 60
++light on
++box
++tube y 0.05
++
++\1f
++File: mgl_ru.info, Node: Text sample, Next: Torus sample, Prev: Tube sample, Up: 1D plotting samples
++
++3.1.20 Text - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/text.png"\0\b]
++
++new y 50 3
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++box
++plot y(:,0)
++text y 'This is very long string drawn along a curve' ':k'
++text y 'Another string drawn above a curve' 'T:r'
++
++\1f
++File: mgl_ru.info, Node: Torus sample, Next: Chart sample, Prev: Text sample, Up: 1D plotting samples
++
++3.1.21 Torus - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/torus.png"\0\b]
++
++new y1 50
++new y2 50
++modify y1 '0.5+0.3*cos(2*pi*x)'
++modify y2 '0.3*sin(2*pi*x)'
++rotate 40 60
++light on
++box
++torus y1 y2 'pz'
++
++\1f
++File: mgl_ru.info, Node: Chart sample, Next: Pie chart sample, Prev: Torus sample, Up: 1D plotting samples
++
++3.1.22 Chart - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/chart.png"\0\b]
++
++new ch 7 2
++modify ch 'rnd+0.1'
++rotate 40 60
++light on
++box
++chart ch
++
++\1f
++File: mgl_ru.info, Node: Pie chart sample, Next: Ring chart sample, Prev: Chart sample, Up: 1D plotting samples
++
++3.1.23 Pie chart - пример использования
++----------------------------------------------------------
++
++\0\b[image src="../png/pie_chart.png"\0\b]
++
++new ch 7 2
++modify ch 'rnd+0.1'
++rotate 40 60
++light on
++axis '(y+1)/2*cos(pi*x)' '(y+1)/2*sin(pi*x)' ''
++box
++chart ch 'bgr cmy#'
++
++\1f
++File: mgl_ru.info, Node: Ring chart sample, Prev: Pie chart sample, Up: 1D plotting samples
++
++3.1.24 Ring chart - пример использования
++-----------------------------------------------------------
++
++\0\b[image src="../png/ring_chart.png"\0\b]
++
++new ch 7 2
++modify ch 'rnd+0.1'
++rotate 40 60
++light on
++axis '(y+2)/3*cos(pi*x)' '(y+2)/3*sin(pi*x)' ''
++box
++chart ch 'bgr cmy#'
++
++\1f
++File: mgl_ru.info, Node: 2D plotting samples, Next: 3D plotting samples, Prev: 1D plotting samples, Up: Samples
++
++3.2 Примеры 2D графиков
++======================================
++
++* Menu:
++
++* Surf sample::
++* Transparent surface sample::
++* Surface in fog sample::
++* Sharp colors sample::
++* Mesh sample::
++* Fall sample::
++* Belt sample::
++* Tile sample::
++* Boxs sample::
++* Dens sample::
++* Cont sample::
++* ContF sample::
++* ContD sample::
++* Axial sample::
++* Grad sample::
++
++\1f
++File: mgl_ru.info, Node: Surf sample, Next: Transparent surface sample, Up: 2D plotting samples
++
++3.2.1 Surf - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/surf.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++surf a
++
++\1f
++File: mgl_ru.info, Node: Transparent surface sample, Next: Surface in fog sample, Prev: Surf sample, Up: 2D plotting samples
++
++3.2.2 Transparent surface - пример использования
++-------------------------------------------------------------------
++
++\0\b[image src="../png/surf_alpha.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++alpha on
++box
++surf a
++
++\1f
++File: mgl_ru.info, Node: Surface in fog sample, Next: Sharp colors sample, Prev: Transparent surface sample, Up: 2D plotting samples
++
++3.2.3 Surface in fog - пример использования
++--------------------------------------------------------------
++
++\0\b[image src="../png/surf_fog.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++fog 1
++box
++surf a
++
++\1f
++File: mgl_ru.info, Node: Sharp colors sample, Next: Mesh sample, Prev: Surface in fog sample, Up: 2D plotting samples
++
++3.2.4 Sharp colors - пример использования
++------------------------------------------------------------
++
++\0\b[image src="../png/surf_sl.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++surf a 'BbcyrR|'
++
++\1f
++File: mgl_ru.info, Node: Mesh sample, Next: Fall sample, Prev: Sharp colors sample, Up: 2D plotting samples
++
++3.2.5 Mesh - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/mesh.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++box
++mesh a
++
++\1f
++File: mgl_ru.info, Node: Fall sample, Next: Belt sample, Prev: Mesh sample, Up: 2D plotting samples
++
++3.2.6 Fall - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/fall.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++box
++fall a
++
++\1f
++File: mgl_ru.info, Node: Belt sample, Next: Tile sample, Prev: Fall sample, Up: 2D plotting samples
++
++3.2.7 Belt - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/belt.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++belt a
++
++\1f
++File: mgl_ru.info, Node: Tile sample, Next: Boxs sample, Prev: Belt sample, Up: 2D plotting samples
++
++3.2.8 Tile - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/tile.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++tile a
++
++\1f
++File: mgl_ru.info, Node: Boxs sample, Next: Dens sample, Prev: Tile sample, Up: 2D plotting samples
++
++3.2.9 Boxs - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/boxs.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++origin 0 0 0
++box
++boxs a
++
++\1f
++File: mgl_ru.info, Node: Dens sample, Next: Cont sample, Prev: Boxs sample, Up: 2D plotting samples
++
++3.2.10 Dens - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/dens.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++dens a
++colorbar
++
++\1f
++File: mgl_ru.info, Node: Cont sample, Next: ContF sample, Prev: Dens sample, Up: 2D plotting samples
++
++3.2.11 Cont - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/cont.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++box
++cont a
++
++\1f
++File: mgl_ru.info, Node: ContF sample, Next: ContD sample, Prev: Cont sample, Up: 2D plotting samples
++
++3.2.12 ContF - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/contf.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++contf a
++
++\1f
++File: mgl_ru.info, Node: ContD sample, Next: Axial sample, Prev: ContF sample, Up: 2D plotting samples
++
++3.2.13 ContD - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/contd.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++var v 9 -1 1
++box
++contd v a
++colorbar v
++
++\1f
++File: mgl_ru.info, Node: Axial sample, Next: Grad sample, Prev: ContD sample, Up: 2D plotting samples
++
++3.2.14 Axial - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/axial.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++alpha on
++box
++axial a
++
++\1f
++File: mgl_ru.info, Node: Grad sample, Prev: Axial sample, Up: 2D plotting samples
++
++3.2.15 Grad - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/grad.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box:alpha on:dens a
++grad a
++
++\1f
++File: mgl_ru.info, Node: 3D plotting samples, Next: Dual plotting samples, Prev: 2D plotting samples, Up: Samples
++
++3.3 Примеры 3D графиков
++======================================
++
++* Menu:
++
++* Surf3 sample::
++* Cloud sample::
++* CloudP sample::
++* Dens3 sample::
++* Cont3 sample::
++* ContF3 sample::
++* Cont projection sample::
++* Dens projection sample::
++* CutMinMax sample::
++* Isocaps sample::
++* CutOff sample::
++
++\1f
++File: mgl_ru.info, Node: Surf3 sample, Next: Cloud sample, Up: 3D plotting samples
++
++3.3.1 Surf3 - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/surf3.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++light on
++alpha on
++box
++surf3 a
++
++\1f
++File: mgl_ru.info, Node: Cloud sample, Next: CloudP sample, Prev: Surf3 sample, Up: 3D plotting samples
++
++3.3.2 Cloud - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/cloud.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++alpha on
++box
++cloud a 'wyrRk'
++
++\1f
++File: mgl_ru.info, Node: CloudP sample, Next: Dens3 sample, Prev: Cloud sample, Up: 3D plotting samples
++
++3.3.3 CloudP - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/cloudp.png"\0\b]
++
++Not available.
++
++\1f
++File: mgl_ru.info, Node: Dens3 sample, Next: Cont3 sample, Prev: CloudP sample, Up: 3D plotting samples
++
++3.3.4 Dens3 - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/densa.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++alpha on
++origin 0 0 0
++box
++densa a
++axis
++
++\1f
++File: mgl_ru.info, Node: Cont3 sample, Next: ContF3 sample, Prev: Dens3 sample, Up: 3D plotting samples
++
++3.3.5 Cont3 - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/conta.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++box
++conta a
++
++\1f
++File: mgl_ru.info, Node: ContF3 sample, Next: Cont projection sample, Prev: Cont3 sample, Up: 3D plotting samples
++
++3.3.6 ContF3 - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/contfa.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++light on
++box
++contfa a
++
++\1f
++File: mgl_ru.info, Node: Cont projection sample, Next: Dens projection sample, Prev: ContF3 sample, Up: 3D plotting samples
++
++3.3.7 Cont projection - пример использования
++---------------------------------------------------------------
++
++\0\b[image src="../png/cont_xyz.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++box
++sum s a 'x'
++contx s '' -1
++sum s a 'y'
++conty s '' 1
++sum s a 'z'
++contz s '' -1
++
++\1f
++File: mgl_ru.info, Node: Dens projection sample, Next: CutMinMax sample, Prev: Cont projection sample, Up: 3D plotting samples
++
++3.3.8 Dens projection - пример использования
++---------------------------------------------------------------
++
++\0\b[image src="../png/dens_xyz.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++box
++sum s a 'x'
++densx s '' -1
++sum s a 'y'
++densy s '' 1
++sum s a 'z'
++densz s '' -1
++
++\1f
++File: mgl_ru.info, Node: CutMinMax sample, Next: Isocaps sample, Prev: Dens projection sample, Up: 3D plotting samples
++
++3.3.9 CutMinMax - пример использования
++---------------------------------------------------------
++
++\0\b[image src="../png/cutminmax.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++light on
++alpha on
++cut 0 -1 -1 1 0 1
++box
++surf3 a
++
++\1f
++File: mgl_ru.info, Node: Isocaps sample, Next: CutOff sample, Prev: CutMinMax sample, Up: 3D plotting samples
++
++3.3.10 "Isocaps" - пример использования
++----------------------------------------------------------
++
++\0\b[image src="../png/cutminmax2.png"\0\b]
++
++new a 61 51 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++light on
++cut 0 -1 -1 1 0 1.1
++box
++surf3 a -1
++contf3 a 'x' -1
++contf3 a 'y' -1
++contf3 a 'z' 0
++contf3 a 'z' 39
++
++\1f
++File: mgl_ru.info, Node: CutOff sample, Prev: Isocaps sample, Up: 3D plotting samples
++
++3.3.11 CutOff - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/surf3_cutoff.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++light on
++alpha on
++cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)'
++box
++surf3 a
++
++\1f
++File: mgl_ru.info, Node: Dual plotting samples, Next: Basic features, Prev: 3D plotting samples, Up: Samples
++
++3.4 Примеры парных/векторных графиков
++===================================================================
++
++* Menu:
++
++* SurfC sample::
++* SurfA sample::
++* TileS sample::
++* Map sample::
++* Traj sample::
++* Vect sample::
++* VectL sample::
++* VectC sample::
++* Flow sample::
++* Pipe sample::
++* Dew sample::
++* Surf3C sample::
++* Surf3A sample::
++* Vect 3D sample::
++* VectL 3D sample::
++* VectC 3D sample::
++* Flow 3D sample::
++* Pipe 3D sample::
++* Crust sample::
++* Dots sample::
++
++\1f
++File: mgl_ru.info, Node: SurfC sample, Next: SurfA sample, Up: Dual plotting samples
++
++3.4.1 SurfC - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/surfc.png"\0\b]
++
++new a 50 40
++new b 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++surfc a b
++
++\1f
++File: mgl_ru.info, Node: SurfA sample, Next: TileS sample, Prev: SurfC sample, Up: Dual plotting samples
++
++3.4.2 SurfA - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/surfa.png"\0\b]
++
++new a 50 40
++new b 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++alpha on
++box
++surfa a b
++
++\1f
++File: mgl_ru.info, Node: TileS sample, Next: Map sample, Prev: SurfA sample, Up: Dual plotting samples
++
++3.4.3 TileS - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/tiles.png"\0\b]
++
++new a 50 40
++new b 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++tile a b
++
++\1f
++File: mgl_ru.info, Node: Map sample, Next: Traj sample, Prev: TileS sample, Up: Dual plotting samples
++
++3.4.4 Map - пример использования
++---------------------------------------------------
++
++\0\b[image src="../png/map.png"\0\b]
++
++new a 50 40
++new b 50 40
++text 0 0 '\to'
++zrange -2 2
++subplot 2 1 0
++text 0 1.1 '\{x, y\}' '' -2
++box
++fill a 'x'
++fill b 'y'
++map a b 'brgk' 0 0
++subplot 2 1 1
++text 0 1.1 '\{\frac{x^3+y^3}{2}, \frac{x-y}{2}\}' '' -2
++box
++fill a '(x^3+y^3)/2'
++fill b '(x-y)/2'
++map a b 'brgk' 0 0
++
++\1f
++File: mgl_ru.info, Node: Traj sample, Next: Vect sample, Prev: Map sample, Up: Dual plotting samples
++
++3.4.5 Traj - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/traj.png"\0\b]
++
++new y 50 3
++new x 50
++new y1 50
++new y2 50
++modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
++modify y 'sin(2*pi*x)' 1
++modify y 'cos(2*pi*x)' 2
++fill x -1 1
++modify y1 '0.5+0.3*cos(2*pi*x)'
++modify y2 '0.3*sin(2*pi*x)'
++box
++plot x y
++traj x y y1 y2
++
++\1f
++File: mgl_ru.info, Node: Vect sample, Next: VectL sample, Prev: Traj sample, Up: Dual plotting samples
++
++3.4.6 Vect - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/vect.png"\0\b]
++
++new a 20 30
++new b 20 30
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++vect a b
++
++\1f
++File: mgl_ru.info, Node: VectL sample, Next: VectC sample, Prev: Vect sample, Up: Dual plotting samples
++
++3.4.7 VectL - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/vectl.png"\0\b]
++
++new a 20 30
++new b 20 30
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++vectl a b
++
++\1f
++File: mgl_ru.info, Node: VectC sample, Next: Flow sample, Prev: VectL sample, Up: Dual plotting samples
++
++3.4.8 VectC - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/vectc.png"\0\b]
++
++new a 20 30
++new b 20 30
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++vectc a b
++
++\1f
++File: mgl_ru.info, Node: Flow sample, Next: Pipe sample, Prev: VectC sample, Up: Dual plotting samples
++
++3.4.9 Flow - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/flow.png"\0\b]
++
++new a 20 30
++new b 20 30
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++flow a b
++
++\1f
++File: mgl_ru.info, Node: Pipe sample, Next: Dew sample, Prev: Flow sample, Up: Dual plotting samples
++
++3.4.10 Pipe - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/pipe.png"\0\b]
++
++new a 20 30
++new b 20 30
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++light on
++box
++pipe a b
++
++\1f
++File: mgl_ru.info, Node: Dew sample, Next: Surf3C sample, Prev: Pipe sample, Up: Dual plotting samples
++
++3.4.11 Dew - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/dew.png"\0\b]
++
++new a 20 30
++new b 20 30
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++light on
++dew a b
++
++\1f
++File: mgl_ru.info, Node: Surf3C sample, Next: Surf3A sample, Prev: Dew sample, Up: Dual plotting samples
++
++3.4.12 Surf3C - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/surf3c.png"\0\b]
++
++new a 60 50 40
++new b 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++modify b '1-2*tanh(4*(x+y-1)^2)'
++rotate 40 60
++light on
++alpha on
++box
++surf3c a b
++
++\1f
++File: mgl_ru.info, Node: Surf3A sample, Next: Vect 3D sample, Prev: Surf3C sample, Up: Dual plotting samples
++
++3.4.13 Surf3A - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/surf3a.png"\0\b]
++
++new a 60 50 40
++new b 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++modify b '1-2*tanh(4*(x+y-1)^2)'
++rotate 40 60
++light on
++alpha on
++box
++surf3a a b
++
++\1f
++File: mgl_ru.info, Node: Vect 3D sample, Next: VectL 3D sample, Prev: Surf3A sample, Up: Dual plotting samples
++
++3.4.14 Vect 3D - пример использования
++--------------------------------------------------------
++
++\0\b[image src="../png/vect3.png"\0\b]
++
++new ex 10 10 10
++new ey 10 10 10
++new ez 10 10 10
++fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
++rotate 40 60
++box
++vect ex ey ez 'bwr'
++
++\1f
++File: mgl_ru.info, Node: VectL 3D sample, Next: VectC 3D sample, Prev: Vect 3D sample, Up: Dual plotting samples
++
++3.4.15 VectL 3D - пример использования
++---------------------------------------------------------
++
++\0\b[image src="../png/vectl3.png"\0\b]
++
++new ex 10 10 10
++new ey 10 10 10
++new ez 10 10 10
++fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
++rotate 40 60
++box
++vectl ex ey ez 'bwr'
++
++\1f
++File: mgl_ru.info, Node: VectC 3D sample, Next: Flow 3D sample, Prev: VectL 3D sample, Up: Dual plotting samples
++
++3.4.16 VectC 3D - пример использования
++---------------------------------------------------------
++
++\0\b[image src="../png/vectc3.png"\0\b]
++
++new ex 10 10 10
++new ey 10 10 10
++new ez 10 10 10
++fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
++rotate 40 60
++box
++vectc ex ey ez 'bwr'
++
++\1f
++File: mgl_ru.info, Node: Flow 3D sample, Next: Pipe 3D sample, Prev: VectC 3D sample, Up: Dual plotting samples
++
++3.4.17 Flow 3D - пример использования
++--------------------------------------------------------
++
++\0\b[image src="../png/flow3.png"\0\b]
++
++new ex 30 30 30
++new ey 30 30 30
++new ez 30 30 30
++fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
++rotate 40 60
++box
++flow ex ey ez 'bwr'
++
++\1f
++File: mgl_ru.info, Node: Pipe 3D sample, Next: Crust sample, Prev: Flow 3D sample, Up: Dual plotting samples
++
++3.4.18 Pipe 3D - пример использования
++--------------------------------------------------------
++
++\0\b[image src="../png/pipe3.png"\0\b]
++
++new ex 10 10 10
++new ey 10 10 10
++new ez 10 10 10
++fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
++fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
++rotate 40 60
++light on
++box
++pipe ex ey ez 'bwr'
++
++\1f
++File: mgl_ru.info, Node: Crust sample, Next: Dots sample, Prev: Pipe 3D sample, Up: Dual plotting samples
++
++3.4.19 Crust - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/crust.png"\0\b]
++
++read a 'hotdogs.pts'
++norm a -1 1 on
++rotate 40 60
++light on
++box
++crust a 'p'
++
++\1f
++File: mgl_ru.info, Node: Dots sample, Prev: Crust sample, Up: Dual plotting samples
++
++3.4.20 Dots - пример использования
++-----------------------------------------------------
++
++\0\b[image src="../png/dots.png"\0\b]
++
++read a 'hotdogs.pts'
++norm a -1 1 on
++rotate 40 60
++box
++dots a 'p'
++
++\1f
++File: mgl_ru.info, Node: Basic features, Next: Additional features, Prev: Dual plotting samples, Up: Samples
++
++3.5 Базовые возможности
++=========================================
++
++* Menu:
++
++* 1D plot sample::
++* 2D plot sample::
++* 3D plot sample::
++* Line styles sample::
++* Arrow styles sample::
++* Text styles sample::
++* TeX parsing sample::
++* Font faces sample::
++* Colors sample::
++* Color schemes sample::
++* Normal transparency::
++* Glass-like transparency::
++* Lamp-like transparency::
++
++\1f
++File: mgl_ru.info, Node: 1D plot sample, Next: 2D plot sample, Up: Basic features
++
++3.5.1 Пример графиков 1D данных
++---------------------------------------------------
++
++\0\b[image src="../png/sample8.png"\0\b]
++
++new y0 50: modify y0 'sin(pi*(2*x-1))'
++subplot 2 2 0
++plot y0: box
++
++subplot 2 2 1
++new y1 50 2
++modify y1 'sin(pi*2*x-pi)'
++modify y1 'cos(pi*2*x-pi)/2' 1
++plot y1: box
++
++new x 50: modify x 'cos(pi*2*x-pi)'
++plot x y0 'Y+'
++plot y1(:,0) y(:,1) 'q|'
++
++subplot 2 2 2:rotate 60 40
++new z 50: modify z '2*x-1'
++plot x y0 z 'g':box
++new y2 10 3
++modify y2 'cos(pi*(2*x-1-y))'
++modify y2 '2*x-1' 2
++plot y2(:,0) y2(:,1) y2(:,2) 'bo '
++
++subplot 2 2 3:rotate 60 40
++bars x y0 z 'r':box
++
++\1f
++File: mgl_ru.info, Node: 2D plot sample, Next: 3D plot sample, Prev: 1D plot sample, Up: Basic features
++
++3.5.2 Пример графиков 2D данных
++---------------------------------------------------
++
++\0\b[image src="../png/sample9.png"\0\b]
++
++light on
++
++new a0 50 40
++modify a0 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
++subplot 2 2 0:rotate 60 40
++surf a0: box
++
++new x 50 40: new y 50 40: new z 50 40
++modify x '0.8*sin(2*pi*x)*sin(pi*y)'
++modify y '0.8*cos(2*pi*x)*sin(pi*y)'
++modify z '0.8*cos(pi*y)'
++subplot 2 2 1:rotate 60 40
++surf x y z 'bbwrr': box
++
++new a1 50 40 3
++modify a1 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
++modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*sin(3*pi*(x*y))' 1
++modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))' 2
++subplot 2 2 2:rotate 60 40
++alpha on
++surf a1: box
++
++subplot 2 2 3: rotate 60 40
++dens a1: box
++
++\1f
++File: mgl_ru.info, Node: 3D plot sample, Next: Line styles sample, Prev: 2D plot sample, Up: Basic features
++
++3.5.3 Пример графиков 3D данных
++---------------------------------------------------
++
++\0\b[image src="../png/sampleb.png"\0\b]
++
++alpha on: light on
++light 0 0 0 1
++new a 30 30 30: new b 30 30 30
++modify a 'exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))'
++modify b '16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)'
++caxis 0 1
++
++subplot 2 2 0: rotate 40 60
++surf3 a 'wgk': box
++subplot 2 2 1: rotate 40 60
++densa a: box: axis
++subplot 2 2 2: rotate 40 60
++cloud a: box
++subplot 2 2 3: rotate 40 60
++surf3a b a 'q': box
++
++\1f
++File: mgl_ru.info, Node: Line styles sample, Next: Arrow styles sample, Prev: 3D plot sample, Up: Basic features
++
++3.5.4 Пример стилей линий и маркеров
++--------------------------------------------------------------
++
++\0\b[image src="../png/sample5.png"\0\b]
++
++NOT AVAILABLE
++
++\1f
++File: mgl_ru.info, Node: Arrow styles sample, Next: Text styles sample, Prev: Line styles sample, Up: Basic features
++
++3.5.5 Пример стилей стрелок
++----------------------------------------------
++
++\0\b[image src="../png/sampled.png"\0\b]
++
++NOT AVAILABLE
++
++\1f
++File: mgl_ru.info, Node: Text styles sample, Next: TeX parsing sample, Prev: Arrow styles sample, Up: Basic features
++
++3.5.6 Пример стилей текста
++--------------------------------------------
++
++\0\b[image src="../png/sample4.png"\0\b]
++
++text 0 1 'Text can be in ASCII and in Unicode'
++text 0 0.6 'It can be \wire{wire}, \big{big} or #r{colored}'
++text 0 0.2 'One can change style in string: \b{bold}, \i{italic, \b{both}}'
++text 0 -0.2 'Easy to \a{overline} or \u{underline}'
++text 0 -0.6 'Easy to change indexes ^{up} _{down} @{center}'
++text 0 -1 'It parse TeX: \int \alpha \cdot \sqrt3{sin(\pi x)^2 + \gamma_{i_k}} dx'
++
++\1f
++File: mgl_ru.info, Node: TeX parsing sample, Next: Font faces sample, Prev: Text styles sample, Up: Basic features
++
++3.5.7 Пример TeX формулы
++-------------------------------------
++
++\0\b[image src="../png/samplee.png"\0\b]
++
++text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}' '' -4
++
++\1f
++File: mgl_ru.info, Node: Font faces sample, Next: Colors sample, Prev: TeX parsing sample, Up: Basic features
++
++3.5.8 Примеры начертаний шрифта
++------------------------------------------------------
++
++\0\b[image src="../png/fonts.png"\0\b]
++
++NOT AVAILABLE
++
++\1f
++File: mgl_ru.info, Node: Colors sample, Next: Color schemes sample, Prev: Font faces sample, Up: Basic features
++
++3.5.9 Примеры цветов
++---------------------------------
++
++\0\b[image src="../png/colors.png"\0\b]
++
++#LENUQ
++facez -1 -1 0 0.4 0.3 'L#': text -0.8 -0.9 'L' 'C:w'
++facez -0.6 -1 0 0.4 0.3 'E#': text -0.4 -0.9 'E' 'C:w'
++facez -0.2 -1 0 0.4 0.3 'N#': text 0 -0.9 'N' 'C:w'
++facez 0.2 -1 0 0.4 0.3 'U#': text 0.4 -0.9 'U' 'C:w'
++facez 0.6 -1 0 0.4 0.3 'Q#': text 0.8 -0.9 'Q' 'C:w'
++#lenuq
++facez -1 -0.7 0 0.4 0.3 'l#': text -0.8 -0.6 'l' 'C:k'
++facez -0.6 -0.7 0 0.4 0.3 'e#': text -0.4 -0.6 'e' 'C:k'
++facez -0.2 -0.7 0 0.4 0.3 'n#': text 0 -0.6 'n' 'C:k'
++facez 0.2 -0.7 0 0.4 0.3 'u#': text 0.4 -0.6 'u' 'C:k'
++facez 0.6 -0.7 0 0.4 0.3 'q#': text 0.8 -0.6 'q' 'C:k'
++#CMYkP
++facez -1 -0.4 0 0.4 0.3 'C#': text -0.8 -0.3 'C' 'C:w'
++facez -0.6 -0.4 0 0.4 0.3 'M#': text -0.4 -0.3 'M' 'C:w'
++facez -0.2 -0.4 0 0.4 0.3 'Y#': text 0 -0.3 'Y' 'C:w'
++facez 0.2 -0.4 0 0.4 0.3 'k#': text 0.4 -0.3 'k' 'C:w'
++facez 0.6 -0.4 0 0.4 0.3 'P#': text 0.8 -0.3 'P' 'C:w'
++#lenuq
++facez -1 -0.1 0 0.4 0.3 'c#': text -0.8 0 'c' 'C:k'
++facez -0.6 -0.1 0 0.4 0.3 'm#': text -0.4 0 'm' 'C:k'
++facez -0.2 -0.1 0 0.4 0.3 'y#': text 0 0 'y' 'C:k'
++facez 0.2 -0.1 0 0.4 0.3 'w#': text 0.4 0 'w' 'C:k'
++facez 0.6 -0.1 0 0.4 0.3 'p#': text 0.8 0 'p' 'C:k'
++#BGRHW
++facez -1 0.2 0 0.4 0.3 'B#': text -0.8 0.3 'B' 'C:k'
++facez -0.6 0.2 0 0.4 0.3 'G#': text -0.4 0.3 'G' 'C:k'
++facez -0.2 0.2 0 0.4 0.3 'R#': text 0 0.3 'R' 'C:k'
++facez 0.2 0.2 0 0.4 0.3 'H#': text 0.4 0.3 'H' 'C:k'
++facez 0.6 0.2 0 0.4 0.3 'W#': text 0.8 0.3 'W' 'C:k'
++#bgrhw
++facez -1 0.5 0 0.4 0.3 'b#': text -0.8 0.6 'b' 'C:w'
++facez -0.6 0.5 0 0.4 0.3 'g#': text -0.4 0.6 'g' 'C:w'
++facez -0.2 0.5 0 0.4 0.3 'r#': text 0 0.6 'r' 'C:w'
++facez 0.2 0.5 0 0.4 0.3 'h#': text 0.4 0.6 'h' 'C:w'
++facez 0.6 0.5 0 0.4 0.3 'w#': text 0.8 0.6 'w' 'C:w'
++#brighted
++facez -1 0.8 0 0.4 0.3 'r1#': text -0.8 0.9 'r1' 'C:k'
++facez -0.6 0.8 0 0.4 0.3 'r3#': text -0.4 0.9 'r3' 'C:k'
++facez -0.2 0.8 0 0.4 0.3 'r5#': text 0 0.9 'r5' 'C:k'
++facez 0.2 0.8 0 0.4 0.3 'r7#': text 0.4 0.9 'r7' 'C:k'
++facez 0.6 0.8 0 0.4 0.3 'r9#': text 0.8 0.9 'r9' 'C:k'
++
++\1f
++File: mgl_ru.info, Node: Color schemes sample, Next: Normal transparency, Prev: Colors sample, Up: Basic features
++
++3.5.10 Примеры цветовых схем
++-----------------------------------------------
++
++\0\b[image src="../png/color_schemes.png"\0\b]
++
++new a 256 2: fill a 'x'
++subplot 2 10 0 0.2:dens a 'kw'
++text -1.4 -0.3 'kw' '' -8
++subplot 2 10 1 0.2:dens a 'wk'
++text -1.4 -0.3 'wk' '' -8
++subplot 2 10 2 0.2:dens a 'kHCcw'
++text -1.4 -0.3 'kHCcw' '' -8
++subplot 2 10 3 0.2:dens a 'kBbcw'
++text -1.4 -0.3 'kBbcw' '' -8
++subplot 2 10 4 0.2:dens a 'kRryw'
++text -1.4 -0.3 'kRryw' '' -8
++subplot 2 10 5 0.2:dens a 'kGgew'
++text -1.4 -0.3 'kGgew' '' -8
++subplot 2 10 6 0.2:dens a 'BbwrR'
++text -1.4 -0.3 'BbwrR' '' -8
++subplot 2 10 7 0.2:dens a 'BbwgG'
++text -1.4 -0.3 'BbwgG' '' -8
++subplot 2 10 8 0.2:dens a 'GgwmM'
++text -1.4 -0.3 'GgwmM' '' -8
++subplot 2 10 9 0.2:dens a 'UuwqR'
++text -1.4 -0.3 'UuwqR' '' -8
++subplot 2 10 10 0.2:dens a 'QqwcC'
++text -1.4 -0.3 'QqwcC' '' -8
++subplot 2 10 11 0.2:dens a 'CcwyY'
++text -1.4 -0.3 'CcwyY' '' -8
++subplot 2 10 12 0.2:dens a 'bcwyr'
++text -1.4 -0.3 'bcwyr' '' -8
++subplot 2 10 13 0.2:dens a 'bwr'
++text -1.4 -0.3 'bwr' '' -8
++subplot 2 10 14 0.2:dens a 'BbcyrR'
++text -1.4 -0.3 'BbcyrR' '' -8
++subplot 2 10 15 0.2:dens a 'UbcyqR'
++text -1.4 -0.3 'UbcyqR' '' -8
++subplot 2 10 16 0.2:dens a 'BbcwyrR'
++text -1.4 -0.3 'BbcwyrR' '' -8
++subplot 2 10 17 0.2:dens a 'bcyr'
++text -1.4 -0.3 'bcyr' '' -8
++subplot 2 10 18 0.2:dens a 'BbcyrR|'
++text -1.4 -0.3 'BbcyrR|' '' -8
++subplot 2 10 19 0.2:dens a 'bgr'
++text -1.4 -0.3 'bgr' '' -8
++
++\1f
++File: mgl_ru.info, Node: Normal transparency, Next: Glass-like transparency, Prev: Color schemes sample, Up: Basic features
++
++3.5.11 Обычная прозрачность
++----------------------------------------------
++
++\0\b[image src="../png/type0.png"\0\b]
++
++alpha on: light on
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++
++transptype 0: clf
++subplot 2 2 0: rotate 40 60: surf a: box
++subplot 2 2 1: rotate 40 60: dens a: box
++subplot 2 2 2: rotate 40 60: cont a: box
++subplot 2 2 3: rotate 40 60: axial a: box
++
++\1f
++File: mgl_ru.info, Node: Glass-like transparency, Next: Lamp-like transparency, Prev: Normal transparency, Up: Basic features
++
++3.5.12 "Стеклянная" прозрачность
++------------------------------------------------------
++
++\0\b[image src="../png/type1.png"\0\b]
++
++alpha on: light on
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++
++transptype 1: clf
++subplot 2 2 0: rotate 40 60: surf a: box
++subplot 2 2 1: rotate 40 60: dens a: box
++subplot 2 2 2: rotate 40 60: cont a: box
++subplot 2 2 3: rotate 40 60: axial a: box
++
++\1f
++File: mgl_ru.info, Node: Lamp-like transparency, Prev: Glass-like transparency, Up: Basic features
++
++3.5.13 "Ламповая" прозрачность
++--------------------------------------------------
++
++\0\b[image src="../png/type2.png"\0\b]
++
++alpha on: light on
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++
++transptype 2: clf
++subplot 2 2 0: rotate 40 60: surf a: box
++subplot 2 2 1: rotate 40 60: dens a: box
++subplot 2 2 2: rotate 40 60: cont a: box
++subplot 2 2 3: rotate 40 60: axial a: box
++
++\1f
++File: mgl_ru.info, Node: Additional features, Next: Advanced features, Prev: Basic features, Up: Samples
++
++3.6 Дополнительные возможности
++=======================================================
++
++* Menu:
++
++* Legend sample::
++* Adding mesh sample::
++* Surf & Cont sample::
++* Flow & Dens sample::
++* Several light sample::
++* Mirrored surface sample::
++* Cont with labels sample::
++* Ternary plot sample::
++* Coloring by coordinates sample::
++* Drops sample::
++* Molecules drawing sample::
++
++\1f
++File: mgl_ru.info, Node: Legend sample, Next: Adding mesh sample, Up: Additional features
++
++3.6.1 Legend - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/legend.png"\0\b]
++
++new f 50 3
++modify f 'sin(2*pi*x*x)'
++modify f 'sin(2*pi*x)' 1
++modify f 'sin(2*pi*sqrt(x))' 2
++axis 0 -1 1 1
++box
++plot f
++axis
++addlegend 'sin(\pi {x^2})' 'b'
++addlegend 'sin(\pi x)' 'g*'
++addlegend 'sin(\pi \sqrt{\a x})' 'r+'
++legend
++
++\1f
++File: mgl_ru.info, Node: Adding mesh sample, Next: Surf & Cont sample, Prev: Legend sample, Up: Additional features
++
++3.6.2 Добавляем сетку
++-----------------------------------
++
++\0\b[image src="../png/samplea.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++alpha on
++light on
++subplot 2 2 0
++rotate 40 60
++surf a 'BbcyrR#'
++box
++subplot 2 2 1
++rotate 40 60
++dens a 'BbcyrR#'
++box
++subplot 2 2 2
++rotate 40 60
++cont a 'BbcyrR#'
++box
++subplot 2 2 3
++rotate 40 60
++axial a 'BbcyrR#'
++box
++
++\1f
++File: mgl_ru.info, Node: Surf & Cont sample, Next: Flow & Dens sample, Prev: Adding mesh sample, Up: Additional features
++
++3.6.3 Surf & Cont - пример использования
++-----------------------------------------------------------
++
++\0\b[image src="../png/surf_cont_y.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++box
++surf a
++cont a 'y'
++
++\1f
++File: mgl_ru.info, Node: Flow & Dens sample, Next: Several light sample, Prev: Surf & Cont sample, Up: Additional features
++
++3.6.4 Flow & Dens - пример использования
++-----------------------------------------------------------
++
++\0\b[image src="../png/flow_dens.png"\0\b]
++
++new a 50 40
++new b 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++copy d a
++modify d 'sqrt(v^2+w^2)' a b
++box
++flow a b 'br'
++dens d 'BbcyrR'
++
++\1f
++File: mgl_ru.info, Node: Several light sample, Next: Mirrored surface sample, Prev: Flow & Dens sample, Up: Additional features
++
++3.6.5 Несколько источников света
++--------------------------------------------------------
++
++\0\b[image src="../png/several_light.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++rotate 40 60
++light on
++light 1 0 1 0 'c'
++light 2 1 0 0 'y'
++light 3 0 -1 0 'm'
++box
++surf a 'h'
++
++\1f
++File: mgl_ru.info, Node: Mirrored surface sample, Next: Cont with labels sample, Prev: Several light sample, Up: Additional features
++
++3.6.6 Отражение поверхности
++-----------------------------------------------
++
++\0\b[image src="../png/mirror.png"\0\b]
++
++new a 30 40
++modify a 'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)'
++rotate 40 60
++light on
++surf a 'r'; yrange 0 1
++surf a 'b'; yrange 0 -1
++box
++ or
++new a 30 40
++var x 30 -1 1
++var y1 40 0 1
++var y2 40 0 -1
++modify a 'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)'
++rotate 40 60
++light on
++surf x y1 a 'r'
++surf x y2 a 'b'
++box
++
++\1f
++File: mgl_ru.info, Node: Cont with labels sample, Next: Ternary plot sample, Prev: Mirrored surface sample, Up: Additional features
++
++3.6.7 Cont и подписи - пример использования
++----------------------------------------------------------------------
++
++\0\b[image src="../png/contt.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++box
++cont a 'BbcyrRt'
++
++\1f
++File: mgl_ru.info, Node: Ternary plot sample, Next: Coloring by coordinates sample, Prev: Cont with labels sample, Up: Additional features
++
++3.6.8 Ternary plot - пример использования
++------------------------------------------------------------
++
++\0\b[image src="../png/ternary.png"\0\b]
++
++new rx 10
++new ry 10
++new x 50
++new y 50
++new a 20 30
++modify a '4*x*y'
++modify x '0.25*(1+cos(2*pi*x))'
++modify y '0.25*(1+sin(2*pi*x))'
++modify rx 'rnd'
++modify ry 'rnd*(1-v)' rx
++text -0.8 1.3 'Ternary plot (x+y+t=1)'
++ternary on
++plot x y 'r2'
++plot rx ry 'q^ '
++cont a
++line 0.5 0 0 0.75 'g2'
++axis
++grid 'xyz' 'B;'
++xlabel 'x comp.'
++ylabel 'y comp.'
++tlabel 't comp.'
++
++\1f
++File: mgl_ru.info, Node: Coloring by coordinates sample, Next: Drops sample, Prev: Ternary plot sample, Up: Additional features
++
++3.6.9 Окрашивание по положению грани
++---------------------------------------------------------------
++
++\0\b[image src="../png/surf3_rgbd.png"\0\b]
++
++new a 60 50 40
++modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
++rotate 40 60
++box
++surf3 a 'bgrd'
++
++\1f
++File: mgl_ru.info, Node: Drops sample, Next: Molecules drawing sample, Prev: Coloring by coordinates sample, Up: Additional features
++
++3.6.10 Drops - пример использования
++------------------------------------------------------
++
++\0\b[image src="../png/drops.png"\0\b]
++
++light on
++text -1 1.2 'sh=0'
++drop -1 0 0 1 0.5 'r' 0
++text -0.33 1.2 'sh=0.33'
++drop -0.33 0 0 1 0.5 'r' 0.33
++text 0.33 1.2 'sh=0.67'
++drop 0.33 0 0 1 0.5 'r' 0.67
++text 1 1.2 'sh=1'
++drop 1 0 0 1 0.5 'r' 1
++ball -1 0 1 'k'
++ball -0.33 0 1 'k'
++ball 0.33 0 1 'k'
++ball 1 0 1 'k'
++line -1 0 1 1 0 1 'b'
++new h 100
++modify h '0.25*(1+x)^2'
++plot h 'k|'
++text -1 0.6 'h\sim(1+sh)^2' 'rL'
++
++\1f
++File: mgl_ru.info, Node: Molecules drawing sample, Prev: Drops sample, Up: Additional features
++
++3.6.11 Рисование молекул
++----------------------------------------
++
++\0\b[image src="../png/molecule.png"\0\b]
++
++alpha on
++light on
++subplot 2 2 0
++text 0 1.2 'Methane, CH_4' '' -3
++rotate 60 120
++sphere 0 0 0 0.25 'k'
++drop 0 0 0 0 0 1 0.35 'h' 1 2
++sphere 0 0 0.7 0.25 'g'
++drop 0 0 0 -0.94 0 -0.33 0.35 'h' 1 2
++sphere -0.66 0 -0.23 0.25 'g'
++drop 0 0 0 0.47 0.82 -0.33 0.35 'h' 1 2
++sphere 0.33 0.57 -0.23 0.25 'g'
++drop 0 0 0 0.47 -0.82 -0.33 0.35 'h' 1 2
++sphere 0.33 -0.57 -0.23 0.25 'g'
++subplot 2 2 1
++text 0 1.2 'Water, H{_2}O' '' -3
++rotate 60 100
++sphere 0 0 0 0.25 'r'
++drop 0 0 0 0.3 0.5 0 0.3 'm' 1 2
++sphere 0.3 0.5 0 0.25 'g'
++drop 0 0 0 0.3 -0.5 0 0.3 'm' 1 2
++sphere 0.3 -0.5 0 0.25 'g'
++subplot 2 2 2
++text 0 1.2 'Oxygen, O_2' '' -3
++rotate 60 120
++drop 0 0.5 0 0 -0.3 0 0.3 'm' 1 2
++sphere 0 0.5 0 0.25 'r'
++drop 0 -0.5 0 0 0.3 0 0.3 'm' 1 2
++sphere 0 -0.5 0 0.25 'r'
++subplot 2 2 3
++text 0 1.2 0 'Ammonia, NH_3' '' -3
++rotate 60 120
++sphere 0 0 0 0.25 'b'
++drop 0 0 0 0.33 0.57 0 0.32 'n' 1 2
++sphere 0.33 0.57 0 0.25 'g'
++drop 0 0 0 0.33 -0.57 0 0.32 'n' 1 2
++sphere 0.33 -0.57 0 0.25 'g'
++drop 0 0 0 -0.65 0 0 0.32 'n' 1 2
++sphere -0.65 0 0 0.25 'g'
++
++\1f
++File: mgl_ru.info, Node: Advanced features, Prev: Additional features, Up: Samples
++
++3.7 "Продвинутые" возможности
++===================================================
++
++* Menu:
++
++* Curvelinear coorinates sample::
++* 2-axes sample::
++* Semi-log sample::
++* Log-log sample::
++* Fitting sample::
++* Envelop sample::
++* Sew sample::
++* STFA sample::
++* PDE sample::
++* Beam tracing sample::
++* Parser sample::
++* Manual ticks sample::
++* ColumnPlot sample::
++* StickPlot sample::
++* Stereo image sample::
++
++\1f
++File: mgl_ru.info, Node: Curvelinear coorinates sample, Next: 2-axes sample, Up: Advanced features
++
++3.7.1 Криволинейные координаты
++-----------------------------------------------------
++
++\0\b[image src="../png/sample3.png"\0\b]
++
++origin -1 1 -1
++subplot 2 2 0
++rotate 60 40
++line -1 0.5 0 1 0.5 0 'r2'
++axis
++grid
++text 0 1.3 1 'Cartesian'
++subplot 2 2 1
++rotate 60 40
++axis 'y*sin(pi*x)' 'y*cos(pi*x)' ''
++line -1 0.5 0 1 0.5 0 'r2'
++axis
++grid
++text 0 1.3 1 'Cylindrical'
++subplot 2 2 2
++rotate 60 40
++axis '2*y*x' 'y*y - x*x' ''
++line -1 0.5 0 1 0.5 0 'r2'
++axis
++grid
++text 0 1.3 1 'Parabolic'
++subplot 2 2 3
++rotate 60 40
++axis 'y*sin(pi*x)' 'y*cos(pi*x)' 'x+z'
++line -1 0.5 0 1 0.5 0 'r2'
++axis
++grid
++text 0 1.3 1 'Spiral'
++axis '' '' '' # set to default Cartesian
++
++\1f
++File: mgl_ru.info, Node: 2-axes sample, Next: Semi-log sample, Prev: Curvelinear coorinates sample, Up: Advanced features
++
++3.7.2 Несколько осей на одном графике
++----------------------------------------------------------------
++
++\0\b[image src="../png/2_axis.png"\0\b]
++
++new y1 50
++new y2 50
++modify y1 '0.3*sin(2*pi*x)'
++modify y2 '0.5+0.3*cos(2*pi*x)'
++axis -1 -1 -1 1 1 1
++origin -1 -1 -1
++axis
++ylabel 'axis 1' 0
++plot y1 'b'
++axis 0 0 0 1 1 1
++origin 1 1 1
++axis
++ylabel 'axis 2' 0
++stem y2 'r'
++
++\1f
++File: mgl_ru.info, Node: Semi-log sample, Next: Log-log sample, Prev: 2-axes sample, Up: Advanced features
++
++3.7.3 Semi-log - пример использования
++--------------------------------------------------------
++
++\0\b[image src="../png/semilog.png"\0\b]
++
++new x 2000
++new y 2000
++modify x '0.01/(x+10^(-5))'
++modify y 'sin(1/v)' x
++xrange 0.01 1000
++origin 0.01 -1 0
++xtick 0
++axis 'lg(x)' '' ''
++plot x y 'b2'
++axis
++grid 'xy' 'g'
++xlabel 'x' 0
++ylabel 'y = sin 1/x' 0
++box
++
++\1f
++File: mgl_ru.info, Node: Log-log sample, Next: Fitting sample, Prev: Semi-log sample, Up: Advanced features
++
++3.7.4 Log-log - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/loglog.png"\0\b]
++
++new x 100
++new y 100
++modify x 'pow(10,6*x-3)'
++modify y 'sqrt(1+v^2)' x
++axis 0.001 0.1 1000 1000
++xtick 0
++ytick 0
++axis 'lg(x)' 'lg(y)' ''
++plot x y 'b2'
++axis
++grid 'xy' 'g;'
++xlabel 'x' 0
++ylabel 'y=\sqrt{1+x^2}' 0
++box
++
++\1f
++File: mgl_ru.info, Node: Fitting sample, Next: Envelop sample, Prev: Log-log sample, Up: Advanced features
++
++3.7.5 Fitting - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/fit.png"\0\b]
++
++new rnd 100
++fill rnd '0.4*rnd+0.1+sin(2*pi*x)'
++new in 100
++fill in '0.3+sin(2*pi*x)'
++yrange -2 2
++plot rnd '. '
++box
++list ini 1 1 3
++fit res rnd 'a+b*sin(c*x)' 'abc' ini
++plot res 'r'
++plot in 'b'
++text -1 -1.3 'fitted:' 'L:r' -1
++putsfit 0 -1.8 'y = ' 'C:r'
++text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'C:b' -1
++
++\1f
++File: mgl_ru.info, Node: Envelop sample, Next: Sew sample, Prev: Fitting sample, Up: Advanced features
++
++3.7.6 Envelop - пример использования
++-------------------------------------------------------
++
++\0\b[image src="../png/envelop.png"\0\b]
++
++new a 1000
++fill a 'exp(-8*x^2)*sin(10*pi*x)'
++plot a 'b'
++envelop a
++plot a 'r'
++axis
++
++\1f
++File: mgl_ru.info, Node: Sew sample, Next: STFA sample, Prev: Envelop sample, Up: Advanced features
++
++3.7.7 Sew - пример использования
++---------------------------------------------------
++
++\0\b[image src="../png/sew.png"\0\b]
++
++new a 100 100
++modify a 'mod((y^2-(1-x)^2)/2,0.1)'
++rotate 40 60
++light on
++alpha on
++surf a 'b'
++sew a 'xy' 0.1
++surf a 'r'
++box
++
++\1f
++File: mgl_ru.info, Node: STFA sample, Next: PDE sample, Prev: Sew sample, Up: Advanced features
++
++3.7.8 STFA - пример использования
++----------------------------------------------------
++
++\0\b[image src="../png/stfa.png"\0\b]
++
++new a 2000
++new b 2000
++fill a 'cos(50*pi*x)*(x<-.5)+cos(100*pi*x)*(x<0)*(x>-.5)+
++ cos(200*pi*x)*(x<.5)*(x>0)+cos(400*pi*x)*(x>.5)'
++subplot 1 2 0
++plot a
++axis
++xlabel '\i t'
++subplot 1 2 1
++stfa a b 64 ''
++axis
++ylabel '\omega' 0
++xlabel '\i t'
++
++\1f
++File: mgl_ru.info, Node: PDE sample, Next: Beam tracing sample, Prev: STFA sample, Up: Advanced features
++
++3.7.9 PDE - пример использования
++---------------------------------------------------
++
++\0\b[image src="../png/pde.png"\0\b]
++
++axis
++xlabel '\i x'
++ylabel '\i z'
++new re 128
++new im 128
++fill re 'exp(-48*(x+0.7)^2)'
++pde a 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)' re im 0.01 30
++transpose a
++crange 0 1
++dens a 'wyrRk'
++fplot '-x' 'k|'
++text 0 0.85 'absorption: (x+z)/2 for x+z>0' '' -1
++title 'Equation: ik_0\partial_zu + \Delta u + x\cdot u + i \frac{x+z}{2}\cdot u = 0' 'iC' -1.5
++
++\1f
++File: mgl_ru.info, Node: Beam tracing sample, Next: Parser sample, Prev: PDE sample, Up: Advanced features
++
++3.7.10 Beam tracing - пример использования
++-------------------------------------------------------------
++
++\0\b[image src="../png/qo2d.png"\0\b]
++
++define $1 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
++ray r $1 -0.7 -1 0 0 0.5 0 0.02 2
++plot r(0) r(1) 'k'
++axis
++xlabel '\i x'
++ylabel '\i z'
++new re 128
++new im 128
++new xx
++new yy
++fill re 'exp(-48*x^2)'
++qo2d a $1 re im r 1 30 xx yy
++crange 0 1
++dens xx yy a 'wyrRk'
++fplot '-x' 'k|'
++text -0.8 0.85 'absorption: (x+y)/2 for x+y>0' 'L' -1
++text 0.5 -0.05 'central ray' 'L' -1
++title 'Beam and ray tracing' 'C' -1.5
++
++\1f
++File: mgl_ru.info, Node: Parser sample, Next: Manual ticks sample, Prev: Beam tracing sample, Up: Advanced features
++
++3.7.11 Parser - пример использования
++-------------------------------------------------------
++
++\1f
++File: mgl_ru.info, Node: Manual ticks sample, Next: ColumnPlot sample, Prev: Parser sample, Up: Advanced features
++
++3.7.12 Особые метки по осям
++--------------------------------------------
++
++\0\b[image src="../png/tval.png"\0\b]
++
++axis -pi 0 pi 2
++xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' 0.886 'x^*' 1.571 '\pi/2' pi '\pi'
++axis
++grid
++fplot '2*cos(x^2)^2' 'r2' nan 300
++
++\1f
++File: mgl_ru.info, Node: ColumnPlot sample, Next: StickPlot sample, Prev: Manual ticks sample, Up: Advanced features
++
++3.7.13 ColumnPlot - пример использования
++-----------------------------------------------------------
++
++\0\b[image src="../png/column.png"\0\b]
++
++for $1 0 3
++columnplot 4 $1
++box
++text -0.5 0.5 'Plot $1 of 4'
++fplot 'sin(pi*x+pi*$1/2)'
++next
++
++\1f
++File: mgl_ru.info, Node: StickPlot sample, Prev: ColumnPlot sample, Up: Advanced features
++
++3.7.14 StickPlot - пример использования
++----------------------------------------------------------
++
++\0\b[image src="../png/stick.png"\0\b]
++
++ranges -1 1 -1 1 0 1:light on
++stickplot 3 0 40 30 : axis 'xyz_'
++fsurf 'exp(-10*y^2-6*x^2)'
++text 0.2 0 1.2 'z=0' '' -2
++stickplot 3 1 40 30 : axis 'xy_'
++fsurf 'exp(-10*y^2/2-6*x^2)/sqrt(2)'
++text 0.2 0 1.2 'z=1' '' -2
++stickplot 3 2 40 30 : axis 'xy_'
++fsurf 'exp(-10*y^2/5-6*x^2)/sqrt(5)'
++text 0.2 0 1.2 'z=2' '' -2
++xlabel '\tau' 0 : ylabel '\rho'
++
++\1f
++File: mgl_ru.info, Node: Stereo image sample, Prev: StickPlot sample, Up: Advanced features
++
++3.7.15 Пример стерео изображения
++-------------------------------------------------------
++
++\0\b[image src="../png/stereo.png"\0\b]
++
++new a 50 40
++modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
++light on
++subplot 2 1 0
++rotate 40 60+3
++box:surf a
++subplot 2 1 1
++rotate 40 60-3
++box:surf a
++
++
++\1f
++Local Variables:
++coding: utf-8
++End:
+--- mathgl-1.11.0.1.orig/texinfo/Makefile.in
++++ mathgl-1.11.0.1/texinfo/Makefile.in
+@@ -39,7 +39,11 @@ DIST_COMMON = $(mathgl_en_TEXINFOS) $(ma
+ $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- /dev/null
++++ mathgl-1.11.0.1/texinfo/mgl_ru.info-2
+@@ -0,0 +1,889 @@
++This is mgl_ru.info, produced by makeinfo version 4.13 from mgl_ru.texi.
++
++Это документация для MathGL (версии 1.11) - библиотеки классов и
++функций для построения научной графики. Пожалуйста сообщайте о любых
++ошибках в этом руководстве на <mathgl.abalakin@gmail.org>.
++
++ Copyright (C) 2009 Алексей Балакин.
++
++ Permission is granted to copy, distribute and/or modify this
++ document under the terms of the GNU Free Documentation License,
++ Version 1.2 or any later version published by the Free Software
++ Foundation; with no Invariant Sections, with the Front-Cover Texts
++ being "A GNU Manual," and with the Back-Cover Texts as in (a)
++ below. A copy of the license is included in the section entitled
++ "GNU Free Documentation License."
++
++ (a) The FSF's Back-Cover Text is: "You have the freedom to copy
++ and modify this GNU manual. Buying copies from the FSF supports
++ it in developing GNU and promoting software freedom."
++
++INFO-DIR-SECTION MathGL documentation system
++START-INFO-DIR-ENTRY
++* MathGL: (mathgl). The library for scientific graphics.
++END-INFO-DIR-ENTRY
++
++\1f
++File: mgl_ru.info, Node: Copying This Manual, Next: Index, Prev: Samples, Up: Top
++
++Appendix A GNU Free Documentation License
++*****************************************
++
++ Version 1.2, November 2002
++
++ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
++ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
++
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++ 0. PREAMBLE
++
++ The purpose of this License is to make a manual, textbook, or other
++ functional and useful document "free" in the sense of freedom: to
++ assure everyone the effective freedom to copy and redistribute it,
++ with or without modifying it, either commercially or
++ noncommercially. Secondarily, this License preserves for the
++ author and publisher a way to get credit for their work, while not
++ being considered responsible for modifications made by others.
++
++ This License is a kind of "copyleft", which means that derivative
++ works of the document must themselves be free in the same sense.
++ It complements the GNU General Public License, which is a copyleft
++ license designed for free software.
++
++ We have designed this License in order to use it for manuals for
++ free software, because free software needs free documentation: a
++ free program should come with manuals providing the same freedoms
++ that the software does. But this License is not limited to
++ software manuals; it can be used for any textual work, regardless
++ of subject matter or whether it is published as a printed book.
++ We recommend this License principally for works whose purpose is
++ instruction or reference.
++
++ 1. APPLICABILITY AND DEFINITIONS
++
++ This License applies to any manual or other work, in any medium,
++ that contains a notice placed by the copyright holder saying it
++ can be distributed under the terms of this License. Such a notice
++ grants a world-wide, royalty-free license, unlimited in duration,
++ to use that work under the conditions stated herein. The
++ "Document", below, refers to any such manual or work. Any member
++ of the public is a licensee, and is addressed as "you". You
++ accept the license if you copy, modify or distribute the work in a
++ way requiring permission under copyright law.
++
++ A "Modified Version" of the Document means any work containing the
++ Document or a portion of it, either copied verbatim, or with
++ modifications and/or translated into another language.
++
++ A "Secondary Section" is a named appendix or a front-matter section
++ of the Document that deals exclusively with the relationship of the
++ publishers or authors of the Document to the Document's overall
++ subject (or to related matters) and contains nothing that could
++ fall directly within that overall subject. (Thus, if the Document
++ is in part a textbook of mathematics, a Secondary Section may not
++ explain any mathematics.) The relationship could be a matter of
++ historical connection with the subject or with related matters, or
++ of legal, commercial, philosophical, ethical or political position
++ regarding them.
++
++ The "Invariant Sections" are certain Secondary Sections whose
++ titles are designated, as being those of Invariant Sections, in
++ the notice that says that the Document is released under this
++ License. If a section does not fit the above definition of
++ Secondary then it is not allowed to be designated as Invariant.
++ The Document may contain zero Invariant Sections. If the Document
++ does not identify any Invariant Sections then there are none.
++
++ The "Cover Texts" are certain short passages of text that are
++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
++ that says that the Document is released under this License. A
++ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
++ be at most 25 words.
++
++ A "Transparent" copy of the Document means a machine-readable copy,
++ represented in a format whose specification is available to the
++ general public, that is suitable for revising the document
++ straightforwardly with generic text editors or (for images
++ composed of pixels) generic paint programs or (for drawings) some
++ widely available drawing editor, and that is suitable for input to
++ text formatters or for automatic translation to a variety of
++ formats suitable for input to text formatters. A copy made in an
++ otherwise Transparent file format whose markup, or absence of
++ markup, has been arranged to thwart or discourage subsequent
++ modification by readers is not Transparent. An image format is
++ not Transparent if used for any substantial amount of text. A
++ copy that is not "Transparent" is called "Opaque".
++
++ Examples of suitable formats for Transparent copies include plain
++ ASCII without markup, Texinfo input format, LaTeX input format,
++ SGML or XML using a publicly available DTD, and
++ standard-conforming simple HTML, PostScript or PDF designed for
++ human modification. Examples of transparent image formats include
++ PNG, XCF and JPG. Opaque formats include proprietary formats that
++ can be read and edited only by proprietary word processors, SGML or
++ XML for which the DTD and/or processing tools are not generally
++ available, and the machine-generated HTML, PostScript or PDF
++ produced by some word processors for output purposes only.
++
++ The "Title Page" means, for a printed book, the title page itself,
++ plus such following pages as are needed to hold, legibly, the
++ material this License requires to appear in the title page. For
++ works in formats which do not have any title page as such, "Title
++ Page" means the text near the most prominent appearance of the
++ work's title, preceding the beginning of the body of the text.
++
++ A section "Entitled XYZ" means a named subunit of the Document
++ whose title either is precisely XYZ or contains XYZ in parentheses
++ following text that translates XYZ in another language. (Here XYZ
++ stands for a specific section name mentioned below, such as
++ "Acknowledgements", "Dedications", "Endorsements", or "History".)
++ To "Preserve the Title" of such a section when you modify the
++ Document means that it remains a section "Entitled XYZ" according
++ to this definition.
++
++ The Document may include Warranty Disclaimers next to the notice
++ which states that this License applies to the Document. These
++ Warranty Disclaimers are considered to be included by reference in
++ this License, but only as regards disclaiming warranties: any other
++ implication that these Warranty Disclaimers may have is void and
++ has no effect on the meaning of this License.
++
++ 2. VERBATIM COPYING
++
++ You may copy and distribute the Document in any medium, either
++ commercially or noncommercially, provided that this License, the
++ copyright notices, and the license notice saying this License
++ applies to the Document are reproduced in all copies, and that you
++ add no other conditions whatsoever to those of this License. You
++ may not use technical measures to obstruct or control the reading
++ or further copying of the copies you make or distribute. However,
++ you may accept compensation in exchange for copies. If you
++ distribute a large enough number of copies you must also follow
++ the conditions in section 3.
++
++ You may also lend copies, under the same conditions stated above,
++ and you may publicly display copies.
++
++ 3. COPYING IN QUANTITY
++
++ If you publish printed copies (or copies in media that commonly
++ have printed covers) of the Document, numbering more than 100, and
++ the Document's license notice requires Cover Texts, you must
++ enclose the copies in covers that carry, clearly and legibly, all
++ these Cover Texts: Front-Cover Texts on the front cover, and
++ Back-Cover Texts on the back cover. Both covers must also clearly
++ and legibly identify you as the publisher of these copies. The
++ front cover must present the full title with all words of the
++ title equally prominent and visible. You may add other material
++ on the covers in addition. Copying with changes limited to the
++ covers, as long as they preserve the title of the Document and
++ satisfy these conditions, can be treated as verbatim copying in
++ other respects.
++
++ If the required texts for either cover are too voluminous to fit
++ legibly, you should put the first ones listed (as many as fit
++ reasonably) on the actual cover, and continue the rest onto
++ adjacent pages.
++
++ If you publish or distribute Opaque copies of the Document
++ numbering more than 100, you must either include a
++ machine-readable Transparent copy along with each Opaque copy, or
++ state in or with each Opaque copy a computer-network location from
++ which the general network-using public has access to download
++ using public-standard network protocols a complete Transparent
++ copy of the Document, free of added material. If you use the
++ latter option, you must take reasonably prudent steps, when you
++ begin distribution of Opaque copies in quantity, to ensure that
++ this Transparent copy will remain thus accessible at the stated
++ location until at least one year after the last time you
++ distribute an Opaque copy (directly or through your agents or
++ retailers) of that edition to the public.
++
++ It is requested, but not required, that you contact the authors of
++ the Document well before redistributing any large number of
++ copies, to give them a chance to provide you with an updated
++ version of the Document.
++
++ 4. MODIFICATIONS
++
++ You may copy and distribute a Modified Version of the Document
++ under the conditions of sections 2 and 3 above, provided that you
++ release the Modified Version under precisely this License, with
++ the Modified Version filling the role of the Document, thus
++ licensing distribution and modification of the Modified Version to
++ whoever possesses a copy of it. In addition, you must do these
++ things in the Modified Version:
++
++ A. Use in the Title Page (and on the covers, if any) a title
++ distinct from that of the Document, and from those of
++ previous versions (which should, if there were any, be listed
++ in the History section of the Document). You may use the
++ same title as a previous version if the original publisher of
++ that version gives permission.
++
++ B. List on the Title Page, as authors, one or more persons or
++ entities responsible for authorship of the modifications in
++ the Modified Version, together with at least five of the
++ principal authors of the Document (all of its principal
++ authors, if it has fewer than five), unless they release you
++ from this requirement.
++
++ C. State on the Title page the name of the publisher of the
++ Modified Version, as the publisher.
++
++ D. Preserve all the copyright notices of the Document.
++
++ E. Add an appropriate copyright notice for your modifications
++ adjacent to the other copyright notices.
++
++ F. Include, immediately after the copyright notices, a license
++ notice giving the public permission to use the Modified
++ Version under the terms of this License, in the form shown in
++ the Addendum below.
++
++ G. Preserve in that license notice the full lists of Invariant
++ Sections and required Cover Texts given in the Document's
++ license notice.
++
++ H. Include an unaltered copy of this License.
++
++ I. Preserve the section Entitled "History", Preserve its Title,
++ and add to it an item stating at least the title, year, new
++ authors, and publisher of the Modified Version as given on
++ the Title Page. If there is no section Entitled "History" in
++ the Document, create one stating the title, year, authors,
++ and publisher of the Document as given on its Title Page,
++ then add an item describing the Modified Version as stated in
++ the previous sentence.
++
++ J. Preserve the network location, if any, given in the Document
++ for public access to a Transparent copy of the Document, and
++ likewise the network locations given in the Document for
++ previous versions it was based on. These may be placed in
++ the "History" section. You may omit a network location for a
++ work that was published at least four years before the
++ Document itself, or if the original publisher of the version
++ it refers to gives permission.
++
++ K. For any section Entitled "Acknowledgements" or "Dedications",
++ Preserve the Title of the section, and preserve in the
++ section all the substance and tone of each of the contributor
++ acknowledgements and/or dedications given therein.
++
++ L. Preserve all the Invariant Sections of the Document,
++ unaltered in their text and in their titles. Section numbers
++ or the equivalent are not considered part of the section
++ titles.
++
++ M. Delete any section Entitled "Endorsements". Such a section
++ may not be included in the Modified Version.
++
++ N. Do not retitle any existing section to be Entitled
++ "Endorsements" or to conflict in title with any Invariant
++ Section.
++
++ O. Preserve any Warranty Disclaimers.
++
++ If the Modified Version includes new front-matter sections or
++ appendices that qualify as Secondary Sections and contain no
++ material copied from the Document, you may at your option
++ designate some or all of these sections as invariant. To do this,
++ add their titles to the list of Invariant Sections in the Modified
++ Version's license notice. These titles must be distinct from any
++ other section titles.
++
++ You may add a section Entitled "Endorsements", provided it contains
++ nothing but endorsements of your Modified Version by various
++ parties--for example, statements of peer review or that the text
++ has been approved by an organization as the authoritative
++ definition of a standard.
++
++ You may add a passage of up to five words as a Front-Cover Text,
++ and a passage of up to 25 words as a Back-Cover Text, to the end
++ of the list of Cover Texts in the Modified Version. Only one
++ passage of Front-Cover Text and one of Back-Cover Text may be
++ added by (or through arrangements made by) any one entity. If the
++ Document already includes a cover text for the same cover,
++ previously added by you or by arrangement made by the same entity
++ you are acting on behalf of, you may not add another; but you may
++ replace the old one, on explicit permission from the previous
++ publisher that added the old one.
++
++ The author(s) and publisher(s) of the Document do not by this
++ License give permission to use their names for publicity for or to
++ assert or imply endorsement of any Modified Version.
++
++ 5. COMBINING DOCUMENTS
++
++ You may combine the Document with other documents released under
++ this License, under the terms defined in section 4 above for
++ modified versions, provided that you include in the combination
++ all of the Invariant Sections of all of the original documents,
++ unmodified, and list them all as Invariant Sections of your
++ combined work in its license notice, and that you preserve all
++ their Warranty Disclaimers.
++
++ The combined work need only contain one copy of this License, and
++ multiple identical Invariant Sections may be replaced with a single
++ copy. If there are multiple Invariant Sections with the same name
++ but different contents, make the title of each such section unique
++ by adding at the end of it, in parentheses, the name of the
++ original author or publisher of that section if known, or else a
++ unique number. Make the same adjustment to the section titles in
++ the list of Invariant Sections in the license notice of the
++ combined work.
++
++ In the combination, you must combine any sections Entitled
++ "History" in the various original documents, forming one section
++ Entitled "History"; likewise combine any sections Entitled
++ "Acknowledgements", and any sections Entitled "Dedications". You
++ must delete all sections Entitled "Endorsements."
++
++ 6. COLLECTIONS OF DOCUMENTS
++
++ You may make a collection consisting of the Document and other
++ documents released under this License, and replace the individual
++ copies of this License in the various documents with a single copy
++ that is included in the collection, provided that you follow the
++ rules of this License for verbatim copying of each of the
++ documents in all other respects.
++
++ You may extract a single document from such a collection, and
++ distribute it individually under this License, provided you insert
++ a copy of this License into the extracted document, and follow
++ this License in all other respects regarding verbatim copying of
++ that document.
++
++ 7. AGGREGATION WITH INDEPENDENT WORKS
++
++ A compilation of the Document or its derivatives with other
++ separate and independent documents or works, in or on a volume of
++ a storage or distribution medium, is called an "aggregate" if the
++ copyright resulting from the compilation is not used to limit the
++ legal rights of the compilation's users beyond what the individual
++ works permit. When the Document is included in an aggregate, this
++ License does not apply to the other works in the aggregate which
++ are not themselves derivative works of the Document.
++
++ If the Cover Text requirement of section 3 is applicable to these
++ copies of the Document, then if the Document is less than one half
++ of the entire aggregate, the Document's Cover Texts may be placed
++ on covers that bracket the Document within the aggregate, or the
++ electronic equivalent of covers if the Document is in electronic
++ form. Otherwise they must appear on printed covers that bracket
++ the whole aggregate.
++
++ 8. TRANSLATION
++
++ Translation is considered a kind of modification, so you may
++ distribute translations of the Document under the terms of section
++ 4. Replacing Invariant Sections with translations requires special
++ permission from their copyright holders, but you may include
++ translations of some or all Invariant Sections in addition to the
++ original versions of these Invariant Sections. You may include a
++ translation of this License, and all the license notices in the
++ Document, and any Warranty Disclaimers, provided that you also
++ include the original English version of this License and the
++ original versions of those notices and disclaimers. In case of a
++ disagreement between the translation and the original version of
++ this License or a notice or disclaimer, the original version will
++ prevail.
++
++ If a section in the Document is Entitled "Acknowledgements",
++ "Dedications", or "History", the requirement (section 4) to
++ Preserve its Title (section 1) will typically require changing the
++ actual title.
++
++ 9. TERMINATION
++
++ You may not copy, modify, sublicense, or distribute the Document
++ except as expressly provided for under this License. Any other
++ attempt to copy, modify, sublicense or distribute the Document is
++ void, and will automatically terminate your rights under this
++ License. However, parties who have received copies, or rights,
++ from you under this License will not have their licenses
++ terminated so long as such parties remain in full compliance.
++
++ 10. FUTURE REVISIONS OF THIS LICENSE
++
++ The Free Software Foundation may publish new, revised versions of
++ the GNU Free Documentation License from time to time. Such new
++ versions will be similar in spirit to the present version, but may
++ differ in detail to address new problems or concerns. See
++ `http://www.gnu.org/copyleft/'.
++
++ Each version of the License is given a distinguishing version
++ number. If the Document specifies that a particular numbered
++ version of this License "or any later version" applies to it, you
++ have the option of following the terms and conditions either of
++ that specified version or of any later version that has been
++ published (not as a draft) by the Free Software Foundation. If
++ the Document does not specify a version number of this License,
++ you may choose any version ever published (not as a draft) by the
++ Free Software Foundation.
++
++ADDENDUM: How to use this License for your documents
++====================================================
++
++To use this License in a document you have written, include a copy of
++the License in the document and put the following copyright and license
++notices just after the title page:
++
++ Copyright (C) YEAR YOUR NAME.
++ Permission is granted to copy, distribute and/or modify this document
++ under the terms of the GNU Free Documentation License, Version 1.2
++ or any later version published by the Free Software Foundation;
++ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
++ Texts. A copy of the license is included in the section entitled ``GNU
++ Free Documentation License''.
++
++ If you have Invariant Sections, Front-Cover Texts and Back-Cover
++Texts, replace the "with...Texts." line with this:
++
++ with the Invariant Sections being LIST THEIR TITLES, with
++ the Front-Cover Texts being LIST, and with the Back-Cover Texts
++ being LIST.
++
++ If you have Invariant Sections without Cover Texts, or some other
++combination of the three, merge those two alternatives to suit the
++situation.
++
++ If your document contains nontrivial examples of program code, we
++recommend releasing these examples in parallel under your choice of
++free software license, such as the GNU General Public License, to
++permit their use in free software.
++
++\1f
++File: mgl_ru.info, Node: Index, Prev: Copying This Manual, Up: Top
++
++Индекс
++************
++
++\0\b[index\0\b]
++* Menu:
++
++* AddLegend: Legend sample. (line 6)
++* addlegend: Legend. (line 29)
++* addto: Operators. (line 18)
++* adjust: Axis settings. (line 114)
++* Alpha <1>: 3D plot sample. (line 6)
++* Alpha <2>: 2D plot sample. (line 6)
++* Alpha: Transparent surface sample.
++ (line 6)
++* alpha <1>: Command options. (line 20)
++* alpha: Transparency. (line 15)
++* alphadef <1>: Command options. (line 20)
++* alphadef: Transparency. (line 19)
++* ambient <1>: Command options. (line 26)
++* ambient: Lighting. (line 25)
++* Area <1>: Area gradient sample.
++ (line 6)
++* Area: Area sample. (line 6)
++* area: 1D plotting. (line 56)
++* arrowsize: Default sizes. (line 18)
++* aspect: Transformation matrix.
++ (line 61)
++* Axial <1>: Adding mesh sample. (line 6)
++* Axial: Axial sample. (line 6)
++* axial: 2D plotting. (line 135)
++* axialdir: Other settings. (line 31)
++* Axis <1>: Log-log sample. (line 6)
++* Axis <2>: Semi-log sample. (line 6)
++* Axis <3>: 2-axes sample. (line 6)
++* Axis <4>: Curvelinear coorinates sample.
++ (line 6)
++* Axis <5>: Dens3 sample. (line 6)
++* Axis <6>: Ring chart sample. (line 6)
++* Axis: Pie chart sample. (line 6)
++* axis <1>: Axis and Colorbar. (line 10)
++* axis: Axis settings. (line 12)
++* ball: Primitives drawing. (line 12)
++* Barh: Barh sample. (line 6)
++* barh: 1D plotting. (line 101)
++* Bars <1>: 1D plot sample. (line 6)
++* Bars <2>: Bars fall sample. (line 6)
++* Bars <3>: Bars above sample. (line 6)
++* Bars <4>: Bars 2 colors sample.
++ (line 6)
++* Bars: Bars sample. (line 6)
++* bars: 1D plotting. (line 87)
++* barwidth: Default sizes. (line 11)
++* beam: 3D plotting. (line 119)
++* Belt: Belt sample. (line 6)
++* belt: 2D plotting. (line 57)
++* box: Axis and Colorbar. (line 43)
++* BoxPlot: BoxPlot sample. (line 6)
++* boxplot: 1D plotting. (line 182)
++* Boxs: Boxs sample. (line 6)
++* boxs: 2D plotting. (line 66)
++* call: Program flow. (line 34)
++* caxis: Axis settings. (line 53)
++* Chart <1>: Ring chart sample. (line 6)
++* Chart <2>: Pie chart sample. (line 6)
++* Chart: Chart sample. (line 6)
++* chart: 1D plotting. (line 115)
++* chdir: Program flow. (line 9)
++* clearlegend: Legend. (line 34)
++* clf: Primitives drawing. (line 9)
++* Cloud: Cloud sample. (line 6)
++* cloud: 3D plotting. (line 109)
++* CloudP: CloudP sample. (line 6)
++* Colorbar <1>: Color schemes sample.
++ (line 6)
++* Colorbar: Dens sample. (line 6)
++* colorbar: Axis and Colorbar. (line 17)
++* columnplot: Transformation matrix.
++ (line 39)
++* combine: Make another data. (line 6)
++* cone: Primitives drawing. (line 55)
++* Cont <1>: Cont with labels sample.
++ (line 6)
++* Cont <2>: Surf & Cont sample. (line 6)
++* Cont <3>: Adding mesh sample. (line 6)
++* Cont: Cont sample. (line 6)
++* cont: 2D plotting. (line 89)
++* Cont3: Cont3 sample. (line 6)
++* cont3: 3D plotting. (line 54)
++* conta: 3D plotting. (line 72)
++* ContD: ContD sample. (line 6)
++* contd: 2D plotting. (line 119)
++* ContF: ContF sample. (line 6)
++* contf: 2D plotting. (line 105)
++* ContF3 <1>: Isocaps sample. (line 6)
++* ContF3: ContF3 sample. (line 6)
++* contf3: 3D plotting. (line 76)
++* contfa: 3D plotting. (line 93)
++* contfx: Other plotting. (line 36)
++* contfy: Other plotting. (line 36)
++* contfz: Other plotting. (line 36)
++* ContX: Cont projection sample.
++ (line 6)
++* contx: Other plotting. (line 27)
++* ContY: Cont projection sample.
++ (line 6)
++* conty: Other plotting. (line 27)
++* ContZ: Cont projection sample.
++ (line 6)
++* contz: Other plotting. (line 27)
++* copy: Data create. (line 31)
++* cosfft: Change data. (line 40)
++* crange <1>: Command options. (line 30)
++* crange: Axis settings. (line 75)
++* crop: Rearrange data. (line 31)
++* Crust: Crust sample. (line 6)
++* crust: Other plotting. (line 51)
++* ctick: Axis settings. (line 92)
++* cumsum: Change data. (line 11)
++* curve: Primitives drawing. (line 22)
++* cut <1>: Command options. (line 42)
++* cut: Cutting. (line 10)
++* CutMax <1>: Isocaps sample. (line 6)
++* CutMax: CutMinMax sample. (line 6)
++* CutMin <1>: Isocaps sample. (line 6)
++* CutMin: CutMinMax sample. (line 6)
++* CutOff: CutOff sample. (line 6)
++* defchr: Program flow. (line 21)
++* define: Program flow. (line 12)
++* defnum: Program flow. (line 25)
++* defpal: Program flow. (line 29)
++* delete: Rearrange data. (line 35)
++* Dens <1>: Flow & Dens sample. (line 6)
++* Dens <2>: Adding mesh sample. (line 6)
++* Dens <3>: 3D plot sample. (line 6)
++* Dens <4>: 2D plot sample. (line 6)
++* Dens: Dens sample. (line 6)
++* dens: 2D plotting. (line 81)
++* Dens3: Dens3 sample. (line 6)
++* dens3: 3D plotting. (line 41)
++* densa: 3D plotting. (line 50)
++* DensX: Dens projection sample.
++ (line 6)
++* densx: Other plotting. (line 18)
++* DensY: Dens projection sample.
++ (line 6)
++* densy: Other plotting. (line 18)
++* DensZ: Dens projection sample.
++ (line 6)
++* densz: Other plotting. (line 18)
++* Dew: Dew sample. (line 6)
++* dew: Vector fields. (line 73)
++* diff: Change data. (line 17)
++* diff2: Change data. (line 33)
++* divto: Operators. (line 12)
++* Dots: Dots sample. (line 6)
++* dots: Other plotting. (line 44)
++* Drop <1>: Molecules drawing sample.
++ (line 6)
++* Drop: Drops sample. (line 6)
++* drop: Primitives drawing. (line 46)
++* else: Program flow. (line 64)
++* elseif: Program flow. (line 55)
++* endif: Program flow. (line 68)
++* Envelop: Envelop sample. (line 6)
++* envelop: Change data. (line 72)
++* Error: Error sample. (line 6)
++* error: 1D plotting. (line 173)
++* evaluate: Make another data. (line 10)
++* export: File I/O. (line 48)
++* extend: Rearrange data. (line 12)
++* facex: Primitives drawing. (line 30)
++* facey: Primitives drawing. (line 31)
++* facez: Primitives drawing. (line 32)
++* Fall: Fall sample. (line 6)
++* fall: 2D plotting. (line 47)
++* fgets: Text printing. (line 52)
++* fill: Data filling. (line 6)
++* Fit: Fitting sample. (line 6)
++* fit: Nonlinear fitting. (line 38)
++* fits: Nonlinear fitting. (line 30)
++* Flow <1>: Flow & Dens sample. (line 6)
++* Flow <2>: Flow 3D sample. (line 6)
++* Flow: Flow sample. (line 6)
++* flow: Vector fields. (line 82)
++* Fog: Surface in fog sample.
++ (line 6)
++* fog: Fog. (line 6)
++* font: Other settings. (line 6)
++* fontsize: Command options. (line 46)
++* for: Program flow. (line 72)
++* fplot: Other plotting. (line 94)
++* fsurf: Other plotting. (line 105)
++* func: Program flow. (line 38)
++* Grad: Grad sample. (line 6)
++* grad: 2D plotting. (line 151)
++* grid: Axis and Colorbar. (line 38)
++* grid2: 2D plotting. (line 161)
++* grid3: 3D plotting. (line 98)
++* grida: 3D plotting. (line 105)
++* hankel: Change data. (line 44)
++* hist: Make another data. (line 20)
++* idset: Data create. (line 38)
++* if: Program flow. (line 49)
++* import: File I/O. (line 43)
++* info: Data create. (line 42)
++* inplot: Transformation matrix.
++ (line 30)
++* insert: Rearrange data. (line 42)
++* integrate: Change data. (line 13)
++* jacobian: Make another data. (line 140)
++* Legend: Legend sample. (line 6)
++* legend <1>: Command options. (line 56)
++* legend: Legend. (line 18)
++* legendbox: Legend. (line 37)
++* legendmarks: Legend. (line 41)
++* Light: Several light sample.
++ (line 6)
++* light: Lighting. (line 13)
++* Line <1>: Arrow styles sample. (line 6)
++* Line: Line styles sample. (line 6)
++* line: Primitives drawing. (line 16)
++* linewidth: Default sizes. (line 22)
++* list: Data create. (line 16)
++* Map: Map sample. (line 6)
++* map: Dual plotting. (line 76)
++* Mark <1>: Line styles sample. (line 6)
++* Mark: Mark sample. (line 6)
++* mark: 1D plotting. (line 153)
++* marksize <1>: Command options. (line 49)
++* marksize: Default sizes. (line 15)
++* max: Make another data. (line 47)
++* Mesh: Mesh sample. (line 6)
++* mesh: 2D plotting. (line 40)
++* meshnum <1>: Command options. (line 52)
++* meshnum: Other settings. (line 25)
++* mglParse: Parser sample. (line 6)
++* mglPDE: PDE sample. (line 6)
++* mglQO2d: Beam tracing sample. (line 6)
++* mglRay <1>: Beam tracing sample. (line 6)
++* mglRay: PDE sample. (line 6)
++* min: Make another data. (line 52)
++* mirror: Change data. (line 57)
++* modify: Data filling. (line 6)
++* momentum: Make another data. (line 36)
++* multo: Operators. (line 6)
++* new: Data create. (line 6)
++* next: Program flow. (line 81)
++* norm: Change data. (line 83)
++* normsl: Change data. (line 76)
++* once: Program flow. (line 85)
++* origin: Axis settings. (line 58)
++* palette: Other settings. (line 15)
++* pde: Make another data. (line 94)
++* perspective: Transformation matrix.
++ (line 65)
++* Pipe <1>: Pipe 3D sample. (line 6)
++* Pipe: Pipe sample. (line 6)
++* pipe: Vector fields. (line 114)
++* Plot <1>: Log-log sample. (line 6)
++* Plot <2>: Semi-log sample. (line 6)
++* Plot <3>: Legend sample. (line 6)
++* Plot <4>: 1D plot sample. (line 6)
++* Plot: Plot sample. (line 6)
++* plot: 1D plotting. (line 30)
++* plotfactor: Zooming. (line 10)
++* put: Data filling. (line 29)
++* Puts <1>: Font faces sample. (line 6)
++* Puts <2>: TeX parsing sample. (line 6)
++* Puts: Text styles sample. (line 6)
++* PutsFit: Fitting sample. (line 6)
++* putsfit: Nonlinear fitting. (line 46)
++* qo2d: Make another data. (line 125)
++* quadplot: Other plotting. (line 83)
++* Radar: Radar sample. (line 6)
++* radar: 1D plotting. (line 38)
++* ranges: Axis settings. (line 14)
++* ray: Make another data. (line 114)
++* read: File I/O. (line 6)
++* readall: File I/O. (line 21)
++* readhdf: File I/O. (line 37)
++* readmat: File I/O. (line 16)
++* rearrange: Rearrange data. (line 6)
++* rect: Primitives drawing. (line 61)
++* Region <1>: Region gradient sample.
++ (line 6)
++* Region: Region sample. (line 6)
++* region: 1D plotting. (line 69)
++* resize: Make another data. (line 56)
++* return: Program flow. (line 45)
++* roll: Change data. (line 52)
++* rotate: Transformation matrix.
++ (line 53)
++* rotatetext: Other settings. (line 11)
++* save: File I/O. (line 34)
++* savehdf: File I/O. (line 40)
++* setsize: Export to file. (line 12)
++* SetTicks <1>: Log-log sample. (line 6)
++* SetTicks: Semi-log sample. (line 6)
++* SetTicksVal <1>: StickPlot sample. (line 6)
++* SetTicksVal <2>: ColumnPlot sample. (line 6)
++* SetTicksVal: Manual ticks sample. (line 6)
++* Sew: Sew sample. (line 6)
++* sew: Change data. (line 61)
++* sinfft: Change data. (line 37)
++* smooth: Change data. (line 66)
++* Sphere: Molecules drawing sample.
++ (line 6)
++* sphere: Primitives drawing. (line 42)
++* squeeze: Rearrange data. (line 25)
++* Stem: Stem sample. (line 6)
++* stem: 1D plotting. (line 79)
++* Step: Step sample. (line 6)
++* step: 1D plotting. (line 128)
++* STFA: STFA sample. (line 6)
++* stfa: Dual plotting. (line 86)
++* stfad: Make another data. (line 87)
++* stickplot: Transformation matrix.
++ (line 46)
++* stop: Program flow. (line 89)
++* subdata: Make another data. (line 60)
++* SubPlot <1>: Adding mesh sample. (line 6)
++* SubPlot: 1D plot sample. (line 6)
++* subplot: Transformation matrix.
++ (line 15)
++* subto: Operators. (line 24)
++* sum: Make another data. (line 43)
++* Surf <1>: Mirrored surface sample.
++ (line 6)
++* Surf <2>: Several light sample.
++ (line 6)
++* Surf <3>: Surf & Cont sample. (line 6)
++* Surf <4>: Adding mesh sample. (line 6)
++* Surf <5>: 3D plot sample. (line 6)
++* Surf <6>: 2D plot sample. (line 6)
++* Surf <7>: Sharp colors sample. (line 6)
++* Surf <8>: Surface in fog sample.
++ (line 6)
++* Surf <9>: Transparent surface sample.
++ (line 6)
++* Surf: Surf sample. (line 6)
++* surf: 2D plotting. (line 32)
++* Surf3 <1>: Coloring by coordinates sample.
++ (line 6)
++* Surf3 <2>: CutOff sample. (line 6)
++* Surf3 <3>: Isocaps sample. (line 6)
++* Surf3 <4>: CutMinMax sample. (line 6)
++* Surf3: Surf3 sample. (line 6)
++* surf3: 3D plotting. (line 27)
++* Surf3A: Surf3A sample. (line 6)
++* surf3a: Dual plotting. (line 53)
++* Surf3C: Surf3C sample. (line 6)
++* surf3c: Dual plotting. (line 31)
++* SurfA: SurfA sample. (line 6)
++* surfa: Dual plotting. (line 45)
++* SurfC: SurfC sample. (line 6)
++* surfc: Dual plotting. (line 23)
++* swap: Change data. (line 49)
++* Tens: Tens sample. (line 6)
++* tens: 1D plotting. (line 48)
++* Ternary: Ternary plot sample. (line 6)
++* ternary: Axis settings. (line 63)
++* Text: Text sample. (line 6)
++* text: Text printing. (line 28)
++* TextMark: TextMark sample. (line 6)
++* textmark: 1D plotting. (line 163)
++* ticklen: Default sizes. (line 28)
++* tickstl: Default sizes. (line 33)
++* Tile: Tile sample. (line 6)
++* tile: 2D plotting. (line 73)
++* TileS: TileS sample. (line 6)
++* tiles: Dual plotting. (line 68)
++* title: Text printing. (line 48)
++* tlabel: Axis and Colorbar. (line 51)
++* Torus: Torus sample. (line 6)
++* torus: 1D plotting. (line 135)
++* trace: Make another data. (line 67)
++* Traj: Traj sample. (line 6)
++* traj: Vector fields. (line 20)
++* transform: Make another data. (line 73)
++* transforma: Make another data. (line 83)
++* transparent: Transparency. (line 23)
++* transpose: Rearrange data. (line 21)
++* TranspType <1>: Lamp-like transparency.
++ (line 6)
++* TranspType <2>: Glass-like transparency.
++ (line 6)
++* TranspType: Normal transparency. (line 6)
++* transptype: Transparency. (line 26)
++* tricont: Other plotting. (line 70)
++* triplot: Other plotting. (line 58)
++* Tube: Tube sample. (line 6)
++* tube: 1D plotting. (line 143)
++* var: Data create. (line 11)
++* Vect <1>: Vect 3D sample. (line 6)
++* Vect: Vect sample. (line 6)
++* vect: Vector fields. (line 30)
++* VectC <1>: VectC 3D sample. (line 6)
++* VectC: VectC sample. (line 6)
++* vectc: Vector fields. (line 49)
++* VectL <1>: VectL 3D sample. (line 6)
++* VectL: VectL sample. (line 6)
++* vectl: Vector fields. (line 61)
++* write: Export to file. (line 6)
++* xlabel: Axis and Colorbar. (line 48)
++* xrange <1>: Command options. (line 33)
++* xrange: Axis settings. (line 72)
++* xtick: Axis settings. (line 89)
++* ylabel: Axis and Colorbar. (line 49)
++* yrange <1>: Command options. (line 36)
++* yrange: Axis settings. (line 73)
++* ytick: Axis settings. (line 90)
++* zlabel: Axis and Colorbar. (line 50)
++* zoom: Zooming. (line 16)
++* zrange <1>: Command options. (line 39)
++* zrange: Axis settings. (line 74)
++* ztick: Axis settings. (line 91)
++* Стиль линий: Line styles. (line 6)
++* Стиль маркеров: Line styles. (line 6)
++* Стиль стрелок: Line styles. (line 6)
++* Стиль текста: Font styles. (line 6)
++* Текстовые формулы: Textual formulas. (line 6)
++* Цветовая схема: Color scheme. (line 6)
++
++
++
++\1f
++Local Variables:
++coding: utf-8
++End:
+--- mathgl-1.11.0.1.orig/texinfo/png/Makefile.in
++++ mathgl-1.11.0.1/texinfo/png/Makefile.in
+@@ -38,7 +38,11 @@ subdir = texinfo/png
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- mathgl-1.11.0.1.orig/include/Makefile.in
++++ mathgl-1.11.0.1/include/Makefile.in
+@@ -39,7 +39,11 @@ DIST_COMMON = $(am__nobase_include_HEADE
+ $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- mathgl-1.11.0.1.orig/lang/Makefile.in
++++ mathgl-1.11.0.1/lang/Makefile.in
+@@ -45,7 +45,11 @@ DIST_COMMON = $(am__dist_octave_DATA_DIS
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- mathgl-1.11.0.1.orig/examples/Makefile.in
++++ mathgl-1.11.0.1/examples/Makefile.in
+@@ -66,7 +66,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(sr
+ subdir = examples
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- mathgl-1.11.0.1.orig/mgl/Makefile.in
++++ mathgl-1.11.0.1/mgl/Makefile.in
+@@ -48,7 +48,11 @@ subdir = mgl
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+--- mathgl-1.11.0.1.orig/utils/Makefile.in
++++ mathgl-1.11.0.1/utils/Makefile.in
+@@ -42,7 +42,11 @@ subdir = utils
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
+- $(top_srcdir)/configure.ac
++ $(top_srcdir)/config/libtool.m4 \
++ $(top_srcdir)/config/ltoptions.m4 \
++ $(top_srcdir)/config/ltsugar.m4 \
++ $(top_srcdir)/config/ltversion.m4 \
++ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+++ /dev/null
-This is mgl_ru.info, produced by makeinfo version 4.13 from mgl_ru.texi.
-
-Это документация для MathGL (версии 1.11) - библиотеки классов и
-функций для построения научной графики. Пожалуйста сообщайте о любых
-ошибках в этом руководстве на <mathgl.abalakin@gmail.org>.
-
- Copyright (C) 2009 Алексей Балакин.
-
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.2 or any later version published by the Free Software
- Foundation; with no Invariant Sections, with the Front-Cover Texts
- being "A GNU Manual," and with the Back-Cover Texts as in (a)
- below. A copy of the license is included in the section entitled
- "GNU Free Documentation License."
-
- (a) The FSF's Back-Cover Text is: "You have the freedom to copy
- and modify this GNU manual. Buying copies from the FSF supports
- it in developing GNU and promoting software freedom."
-
-INFO-DIR-SECTION MathGL documentation system
-START-INFO-DIR-ENTRY
-* MathGL: (mathgl). The library for scientific graphics.
-END-INFO-DIR-ENTRY
-
-\1f
-File: mgl_ru.info, Node: Top, Next: MGL interface, Up: (dir)
-
-Язык MGL
-************
-
-Это документация для языка MGL (версии 1.11). Пожалуйста сообщайте о
-любых ошибках в этом руководстве на <mathgl.abalakin@gmail.org>.
-Дополнительную информацию о MGL и MathGL можно найти на домашней
-странице проекта `http://mathgl.sourceforge.net/'.
-
- Copyright (C) 2010 Алексей Балакин.
-
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.2 or any later version published by the Free Software
- Foundation; with no Invariant Sections, with the Front-Cover Texts
- being "A GNU Manual," and with the Back-Cover Texts as in (a)
- below. A copy of the license is included in the section entitled
- "GNU Free Documentation License."
-
- (a) The FSF's Back-Cover Text is: "You have the freedom to copy
- and modify this GNU manual. Buying copies from the FSF supports
- it in developing GNU and promoting software freedom."
-
-* Menu:
-
-* MGL interface::
-* Examples::
-* Samples::
-* Copying This Manual::
-* Index::
-
-\1f
-File: mgl_ru.info, Node: MGL interface, Next: Examples, Up: Top
-
-1 Язык MGL
-**************
-
-MathGL имеет встроенный скриптовый язык MGL для обработки и отображения
-данных. Скрипты MGL можно использовать как независимо (программами
-UDAV, mgl2png, mgl2eps, mgl2svg и пр., *note Utilities::) так и
-вызовами библиотеки.
-
- Язык MGL достаточно простой. Каждая строка - отдельная команда.
-Первое слово - имя команды, а все остальные ее аргументы. Команда может
-иметь до 1000 аргументов (по крайней мере сейчас). Слова разделяются
-одно от другого пробелом или символом табуляции. Различий между верхним
-и нижним индексом нет, т.е. переменные A и A идентичны. Символ `#'
-начинает комментарий - все символы после него игнорируются до конца
-строки. Исключением является случай, когда `#' входит в строку. Опции
-команды указываются после символа `;' (*note Command options::). Символ
-`:' начинает новую команду (подобно переводу строки) если он расположен
-не внутри скобок или строки.
-
- Если строка содержит ссылки на внешние параметры (`$0', `$1' ...
-`$9') или макроопределения (`$a', `$b' ... `$z'), то текущие значения
-параметров/макроопределений подставляются в строку вместо ссылки до
-выполнением команды. Это позволяет использовать один и тот же скрипт
-при различных входных параметрах командной строки или вводить
-макроопределения по ходу исполнения команд скрипта.
-
- Аргументы команды могут быть строками, переменными или числами.
- * Строка - произвольный набор символов между метками `''.
-
- * Обычно переменная имеет имя, состоящее из букв и чисел (должно
- начинаться с буквы и не быть длиннее 64 символов). В качестве
- переменной можно использовать временные массивы, включающие в себя:
- * срезы ("подмассивы") массивов данных (подобно команде *note
- subdata::). Например, `a(1)' или `a(1,:)' или `a(1,:,:)' -
- вторая строка массива A, `a(:,2)' или `a(:,2,:)' - третий
- столбец, `a(:,:,0)' - первый срез и т.д. Также можно выделить
- часть массива с m-го по n-ый элемент `a(m:n,:,:)' или просто
- `a(m:n)'.
-
- * произвольные комбинации столбцов данных (например,
- `a('n*w^2/exp(t)')'), если столбцы данных были именованы
- командой *note idset:: или в файле данных (в строке
- начинающейся с `##').
-
- * произвольное выражение из существующих переменных и констант.
- Например, `sqrt(dat(:,5)+1)' даст временный массив данных с
- элементами равными `tmp[i,j] = sqrt(dat[i,5,j]+1)'.
-
- * массивы с элементами заданными в квадратных скобках [],
- разделенные `,'. При этом внутри выражения не должно быть
- пробелов! Например, `[1,2,3]' даст временный массив из 3
- элементов {1, 2, 3}; `[[11,12],[21,22]]' даст матрицу 2*2 и
- т.д. Элементами такой конструкции могут быть и массивы если
- их размерности одинаковые, например `[v1,v2,...,vn]'.
-
- * результат команд построения новых данных (*note Make another
- data::), если они заключены в фигурные скобки {}. Например,
- `{sum dat 'x'}' даст временный массив, который есть результат
- суммирования DAT вдоль 'x'. Это такой же массив как и TMP,
- полученный командой `sum tmp dat 'x''. При этом можно
- использовать вложенные конструкции, например `{sum {max dat
- 'z'} 'x'}'.
- Временные массивы не могут стоять в качестве первого аргумента
- команд, создающих массивы (например, `new', `read', `hist' и т.д.).
-
- * К скалярным переменным, кроме собственно чисел, относятся:
- специальные переменные `nan=#QNAN, pi=3.1415926..., on=1, off=0,
- :=-1', переменные с суффиксами (*note Suffixes::), переменные
- определенные командой *note define::. Также массивы размером 1x1x1
- считаются скалярами (например, `pi/dat.nx').
- Перед первым использованием все переменные должны быть определены с
-помощью команд, создающих массивы (*note new::, *note var::, *note
-list::, *note copy::, *note read::, *note hist::, *note sum:: и др.,
-*note Data create:: и *note Make another data::).
-
- Команды могут иметь несколько наборов аргументов (например, `plot
-ydat' и `plot xdat ydat'). Все аргументы команды для выбранного набора
-должны быть указаны, однако часть из них могут иметь значения по
-умолчанию. Такие аргументы в описании команд будут помещены в
-квадратные скобки [], например `plot ydat ['stl'='' zval=nan]'. При
-этом запись `[arg1 arg2 arg3 ...]' подразумевает `[arg1 [arg2 [arg3
-...]]]', т.е. опускать можно только аргументы с конца, если вы согласны
-с их значениями по умолчанию. Например, `plot ydat '' 1' или `plot ydat
-''' правильно, а `plot ydat 1' не правильно (аргумент `'stl'' пропущен).
-
- Все команды MGL можно разделить на несколько групп. В дальнейшем
-будет использованы следующие обозначения при описании команд: имя
-команды выделено жирным, строки заключены в одинарные кавычки ",
-переменные выделены курсивом, числа (скаляры) выделены моноширинным
-шрифтом. Необязательные аргументы будут помещены в квадратные скобки []
-и показаны их значения по умолчанию. Подробную информацию о цвете и
-стиле линий (*note Line styles::), цветовых схемах (*note Color
-scheme::), стиле текста и символах TeX (*note Font styles::), текстовых
-формулах (*note Textual formulas::) можно найти в соответствующих
-разделах.
-
-* Menu:
-
-
-* General concepts::
-* Graphics setup ::
-* Axis settings ::
-* Transformation matrix ::
-* Export to file ::
-* Primitives drawing ::
-* Text printing ::
-* Axis and Colorbar ::
-* Legend ::
-* 1D plotting ::
-* 2D plotting ::
-* 3D plotting ::
-* Dual plotting ::
-* Vector fields ::
-* Other plotting ::
-* Nonlinear fitting ::
-* Data create ::
-* Data filling ::
-* Rearrange data ::
-* File I/O ::
-* Make another data ::
-* Change data ::
-* Operators ::
-* Program flow ::
-* Command options ::
-* Suffixes::
-* Utilities::
-
-\1f
-File: mgl_ru.info, Node: General concepts, Prev: Utilities, Up: MGL interface
-
-1.1 Основные принципы
-=====================================
-
-Возможности библиотеки MathGL довольно богаты - число только основных
-типов графиков превышает 50 видов. Кроме того, есть функции для
-обработки данных, настройки вида графика и пр. и пр. Тем не менее, я
-старался придерживаться единого стиля в порядке аргументов функций и
-способе их "настройки". В основном все ниже сказанное относится к
-функциям рисования различных графиков.
-
- Всего основных концепций (базисных идей) четыре:
- 1. *Все настройки графиков (стиль линий, цветовые схемы поверхностей,
- стиль и цвет текста) задаются строками.* Это обеспечивает:
- удобство для пользователя - короткую строку легче читать и здесь
- тяжелее ошибиться, чем в большом списке параметров; переносимость
- - строки выглядят одинаково на всех платформах и не надо
- заботиться о типе и числе аргументов.
-
- 2. *Все функции имеют "упрощенный" и "продвинутый" варианты.* Сделано
- опять из-за удобства. В "упрощенном" варианте для построения
- графика нужны только один-два массив(а) данных, которые
- автоматически равнораспределяются в заданном диапазоне осей
- координат. В "продвинутой" версии можно не только указать явно
- диапазон построения графика, но и задать его параметрически.
- Последнее позволяет легко строить довольно сложные кривые и
- поверхности. В обоих вариантах функций порядок аргументов
- стандартен: сначала идут массивы данных, потом необязательный
- строковый параметр стиля графика, а далее - второстепенные
- необязательные параметры для более точной настройки графика.
-
- 3. *Все элементы рисунков векторные.* Изначально библиотека MathGL
- была ориентированна на работу с научными данными, которые по своей
- природе векторные (линии, грани, матрицы и т.д.). Поэтому
- векторность используется во всех рисунках! Причем иногда даже в
- ущерб производительности (например, при выводе шрифтов). Помимо
- всего прочего, векторность позволяет легко масштабировать рисунок
- - измените размер картинки в 2 раза, и рисунок пропорционально
- растянется.
-
- 4. *Новые графики не удаляют уже нарисованное.* Этот, в чем-то
- неожиданный, подход позволяет создавать огромное количество
- "комбинированных" графиков. Например, поверхность с наложенными
- линиями уровня строится двумя последовательными вызовами функций
- рисования поверхности и линий уровня (в любом порядке). И
- совершенно не надо писать специальную функцию (как в Matlab и
- некоторых других программах) для рисования этого графика. Примеров
- таких графиков можно привести множество (см. раздел *note Hints::
- и сайт программы `http://mathgl.sf.net/index.html').
-
- Кроме основных концепций я хотел бы остановиться на нескольких, как
-оказалось, нетривиальных моментах - способе указания положения графика,
-осей координат и строковых параметров линий, поверхностей, текста.
-
-* Menu:
-
-* Coordinate axes::
-* Line styles::
-* Color scheme::
-* Font styles::
-* Textual formulas::
-
-\1f
-File: mgl_ru.info, Node: Coordinate axes, Next: Line styles, Up: General concepts
-
-1.1.1 Оси координат
--------------------------------
-
-Представление системы координат в MathGL состоит из двух частей.
-Вначале координаты нормируются в интервал MINxMAX (*note Axis
-settings::). Если флаг CUT установлен, то точки вне интервала
-отбрасываются, в противном случае, они проецируются на ограничивающий
-параллелепипед (*note Cutting::). Кроме того, отбрасываются точки
-внутри границ, определенных переменными CUTMINxCUTMAX и точки, для
-которых значение функции `CutOff'() не равно нулю. После этого формулы
-перехода в криволинейную систему координат `SetFunc()'применяются к
-каждой точке. Наконец, точка данных отображается с помощью одной из
-графических функций.
-
- Величины MAX, MIN можно изменять вручную. Однако, после этого
-необходимо вызвать функцию `RecalcBorder()' для настройки графика.
-Более удобный и безопасный путь состоит в вызове функций `Axis(),
-SetRanges()' и др. В последнем случае функция `RecalcBorder()'
-вызывается автоматически. Размеры осей можно задавать и автоматически
-по минимальному и максимальному значениям массива данных. Для этого
-предназначены функции `XRange(), YRange(), ZRange()'. Второй не
-обязательный аргумент указывает, заменять ли новые значения диапазона
-изменения оси координат (по умолчанию) или только расширить уже
-существующий диапазон.
-
- Точка пересечения осей координат задается переменной ORG и действует
-на последующие вызовы функций рисования осей координат и сетки. По
-умолчанию, если точка пересечения осей координат попадает вне диапазона
-осей координат, то она проецируется на границу области. Изменить такое
-поведение можно, задав AUTOORG=`false'. В случае, если одно из значений
-ORG равно NAN, то соответствующее значение будет выбрано автоматически.
-
- Кроме привычных осей _x, y, z_ есть еще одна ось - цветовая шкала -
-ось _c_. Она используется при окрашивании поверхностей и задает границы
-изменения функции при окрашивании. При вызове `Axis()' ее границы
-автоматически устанавливаются равными Min.z и Max.z. Возможно и ручное
-изменение границ цветового интервала посредством вызова функции
-`CAxis()' или изменение границ по заданному массиву `CRange()'.
-Используйте `Colorbar()' для отображения цветовой шкалы.
-
- Вид меток по осям определяется функцией `SetTicks()' (*note Axis
-settings::). Она имеет 3 аргумента: первый D задает шаг меток (если
-положительны) или их число (если отрицательны) или логарифмические
-метки (если равны нулю); второ NS задает число "подметок"; последний
-определяет начальную точку для меток (по умолчанию это точка
-пересечения осей). Функция SETTUNETICKS включает/выключает выделение
-общего множителя (большого или малого факторов в диапазоне) для меток
-осей координат. Наконец, если стандартный вид меток не устраивает
-пользователя, то их шаблон можно задать явно (можно использовать и ТеХ
-символы), воспользовавшись функциями `SetXTT(), SetYTT(). SetZTT().
-SetCTT()'. Кроме того, в качестве меток можно вывести произвольный
-текст использовав функцию `SetTicksVal()'.
-
-\1f
-File: mgl_ru.info, Node: Line styles, Next: Color scheme, Prev: Coordinate axes, Up: General concepts
-
-1.1.2 Стиль линий
----------------------------
-
-Стиль линии задается строкой, которая может содержать символ цвета
-(`wkrgbcymhRGBCYMHWlenupqLENUPQ'), тип пунктира (`-|;:ji' или пробел),
-ширину линии (`0123456789') и тип маркера (`o+xsd.^v' и модификатор
-`#'). Если пропущен цвет или тип пунктира, то используется значение по
-умолчанию с последним указанным цветом или значение из палитры (для
-*note 1D plotting::). По умолчанию палитры содержит следующие цвета:
-темно серый `H', синий `b', зеленый `g', красный `r', голубой `c',
-пурпурный `m', yellow `y', серый `h', сине-зеленый `l', небесно-синий
-`n', оранжевый `q', желто-зеленый `e', сине-фиолетовый `u', фиолетовый
-`p'.
-
- Символы цвета те же, что и в классе mglColor (*note mglColor
-class::): `k' - черный, `r' - красный, `R' - темно красный, `g' -
-зеленый, `G' - темно зеленый, `b' - синий, `B' - темно синий, `c' -
-голубой, `C' - темно голубой, `m' - пурпурный, `M' - темно пурпурный,
-`y' - желтый, `Y' - темно желтый (золотой), `h' - серый, `H' - темно
-серый, `w' - белый, `W' - светло серый, `l' - сине-зеленый, `L' - темно
-сине-зеленый, `e' - желто-зеленый, `E' - темно желто-зеленый, `n' -
-небесно-синий, `N' - темно небесно-синий, `u' - сине-фиолетовый, `U' -
-темно сине-фиолетовый, `p' - фиолетовый, `P' - темно фиолетовый, `q' -
-оранжевый, `Q' - темно оранжевый (коричневый).
-
- Тип пунктира: пробел - нет линии (для рисования только маркеров),
-`-' - сплошная линия (################), `|' - длинный пунктир
-(########________), `;' - пунктир (####____####____), `=' - короткий
-пунктир (##__##__##__##__), `:' - точки (#___#___#___#___), `j' -
-пунктир с точками (#######____#____), `i' - мелкий пунктир с точками
-(###__#__###__#__).
-
- Типы маркеров: `o' - окружность, `+' - крест, `x' - косой крест, `s'
-- квадрат, `d' - ромб, `.' - точка, `^' - треугольник вверх, `v' -
-треугольник вниз, `<' - треугольник влево, `>' - треугольник вправо,
-`#*' - знак Y, `#+' - крест в квадрате, `#x' - косой крест в квадрате,
-`#.' - точка в окружности. Если в строке присутствует символ `#', то
-используются символы с заполнением.
-
-\0\b[image src="../png/sample5.png"\0\b]
-
-Стили линий и маркеров.
-
- На конце и в начале линии можно выводить специальный символ
-(стрелку), если в строке указать один из символов: `A' - стрелка
-наружу, `V' - стрелка внутрь, `I' - поперечная черта, `K' - стрелка с
-чертой, `T' - треугольник, `S' - квадрат, `D' - ромб, `O' - круг, `_' -
-нет стрелки (по умолчанию). При этом действует следующее правило:
-первый символ определяет стрелку на конце линии, второй символ -
-стрелку в начале линии. Например, `r-A' - красная сплошная линия со
-стрелкой на конце, `b|AI' - синий пунктир со стрелкой на конце и чертой
-вначале, `_O' - линия с текущим стилем и кружком вначале. Эти стили
-действуют и при построении графиков (например, *note 1D plotting::).
-
-\0\b[image src="../png/sampled.png"\0\b]
-
-Стили стрелок.
-
-\1f
-File: mgl_ru.info, Node: Color scheme, Next: Font styles, Prev: Line styles, Up: General concepts
-
-1.1.3 Цветовая схема
----------------------------------
-
-Цветовая схема используется для определения цвета поверхностей, линий
-уровня и пр. Цветовая схема задается строкой _s_, которая содержит
-символы цвета (*note Line styles::) или символы `d#:|'. Символ `d'
-указывает на определение цвета в зависимости от положения точки в
-пространстве, а не по амплитуде данных. Символ `#' переключает
-рисование поверхности на сетчатое (для трехмерных поверхностей) или
-включает рисование сетки на поверхности. Символ `|' отключает
-интерполяцию цвета в цветовой схеме. Это может быть полезно для
-"резких" цветов, например, при рисовании матриц. Если в строке
-встречается символ `:', то он принудительно заканчивает разбор строки
-для стиля поверхности. После этого символа могут идти описание стиля
-текста или оси вращения кривой/линий уровня. Цветовая схема может
-содержать до 32 значений цвета.
-
- В цветовой схеме можно использовать тональные ("подсвеченные") цвета
-(_не в стиле линий!_). Тональный цвет задается двумя символами: первый
-- обычный цвет, второй - его яркость цифрой. Цифра может быть в
-диапазоне `1'...`9'. При этом `5' соответствует нормальному цвету, `1'
-- очень темная версия цвета (почти черный), `9' - очень светлая версия
-цвета (почти белый). Например цветовая схема может быть `b2b7wr7r2'.
-
-\0\b[image src="../png/colors.png"\0\b]
-
-Цвета и их идентификаторы.
-
- При определении цвета по _амплитуде_ (наиболее часто используется)
-окончательный цвет определяется путем линейной интерполяции массива
-цветов. Массив цветов формируется из цветов, указанных в строке
-спецификации. Аргумент - амплитуда, нормированная между CMIN - CMAX
-(*note Axis settings::). Например, строка из 4 символов `bcyr'
-соответствует изменению цвета от синего (минимальное значение) через
-голубой и желтый (промежуточные значения) к красному (максимальное
-значение). Строка `kw' соответствует изменению цвета от черного
-(минимальное значение) к белому (максимальное значение). Строка из
-одного символа (например, `g') соответствует однотонному цвету (в
-данному случае зеленому).
-
- Есть несколько полезных цветовых схем. Строка `kw' дает обычную
-серую (черно-белую) схему, когда большие значения светлее. Строка `wk'
-представляет обратную серую схему, когда большие значения темнее.
-Строки `kRryw', `kGgw', `kBbcw' представляют собой хорошо известные
-схемы _hot_, _summer_ и _winter_. Строки `BbwrR' и `bBkRr' позволяют
-рисовать двухцветные фигуры на белом или черном фоне, когда
-отрицательные значения показаны синим цветом, а положительные -
-красным. Строка `BbcyrR' дает цветовую схему, близкую к хорошо
-известной схеме _jet_.
-
-\0\b[image src="../png/color_schemes.png"\0\b]
-
-Наиболее популярные цветовые схемы.
-
- При определении цвета по _положению точки в пространстве_
-окончательный цвет определяется по формуле c=x*c[1] + y*c[2] + z*c[3].
-Здесь c[1], c[2], c[3] - первые три цвета в цветовом массиве; x, y, z -
-координаты точки, нормированные на MINxMAX. Такой тип определения цвета
-полезен, например, при построении поверхностей уровня, когда цвет дает
-представление о положении точки в пространстве.
-
-\1f
-File: mgl_ru.info, Node: Font styles, Next: Textual formulas, Prev: Color scheme, Up: General concepts
-
-1.1.4 Стиль текста
------------------------------
-
-Стиль текста задается строкой, которая может содержать несколько
-символов: тип шрифта (`ribwou') и/или выравнивания (`LRC'), а также
-цвет текста `wkrgbcymhRGBCYMHW' (*note Line styles::) после символа
-`:'. Например, `biC:b' соответствует жирному курсиву с выравниванием по
-центру синего цвета.
-
- Начертания шрифта: `r' - прямой шрифт, `i' - курсив, `b' - жирный.
-По умолчанию используется прямой шрифт. Типы выравнивания текста: `L' -
-по левому краю (по умолчанию), `C' - по центру, `R' - по правому краю.
-Дополнительные эффекты шрифта: `w' - контурный, `o' - надчеркнутый, `u'
-- подчеркнутый.
-
- Синтаксический разбор LaTeX-их команд по умолчанию включен. Это
-команды смены стиля текста (например, \b для жирного текста): \a или
-\overline - надчеркивание, \b или \textbf - жирный, \i или \textit -
-курсив, \r или \textrm - прямой (отменяет стили жирного и курсива), \u
-или \underline - подчеркнутый, \w или \wire - контурный, \big -
-большего размера, @ - меньшего размера. Нижний и верхний индексы
-задаются символами `_' и `^'. При этом изменение стиля применяется
-только к следующему символу или к символам в фигурных скобках {},
-которые понимаются как единый блок. Например, сравните строки `sin
-(x^{2^3})' и `sin (x^2^3)'. Можно также менять цвет текста внутри
-строки с помощью команд #? или \color?, где `?' - символ цвета (*note
-Line styles::). Например, слова `Blue' и `red' будут окрашены в
-соответствующий цвет в строке `#b{Blue} and \colorr{red} text'.
-Большинство функций понимает символ новой строки `\n' и позволяет
-выводить много строчный текст. Наконец, можно использовать символы с
-произвольным UTF кодом с помощью команды `\utf0x????'. Например,
-`\utf0x3b1' даст символ \alpha.
-
- Распознаются также большинство символов TeX и AMSTeX, команды смены
-стиля текста (\textrm, \textbf, \textit, \textsc, \overline,
-\underline), акценты (\hat, \tilde, \dot, \ddot, \acute, \check,
-\grave, \bar, \breve) и корни (\sqrt, \sqrt3, \sqrt4). Полный список
-содержит около 2000 символов. Отмечу, что первый пробел (пробел,
-табуляция и пр.) после команды игнорируется, а все остальные пробелы
-печатаются обычным образом. Например, следующие строки дают одинаковый
-результат \tilde a: `\tilde{a}'; `\tilde a'; `\tilde{}a'.
-
- В частности, распознаются греческие буквы: \alpha - \alpha, \beta -
-\beta, \gamma - \gamma, \delta - \delta, \epsilon - \epsilon, \eta -
-\eta, \iota - \iota, \chi - \chi, \kappa - \kappa, \lambda - \lambda,
-\mu - \mu, \nu - \nu, o - \o, \omega - \omega, \phi - \phi, \pi - \pi,
-\psi - \psi, \rho - \rho, \sigma - \sigma, \theta - \theta, \tau -
-\tau, \upsilon - \upsilon, \xi - \xi, \zeta - \zeta, \varsigma -
-\varsigma, \varepsilon - \varepsilon, \vartheta - \vartheta, \varphi -
-\varphi, A - \Alpha, B - \Beta, \Gamma - \Gamma, \Delta - \Delta, E -
-\Epsilon, H - \Eta, I - \Iota, C - \Chi, K - \Kappa, \Lambda - \Lambda,
-M - \Mu, N - \Nu, O - \O, \Omega - \Omega, \Phi - \Phi, \Pi - \Pi, \Psi
-- \Psi, R - \Rho, \Sigma - \Sigma, \Theta - \Theta, T - \Tau, \Upsilon
-- \Upsilon, \Xi - \Xi, Z - \Zeta.
-
- Еще примеры наиболее общеупотребительных TeX-их символов: \angle -
-\angle, \aleph - \aleph, \cdot - \cdot, \clubsuit - \clubsuit, \cup -
-\cup, \cap - \cap, \diamondsuit - \diamondsuit, \diamond - \diamond,
-\div - \div, \downarrow - \downarrow, \dag - \dag, \ddag - \ddag,
-\equiv - \equiv, \exists - \exists, \frown - \frown, \flat - \flat, \ge
-- \ge, \geq - \geq, \gets - \gets, \heartsuit - \heartsuit, \infty -
-\infty, \in - \in, \int - \int, \Im - \Im, \langle - \langle, \le -
-\le, \leq - \leq, \leftarrow - \leftarrow, \mp - \mp, \nabla - \nabla,
-\ne - \ne, \neq - \neq, \natural - \natural, \oint - \oint, \odot -
-\odot, \oplus - \oplus, \partial - \partial, \parallel - \parallel,
-\perp - \perp, \pm - \pm, \propto - \propto, \prod - \prod, \Re - \Re,
-\rightarrow - \rightarrow, \rangle - \rangle, \spadesuit - \spadesuit,
-\sim - \sim, \smile - \smile, \subset - \subset, \supset - \supset,
-\surd - \sqrt or \surd, \S - \S, \sharp - \sharp, \sum - \sum, \times -
-\times, \to - \to, \uparrow - \uparrow, \wp - \wp and so on.
-
- Размер текста может быть задан явно (если SIZE>0) или относительно
-базового размера шрифта для рисунка |SIZE|*FONTSIZE при SIZE<0.
-Значение SIZE=0 указывает, что соответствующая строка выводиться не
-будет. Базовый размер шрифта измеряется во внутренних единицах.
-Специальные функции `SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()'
-позволяют задавать его в более "привычных" единицах.
-
-\1f
-File: mgl_ru.info, Node: Textual formulas, Prev: Font styles, Up: General concepts
-
-1.1.5 Текстовые формулы
----------------------------------------
-
-MathGL имеет быстрый парсер текстовых формул , понимающий большое число
-функций и операций. Базовые операции: `+' - сложение, `-' - вычитание,
-`*' - умножение, `/' - деление, `^' - возведение в целосичленную
-степень. Также есть логические операции: `<' - истина если if x<y, `>'
-- истина если x>y, `=' - истина если x=y, `&' - истина если x и y оба
-не равны нулю, `|' - истина если x или y не нуль. Логические операции
-имеют наинизший приоритет и возвращают 1 если истина или 0 если ложно.
-
- Базовые функции: `sqrt(x)' - квадратный корень из X, `pow(x,y)' - X
-в степени Y, `ln(x)' - натуральный логарифм X, `lg(x)' - десятичный
-логарифм X, `log(a,x)' - логарифм по основанию A от X, `abs(x)' -
-модуль X, `sign(x)' - знак X, `mod(x,y)' - остаток от деления x на y,
-`step(x)' - ступенчатая функция, `int(x)' - целая часть X, `rnd' -
-случайное число, `pi' - число \pi=3.1415926...
-
- Тригонометрические функции: `sin(x)', `cos(x)', `tan(x)' (или
-`tg(x)'). Обратные тригонометрические функции: `asin(x)', `acos(x)',
-`atan(x)'. Гиперболические функции: `sinh(x)' (или `sh(x)'), `cosh(x)'
-(или `ch(x)'), `tanh(x)' (или `th(x)'). Обратные гиперболические
-функции: `asinh(x)', `acosh(x)', `atanh(x)'.
-
- Специальные функции: `gamma(x)' - гамма функция \Gamma(x) =
-\int_0^\infty dt t^{x-1} \exp(-t) , `psi(x)' - дигамма функция \psi(x)
-= \Gamma</samp>’(x)/\Gamma(x) для x!=0, `ai(x)' - Эйри функция
-Ai(x), `bi(x)' - Эйри функция Bi(x), `cl(x)' - функция Клаузена,
-`li2(x)' (или `dilog(x)') - дилогарифм Li_2(x) = - \Re \int_0^x ds
-\log(1-s)/s, `sinc(x)' - функция sinc(x) = \sin(\pi x) / (\pi x) для
-любых x, `zeta(x)' - зета функция Римана \zeta(s) = \sum_{k=1}^\infty
-k^{-s} для s!=1, `eta(x)' - эта функция \eta(s) = (1-2^{1-s}) \zeta(s)
-для произвольного s, `lp(l,x)' - полином Лежандра P_l(x), (|x|<=1,
-l>=0), `w0(x)', `w1(x)' - функции Ламберта W. Функции W(x) определены
-как решение уравнения W \exp(W) = x.
-
- Экспоненциальные интегралы: `ci(x)' - cos-интеграл Ci(x) = \int_0^x
-dt \cos(t)/t, `si(x)' - sin-интеграл Si(x) = \int_0^x dt \sin(t)/t,
-`erf(x)' - функция ошибки erf(x) = (2/\sqrt(\pi)) \int_0^x dt
-\exp(-t^2), `ei(x)' - интеграл Ei(x) := - PV(\int_{-x}^\infty dt
-\exp(-t)/t) (где PV обозначает главное значение), `e1(x)' - интеграл
-E_1(x) := Re \int_1^\infty dt \exp(-xt)/t , `e2(x)' - интеграл E_2(x)
-:= Re \int_1^\infty dt \exp(-xt)/t^2, `ei3(x)' - интеграл Ei_3(x) =
-\int_0^x dt \exp(-t^3) для x>=0.
-
- Функции Бесселя: `j(nu,x)' - функция Бесселя первого рода, `y(nu,x)'
-- функция Бесселя второго рода, `i(nu,x)' - модифицированная функция
-Бесселя первого рода, `k(nu,x)' - модифицированная функция Бесселя
-второго рода.
-
- Эллиптические интегралы: `ee(k)' - полный эллиптический интеграл
-E(k) = E(\pi/2, k), `ek(k)' - полный эллиптический интеграл K(k) =
-F(\pi/2, k), `e(phi,k)' - эллиптический интеграл E(\phi,k) =
-\int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))), `f(phi,k)' - эллиптический
-интеграл F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))).
-
- Функции Якоби: `sn(u,m)', `cn(u,m)', `dn(u,m)', `sc(u,m)',
-`sd(u,m)', `ns(u,m)', `cs(u,m)', `cd(u,m)', `nc(u,m)', `ds(u,m)',
-`dc(u,m)', `nd(u,m)'.
-
- Некоторые из функций могут быть недоступны если флаг NO_GSL был
-определен при компиляции библиотеки MathGL.
-
- При разборе формул нет различия между верхним и нижним регистром.
-Если аргумент лежит вне области определения функции, то возвращается
-NaN.
-
-\1f
-File: mgl_ru.info, Node: Graphics setup, Next: Axis settings, Prev: General concepts, Up: MGL interface
-
-1.2 Настройка графика
-=====================================
-
-Команды в этой группе влияют на вид всего рисунка. Соответственно они
-должны располагаться _перед_ вызовом функций непосредственно рисующих
-графики.
-
-* Menu:
-
-* Transparency ::
-* Lighting ::
-* Fog ::
-* Default sizes ::
-* Zooming ::
-* Cutting ::
-* Other settings ::
-
-\1f
-File: mgl_ru.info, Node: Transparency, Next: Lighting, Up: Graphics setup
-
-1.2.1 Прозрачность
-------------------------------
-
-Эти команды настраивают тип и степень прозрачности поверхностей.
-Главной является функция *note alpha::, которая включает/выключает
-прозрачность для всех графиков, созданных после вызова *note alpha::.
-Функция *note alphadef:: устанавливает величину alpha-канала по
-умолчанию. Прозрачность можно выключить для отдельного графика с
-помощью *note transparent::. Наконец, функция *note transptype:: задает
-тип прозрачности. См. раздел *note Transparent surface sample::, для
-примеров кода и графика.
-
- -- Команда MGL: alpha `[val=on]'
- Включает/выключает прозрачность для _всего_ рисунка. По умолчанию
- прозрачность выключена. Используйте `transparent off' для
- конкретного графика для выключения прозрачности.
-
- -- Команда MGL: alphadef `val'
- Задает значение прозрачности по умолчанию для всех графиков.
- Начальное значение 0.5.
-
- -- Команда MGL: transparent `val'
- Временно включает/возвращает прозрачность графиков.
-
- -- Команда MGL: transptype `val'
- Задает тип прозрачности. Обычная прозрачность (`0') - "закрытые"
- объекты видны меньше чем закрывающие. "Стеклянная" прозрачность
- (`1') - закрытые и закрывающие объекты единообразно ослабляют
- интенсивность света (по RGB каналам). "Ламповая" прозрачность
- (`2') - закрытые и закрывающие объекты являются источниками
- дополнительного освещения (рекомендую установить `alphadef 0.3'
- или меньше в этом случае). *Note Normal transparency::, *note
- Glass-like transparency::, *note Lamp-like transparency::.
-
-\1f
-File: mgl_ru.info, Node: Lighting, Next: Fog, Prev: Transparency, Up: Graphics setup
-
-1.2.2 Освещение
-------------------------
-
-Эти функции настраивают освещение графика. Главная функция *note
-light:: включает/выключает освещение графиков построенных после ее
-вызова. MathGL поддерживает до 10 независимых источников света.
-Положение, цвет, яркость каждого источника света можно задавать по
-отдельности. По умолчанию включен только первый (с порядковым номером
-`0') источник света белого цвета, расположенный сверху.
-
- -- Команда MGL: light `[val=on]'
- Включает/выключает освещение графика. По умолчанию освещение
- выключено.
-
- -- Команда MGL: light `n val'
- Включает/выключает N-ый источник света.
-
- -- Команда MGL: light `n xpos ypos zpos' ['col'='w' `br=0.5']
- Добавляет источник света с номером N в положение {XPOS, YPOS,
- ZPOS} с цветом COL и яркостью BR, которая должна быть в диапазоне
- [0,1].
-
- -- Команда MGL: ambient `val'
- Задает яркость рассеянного освещения. Значение должно быть в
- диапазоне [0,1].
-
-\1f
-File: mgl_ru.info, Node: Fog, Next: Default sizes, Prev: Lighting, Up: Graphics setup
-
-1.2.3 Туман
-----------------
-
- -- Команда MGL: fog `val [dz=0.25]'
- Имитирует туман на графике. Туман начинается на относительном
- расстоянии DZ от точки обзора и его плотность растет
- экспоненциально вглубь по закону ~1-exp(-d*z). Здесь _z_ -
- нормализованная на 1 глубина графика. Если D=`0' то туман
- отсутствует. См. раздел *note Surface in fog sample::, для
- примеров кода и графика.
-
-\1f
-File: mgl_ru.info, Node: Default sizes, Next: Zooming, Prev: Fog, Up: Graphics setup
-
-1.2.4 Базовые размеры
------------------------------------
-
-Эти команды задают величины большинства параметров графика, включая
-размеры маркеров, стрелок, толщину линий и т.д. Как и любые другие
-настройки, они подействуют только на графики созданные после изменения
-настроек.
-
- -- Команда MGL: barwidth `val'
- Относительный размер прямоугольников в `bars, barh, boxplot'.
- Значение по умолчанию `0.7'.
-
- -- Команда MGL: marksize `val'
- Размер маркеров для *note 1D plotting::. Значение по умолчанию `1'.
-
- -- Команда MGL: arrowsize `val'
- Размер стрелок для *note 1D plotting::, линий и кривых (*note
- Primitives drawing::). Значение по умолчанию `1'.
-
- -- Команда MGL: linewidth `val'
- Базовая толщина линий. Значения <1 игнорируются. Для значений >1
- реальная толщина получается перемножением указанной ширины линии
- на данное значение. Увеличение ширины линии актуально для больших
- растровых рисунков. Значение по умолчанию `1'.
-
- -- Команда MGL: ticklen `val' [`stt=1']
- Относительная длина меток осей координат. Значение по умолчанию
- `0.1'. Параметр STT>0 задает относительную длину подметок, которые
- в `sqrt(1+stt)' раз меньше.
-
- -- Команда MGL: tickstl 'stl' ['sub'="]
- Стиль меток (STL) и подметок (SUB) осей координат. Если `stl=''',
- то используется стиль по умолчанию (`k' или `w' в зависимости от
- типа прозрачности). Если `sub=''', то используется стиль меток
- (т.е. STL).
-
-\1f
-File: mgl_ru.info, Node: Zooming, Next: Cutting, Prev: Default sizes, Up: Graphics setup
-
-1.2.5 Масштабирование
-------------------------------------
-
-Эти команды управляют масштабированием всего рисунка (*note zoom::) или
-отдельной картинки (*note plotfactor::). Обычно эти функции
-используются для удаления пустого места вокруг графиков.
-
- -- Команда MGL: plotfactor `val'
- Масштаб картинки (значение должно быть больше 1). Не рекомендуется
- устанавливать значения меньше 1.5. Это аналог *note zoom::, но
- применяется только к конкретной картинке, заданной *note inplot::.
- Используйте ноль для включения автоматического масштабирования.
-
- -- Команда MGL: zoom `x1 y1 x2 y2'
- Масштабирует весь рисунок. После вызова функции текущий график
- будет очищен и в дальнейшем рисунок будет содержать только область
- [x1,x2]*[y1,y2] от исходного рисунка. Координаты X1, X2, Y1, Y2
- меняются в диапазоне от 0 до 1. Внимание! эти настройки не могут
- быть переписаны никакими другими функциями. Используйте `zoom 0 0
- 1 1' для перехода в масштаб по умолчанию.
-
-\1f
-File: mgl_ru.info, Node: Cutting, Next: Other settings, Prev: Zooming, Up: Graphics setup
-
-1.2.6 Обрезание
-------------------------
-
-Эти команды задают условия когда точка будет исключена (вырезана) из
-рисования. Замечу, что все точки со значением(-ями) `nan' по одной из
-координат или амплитуде автоматически исключаются из рисования.
-
- -- Команда MGL: cut `val'
- Задает обрезание точек за пределами осей координат. Если `on' то
- такие точки исключаются из рисования (это по умолчанию) иначе они
- проецируются на ограничивающий прямоугольник.
-
- -- Команда MGL: cut `x1 y1 z1 x2 y2 z2'
- Задает границы параллелепипеда внутри которого точки не рисуются.
- Если границы одинаковы (переменные равны), то параллелепипеда
- считается пустым. См. раздел *note CutMinMax sample::, для
- примеров кода и графика.
-
- -- Команда MGL: cut 'cond'
- Задает условие обрезания по формуле COND. Это условие исключает
- точки из рисования если результат вычисления формулы не равен
- нулю. Установите аргумент `''' для выключения условия обрезания.
- См. раздел *note CutOff sample::, для примеров кода и графика.
-
-\1f
-File: mgl_ru.info, Node: Other settings, Prev: Cutting, Up: Graphics setup
-
-1.2.7 Прочие настройки
--------------------------------------
-
- -- Команда MGL: font 'fnt' [`val=6']
- Задает стиль и размер шрифта (*note Text printing::). Вначале
- используется `rC' - прямой шрифт с выравниванием по центру. По
- умолчанию размер подписей оси координат в 1.4 раза больше.
-
- -- Команда MGL: rotatetext `val'
- Включает/выключает вращение меток и подписей осей координат вдоль
- оси. Начальное значение `on'.
-
- -- Команда MGL: palette 'colors'
- Задает палитру как последовательность цветов. Значение по
- умолчанию `"Hbgrcmyhlnqeup"', что соответствует цветам: темно
- серый `H', синий `b', зеленый `g', красный `r', голубой `c',
- малиновый `m', желтый `y', серый `h', сине-зеленый `l',
- небесно-голубой `n', оранжевый `q', желто-зеленый `e',
- сине-фиолетовый `u', фиолетовый `p'. Палитра в основном
- используется в 1D графиках (*note 1D plotting::) для кривых с
- неопределенным стилем линии.
-
- -- Команда MGL: meshnum `num'
- Задает ориентировочное число линий в *note mesh::, *note fall::,
- *note grid::, число стрелок (штрихов) в *note vect::, *note dew::
- и число ячеек в *note cloud::. По умолчанию (=0) рисуются все
- линии, стрелки, ячейки.
-
- -- Команда MGL: axialdir 'dir'
- Задает ось вращения для *note axial::, *note torus::. По умолчанию
- это 'z'.
-
-\1f
-File: mgl_ru.info, Node: Axis settings, Next: Transformation matrix, Prev: Graphics setup, Up: MGL interface
-
-1.3 Параметры осей координат
-==================================================
-
-Этот большой набор команд определяет вид осей и меток координат. Перед
-построением для каждой точки выполняются 3 преобразования: сначала
-определяется возможность рисования точки (*note Cutting::), далее
-применяются формулы перехода к криволинейным координатам и наконец
-точка отображается.
-
- -- Команда MGL: axis `x1 y1 x2 y2'
- -- Команда MGL: axis `x1 y1 z1 x2 y2 z2'
- -- Команда MGL: ranges `x1 x2 y1 y2 [z1=0 z2=0]'
- Задает диапазон изменения координат. Если минимальное и
- максимальное значение координаты равны, то они игнорируются по
- данному направлению. Также устанавливает размер цветовой шкалы,
- аналогично команде `caxis z1 z2'. Начальные диапазоны равны [-1,
- 1].
-
- -- Команда MGL: axis 'fx' 'fy' ['fz'=" 'fa'="]
- Задает формулы перехода к криволинейным координатам. Каждая строка
- является математическим выражением, зависящим от старых координат
- `x', `y', `z' и `a' или `c' для цветовой шкалы. Например, для
- цилиндрических координат будет `axis 'x*cos(y)' 'x*sin(y)' 'z''.
- Для удаления формул соответствующий параметр должен быть пустым
- `'''. Использование формул преобразования слегка замедляет
- программу, т.е.. `axis '' '' ''' быстрее чем `axis '1*x' '1*y'
- '1*z''. Параметр FA задает аналогичную формулу для цветовой шкалы.
- *Note Textual formulas::.
-
- -- Команда MGL: axis `how'
- Устанавливает одну из предопределенных систем криволинейных
- координат в зависимости от параметра HOW: `0' - декартова система
- (нет преобразования координат, наиболее быстрая); `1' - полярные
- координаты x_n=x*cos(y),y_n=x*sin(y), z_n=z; `2' - сферические
- координаты x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y);
- `3' - параболические координаты x_n=x*y, y_n=(x*x-y*y)/2, z_n=z;
- `4' - Paraboloidal coordinates x_n=(x*x-y*y)*cos(z)/2,
- y_n=(x*x-y*y)*sin(z)/2, z_n=x*y; `5' - Oblate coordinates
- x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z),
- z_n=sinh(x)*sin(y); `6' - Prolate coordinates
- x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z),
- z_n=cosh(x)*cos(y); `7' - эллиптические координаты
- x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z; `8' - тороидальные
- координаты x_n=sinh(x)*cos(z)/(cosh(x)-cos(y)),
- y_n=sinh(x)*sin(z)/(cosh(x)-cos(y)), z_n=sin(y)/(cosh(x)-cos(y));
- `9' - бисферические координаты x_n=sin(y)*cos(z)/(cosh(x)-cos(y)),
- y_n=sin(y)*sin(z)/(cosh(x)-cos(y)), z_n=sinh(x)/(cosh(x)-cos(y));
- `10' - биполярные координаты x_n=sinh(x)/(cosh(x)-cos(y)),
- y_n=sin(y)/(cosh(x)-cos(y)), z_n=z.
-
- -- Команда MGL: caxis `z1 z2'
- Задает масштаб цветовой шкалы (c-координаты). Эти значения
- используются для определения цвета поверхностей и прочих 2D и 3D
- графиков. Начальный диапазон равен [-1, 1].
-
- -- Команда MGL: origin `x0 y0 [z0=nan]'
- Задает центр пересечения осей координат. Если одно из значений
- равно `nan', то выбрается оптимальное положение осей координат по
- этому направлению.
-
- -- Команда MGL: ternary `val'
- Задает рисование треугольных (Ternary) осей координат. Это
- специальный тип графика для 3 зависимых координат (компонент) A,
- B, C таких, что A+B+C=1. MathGL использует только 2 независимые
- координаты A=x и B=y поскольку их достаточно для построения всех
- графиков. При этом третья координата z является независимым
- параметром для построения линий уровня, поверхностей и т.д. См.
- раздел *note Ternary plot sample::, для примеров кода и графика.
-
- -- Команда MGL: xrange dat [`add=off fact=0']
- -- Команда MGL: yrange dat [`add=off fact=0']
- -- Команда MGL: zrange dat [`add=off fact=0']
- -- Команда MGL: crange dat [`add=off fact=0']
- Задает диапазон изменения x-,y-,z-,c- координат как минимальное и
- максимальное значение массива DAT. Параметр ADD указывает
- добавлять новый диапазон к существующему или заменять его.
- Параметр FACT дополнительно расширяет диапазон на величину
- (MAX-MIN)*FACT.
-
- -- Команда MGL: xrange `x1 x2'
- -- Команда MGL: yrange `x1 x2'
- -- Команда MGL: zrange `x1 x2'
- -- Команда MGL: crange `x1 x2'
- Задает диапазон изменения x-,y-,z-,c- координат. См. также *note
- axis::.
-
- -- Команда MGL: xtick `val [sub=0 org=nan]'
- -- Команда MGL: ytick `val [sub=0 org=nan]'
- -- Команда MGL: ztick `val [sub=0 org=nan]'
- -- Команда MGL: ctick `val'
- Задает шаг меток осей VAL, число подметок NS и начальное положение
- меток ORG. Переменная VAL задает шаг меток (если положительна) или
- их число на оси (если отрицательна). Нулевое значение задает
- логарифмические метки. Если ORG=`NAN', то используется значение из
- *note origin::.
-
- -- Команда MGL: xtick 'templ'
- -- Команда MGL: ytick 'templ'
- -- Команда MGL: ztick 'templ'
- -- Команда MGL: ctick 'templ'
- Задает шаблоны для меток вдоль x-,y-,z-оси или colorbar. Шаблон
- может содержать и символы TeX. Если XTT, YTT, ZTT, CTT=`''', то
- используется шаблон по умолчанию (в простейшем случае `%.2g').
- Установка шаблона выключает автоматическое улучшение вида меток.
-
- -- Команда MGL: xtick `val1' 'lbl1' [`val2' 'lbl2' ...]
- -- Команда MGL: ytick `val1' 'lbl1' [`val2' 'lbl2' ...]
- -- Команда MGL: ztick `val1' 'lbl1' [`val2' 'lbl2' ...]
- Задает явное положение VAL и подписи LBL для меток вдоль оси.
- Метки могут содержать и символы TeX.
-
- -- Команда MGL: adjust ['dir'='xyzc']
- Автоматически задает шаг меток осей, число подметок и начальное
- положение меток для осей координат DIR в виде наиболее удобном для
- человека.
-
-\1f
-File: mgl_ru.info, Node: Transformation matrix, Next: Export to file, Prev: Axis settings, Up: MGL interface
-
-1.4 Матрица преобразования
-===============================================
-
-Эти команды контролируют где и как график будет расположен. Существует
-определенный порядок вызова этих функций для лучшего вида графика.
-Вначале должны вызываться команды *note subplot:: или *note inplot::
-для указания местоположения вывода. После них - команды вращения *note
-rotate:: и сжатия *note aspect::. И наконец любые другие функции для
-рисования графика. Вместо вращения графика можно вызвать команды *note
-columnplot:: для расположения графиков в столбец одного над другим или
-*note stickplot:: для расположения в линейку.
-
- -- Команда MGL: subplot `nx ny m [dx=0 dy=0]'
- Помещает последующий вывод в M-ую ячейку сетки размером NX*NY от
- всего рисунка. Функция сбрасывает матрицу трансформации (повороты
- и сжатие графика) и должна вызываться первой для создания
- "подграфика". С эстетической точки зрения не рекомендуется
- вызывать эту функцию с различными (или не кратными) размерами
- сетки. Ячейка может быть дополнительно сдвинута относительно
- своего обычного положения на относительный размер DX, DY.
-
- -- Команда MGL: subplot `nx ny m' 'style'
- Аналогично предыдущему, но место для осей/colorbar резервируется
- только если строка STYLE содержит: `L' или `<' - с левого края,
- `R' или `>' - с правого края, `A' или `^' - с верхнего края, `U'
- или `_' - с нижнего края.
-
- -- Команда MGL: inplot `x1 x2 y1 y2 [rel=off]'
- Помещает последующий вывод в прямоугольную область [X1, X2]*[Y1,
- Y2] (исходный размер [0,1]*[0,1]). Эта функция позволяет поместить
- график в произвольную область рисунка. Если параметр REL=`on', то
- используется позиция относительно текщего *note subplot:: (или
- *note inplot:: с REL=`off'). Функция сбрасывает матрицу
- трансформации (повороты и сжатие графика) и должна вызываться
- первой для создания "подграфика".
-
- -- Команда MGL: columnplot `num ind [d=0]'
- Помещает последующий вывод в IND-ую строку столбца из NUM строк.
- Положение столбца выбирается относительно последнего вызова *note
- subplot:: (или *note inplot:: с REL=`off'). Параметр D задает
- дополнительный зазор между строк. См. раздел *note ColumnPlot
- sample::, для примеров кода и графика.
-
- -- Команда MGL: stickplot `num ind tet phi'
- Помещает последующий вывод в IND-ую ячейку "бруска" из NUM ячеек.
- При этом сам брусок повернут на углы TET, PHI. Положение
- выбирается относительно последнего вызова *note subplot:: (или
- *note inplot:: с REL=`off'). См. раздел *note StickPlot sample::,
- для примеров кода и графика.
-
- -- Команда MGL: rotate `tetz tetx [tety=0]'
- Вращает систему координат относительно осей {x, z, y}
- последовательно на углы TETX, TETZ, TETY.
-
- -- Команда MGL: rotate `tet x y z'
- Вращает систему координат относительно вектора {X, Y, Z} на угол
- TET.
-
- -- Команда MGL: aspect `ax ay [az=1]'
- Устанавливает соотношение размеров осей в отношении AX:AY:AZ. Для
- лучшего вида следует вызывать после функции *note rotate::.
-
- -- Команда MGL: perspective `val'
- Добавляет (включает) перспективу для графика. Параметр val ~
- 1/z_{eff} \in [0,1). По умолчанию (`val=0') перспектива отключена.
-
-\1f
-File: mgl_ru.info, Node: Export to file, Next: Primitives drawing, Prev: Transformation matrix, Up: MGL interface
-
-1.5 Экспорт в файл
-==============================
-
- -- Команда MGL: write 'fname' [`solid=off']
- Экспортирует текущий кадр в файл 'fname' (тип определяется по
- расширению). Параметр SOLID задает вывод картинки на текущем фоне
- (обычно белом) или полупрозрачной. Если 'fname'=", то используется
- имя `frame####.jpg', где `####' - текущий номер кадра.
-
- -- Команда MGL: setsize `w h'
- Изменяет размер картинки в пикселях. Функция должна вызываться
- *перед* любыми функциями построения потому что полностью очищает
- содержимое рисунка. В некоторых программах исполнение этой команды
- может запрещено.
-
-\1f
-File: mgl_ru.info, Node: Primitives drawing, Next: Text printing, Prev: Export to file, Up: MGL interface
-
-1.6 Рисование примитивов
-===========================================
-
-Эти команды рисуют рисуют простые объекты типа линий, точек, сфер,
-капель, конусов, и т.д.
-
- -- Команда MGL: clf
- Очищает рисунок и заполняет его цветом по умолчанию (обычно белым).
-
- -- Команда MGL: ball `x y' ['col'='r']
- -- Команда MGL: ball `x y z' ['col'='r']
- Рисует точку (шарик) с координатами {X, Y, Z} и цветом COL.
-
- -- Команда MGL: line `x1 y1 x2 y2' ['stl'="]
- -- Команда MGL: line `x1 y1 z1 x2 y2 z2' ['stl'="]
- Рисует геодезическую линию (декартовых координатах - прямую) из
- точки {X1,Y1,Z1} в {X2,Y2,Z2} использую стиль линии STL. Кривая
- рисуется даже если часть ее лежит вне диапазона осей координат.
-
- -- Команда MGL: curve `x1 y1 dx1 dy1 x2 y2 dx2 dy2' ['stl'="]
- -- Команда MGL: curve `x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2'
- ['stl'="]
- Рисует кривую Безье из точки {X1,Y1,Z1} в {X2,Y2,Z2} использую
- стиль линии STL. Касательные в точках пропорциональны
- {DX1,DY1,DZ1}, {DX2,DY2,DZ2}. Кривая рисуется даже если часть ее
- лежит вне диапазона осей координат.
-
- -- Команда MGL: facex `x0 y0 z0 wy wz' ['stl'=" `d1=0 d2=0']
- -- Команда MGL: facey `x0 y0 z0 wx wz' ['stl'=" `d1=0 d2=0']
- -- Команда MGL: facez `x0 y0 z0 wx wy' ['stl'=" `d1=0 d2=0']
- Рисует закрашенный прямоугольник (грань) перпендикулярно оси
- [x,y,z] в точке {X0, Y0, Z0} цветом STL и шириной WX, WY, WZ вдоль
- соответствующего направления. При этом цвет может быть один для
- всей грани, или различным для разных вершин если указаны все 4
- цвета (полезно для градиента цвета, например `wwrr'). Параметры
- D1!=0, D2!=0 задают дополнительный сдвиг последней точки (т.е.
- рисуют четырехугольник). Грань будет нарисована даже если часть ее
- лежит вне диапазона осей координат.
-
- -- Команда MGL: sphere `x0 y0 r' ['col'='r']
- -- Команда MGL: sphere `x0 y0 z0 r' ['col'='r']
- Рисует сферу радиуса R с центром в точке {X, Y, Z} цветом STL.
-
- -- Команда MGL: drop `x0 y0 dx dy r' ['col'='b' `sh=1 asp=1']
- -- Команда MGL: drop `x0 y0 z0 dx dy dz r' ['col'='b' `sh=1 asp=1']
- Рисует каплю радиуса R в точке {X0,Y0,Z0} вытянутую вдоль
- направления {DX,DY,DZ} цветом COL. Параметр SH определяет степень
- вытянутости: `0' - сфера, `1' - классическая капля. Параметр ASP
- определяет относительную ширину капли (аналог "эллиптичности" для
- сферы). См. раздел *note Drops sample::, для примеров кода и
- графика.
-
- -- Команда MGL: cone `x1 y1 z1 x2 y2 z2 r1' [`r2=-1' 'stl'="
- `edge=off']
- Рисует трубу (или усеченный конус если EDGE=`off') между точками
- {X1,Y1,Z1}, {X2,Y2,Z2} с радиусами на концах R1, R2. Если R2<0, то
- полагается R2=R1. Цвет конуса задается строкой STL.
-
- -- Команда MGL: rect `x1 y1 x2 y2' ['st'="]
- -- Команда MGL: rect `x1 y1 z1 x2 y2 z2' ['st'="]
- Рисует закрашенный прямоугольник (грань) с противоположными
- вершинами в точках {X1,Y1,Z1}, {X2,Y2,Z2} цветом STL. При этом
- цвет может быть один для всей грани, или различным для разных
- вершин если указаны все 4 цвета (полезно для градиента цвета,
- например `wwrr'). Грань будет нарисована даже если часть ее лежит
- вне диапазона осей координат.
-
-\1f
-File: mgl_ru.info, Node: Text printing, Next: Axis and Colorbar, Prev: Primitives drawing, Up: MGL interface
-
-1.7 Вывод текста
-===========================
-
-Команды для вывода текста позволяют вывести строку текста в
-произвольном месте рисунка, в произвольном направлении и вдоль
-произвольной кривой. Можно использовать произвольное начертание шрифта
-и многие ТеХ-ие команды (детальнее *note Font styles::). Аргумент SIZE
-определяет размер текста: размер шрифта если положителен или
-относительный размер (=-SIZE*FONTSIZE) если отрицателен.
-
- Параметры шрифта задаются строкой, которая может содержать символы
-стиля (`rbiwou') и/или выравнивания (`LRC'). Также строка может
-содержать символы цвета `wkrgbcymhRGBCYMHW' (*note Line styles::) после
-символа `:'. Стили шрифта: `r' - прямой, `i' - курсив, `b' - жирный,
-`w' - контурный, `o' - надчеркнутый, `u' - подчеркнутый. По умолчанию
-используется прямой шрифт. Типы выравнивания: `L' - по левому краю (по
-умолчанию), `C' - по центру, `R' - по правому краю. Например, строка
-`iC:b' соответствует курсиву синего цвета с выравниванием по центру. По
-умолчанию используются параметры, определенные командой *note font::.
-
- Если строка содержит символы `aA', то текст выводится в абсолютных
-координатах (полагаются в диапазоне [0,1]). При этом используются
-координаты относительно рисунка (если указано `A') или относительно
-последнего *note subplot::/*note inplot:: (если указано `a').
-
- -- Команда MGL: text `x y' 'text' ['fnt'=" `size=-1.4']
- -- Команда MGL: text `x y z' 'text' ['fnt'=" `size=-1.4']
- Выводит строку TEXT от точки {X,Y,Z} шрифтом FNT и размером SIZE.
-
- -- Команда MGL: text `x y dx dy' 'text' [`size=-1.4']
- -- Команда MGL: text `x y z dx dy dz' 'text' [`size=-1.4']
- Выводит строку TEXT от точки {X,Y,Z} вдоль направления {DX,DY,DZ}
- шрифтом FNT и размером SIZE.
-
- -- Команда MGL: text ydat 'text' ['fnt'=" `size=-1 zval=nan']
- -- Команда MGL: text xdat ydat 'text' ['fnt'=" `size=-1 zval=nan']
- -- Команда MGL: text xdat ydat zdat 'text' ['fnt'=" `size=-1']
- Выводит строку TEXT вдоль кривой {XDAT[i], YDAT[i], ZDAT[i]}
- шрифтом FONT. Строка FONT может содержать символы: `t' для вывода
- текста под кривой (по умолчанию), или `T' для вывода текста над
- кривой. Если массив XDAT не указан, то используется массив со
- значениями равно распределенными вдоль оси x. Если массив ZDAT не
- указан, то используется ZDAT[i] = ZVAL. См. раздел *note Text
- sample::, для примеров кода и графика.
-
- -- Команда MGL: title 'text' ['fnt'=" `size=-2']
- Выводит строку TEXT как заголовок (сверху рисунка). Может
- использоваться в любом месте (даже внутри *note subplot::).
-
- -- Команда MGL: fgets `x y' 'fname' [`n=0' 'fnt'=" `size=-1.4']
- -- Команда MGL: fgets `x y z' 'fname' [`n=0' 'fnt'=" `size=-1.4']
- Выводит N-ую строку файла FNAME от точки {X,Y,Z} шрифтом FNT и
- размером SIZE.
-
-\1f
-File: mgl_ru.info, Node: Axis and Colorbar, Next: Legend, Prev: Text printing, Up: MGL interface
-
-1.8 Оси и Colorbar
-======================
-
-Эти команды рисуют объекты для "измерения" типа осей координат,
-цветовой таблицы (colorbar), сетку по осям, обрамляющий параллелепипед
-и подписи по осям координат. См. также *note Axis settings::.
-
- -- Команда MGL: axis ['dir'='xyz' `adjust=off']
- Рисует оси координат и метки на них (*note Axis settings::) в
- направлениях, указанных строкой DIR. Если строка содержит символ
- `_', то подписи меток отображаться не будут. Шрифт подписей
- определяется командой *note font::. Метки будут "подогнаны" если
- ADJUST=`on' (с помощью вызова `adjust 'dir'').
-
- -- Команда MGL: colorbar ['sch'=" `pos=0']
- Рисует полосу соответствия цвета и числовых значений (colorbar)
- для цветовой схемы SCH (используется текущая для `sch=''') с краю
- от графика. Параметр POS задает местоположение: `0' - справа (по
- умолчанию), `1' - слева, `2' - сверху, `3' - снизу. Если строка
- SCH содержит `<>^_', то параметр POS определяется как: `pos=0' для
- `>' (справа), `pos=1' для `<' (слева), `pos=2' для `^' (сверху),
- `pos=3' для `_' (снизу). Если строка содержит `A', то используются
- абсолютные координаты (относительно рисунка). См. раздел *note
- Dens sample::, для примеров кода и графика.
-
- -- Команда MGL: colorbar vdat ['sch'=" `pos=0']
- Аналогично предыдущему, но для цветовой схемы без сглаживания с
- заданными значениями VDAT. См. раздел *note ContD sample::, для
- примеров кода и графика.
-
- -- Команда MGL: colorbar 'sch' `pos x y w h'
- Аналогично первому, но в произвольном месте графика {X, Y}
- (полагаются в диапазоне [0,1]). Параметры W, H задают
- относительную ширину и высоту colorbar.
-
- -- Команда MGL: grid ['dir'='xyz' 'pen'='B']
- Рисует линии сетки в направлениях перпендикулярным DIR. Шаг сетки
- такой же как у меток осей координат. Стиль линий задается
- параметром PEN (по умолчанию - сплошная темно синяя линия `B-').
-
- -- Команда MGL: box ['stl'='k' `ticks=on']
- Рисует ограничивающий параллелепипед цветом 'stl'. При `ticks=on'
- рисуются метки в соответствии с текущими настройками осей
- координат *note axis::.
-
- -- Команда MGL: xlabel 'text' [`pos=0 size=-1.4 shift=0']
- -- Команда MGL: ylabel 'text' [`pos=0 size=-1.4 shift=0']
- -- Команда MGL: zlabel 'text' [`pos=0 size=-1.4 shift=0']
- -- Команда MGL: tlabel 'text' [`pos=0 size=-1.4 shift=0']
- Выводит подпись TEXT для x-,y-,z-,t-оси (где `t' - "тернарная" ось
- t=1-x-y). Параметр POS задает положение подписи: при POS=0 - по
- центру оси, при POS>0 - около максимальных значений, при POS<0 -
- около минимальных значений. Параметр SIZE задает размер шрифта (по
- умолчанию в 1.4 раза больше чем у меток). *Note Text printing::.
-
-\1f
-File: mgl_ru.info, Node: Legend, Next: 1D plotting, Prev: Axis and Colorbar, Up: MGL interface
-
-1.9 Легенда
-==================
-
-Эти команды обеспечивают рисование легенды графика (полезно для *note
-1D plotting::). Запись в легенде состоит из двух строк: одна для стиля
-линии и маркеров, другая с текстом описания (с включенным разбором
-TeX-их команд), накапливаемые во внутренние массивы с помощью команды
-*note addlegend:: или опции *note legend::. Положение легенды можно
-задать автоматически или вручную. Параметры FONT и SIZE задают стиль и
-размер шрифта. Параметр LLEN задает относительную ширину примера линии.
-Ели стиль линии пустой, то соответствующий текст печатается без
-отступа. Если строка FONT содержит символ `A', то координаты легенды
-считаются относительно картинки (а не текущего subplot). См. раздел
-*note Legend sample::, для примеров кода и графика.
-
- -- Команда MGL: legend [`pos=3' 'fnt'='rL' `size=-1 llen=0.1']
- Рисует легенду из накопленных записей шрифтом FNT размером SIZE.
- Параметр POS задает положение легенды: `0' - в нижнем левом углу,
- `1' - нижнем правом углу, `2' - верхнем левом углу, `3' - верхнем
- правом углу (по умолчанию).
-
- -- Команда MGL: legend `x y' ['fnt'='rL' `size=-1 llen=0.1']
- Рисует легенду из накопленных записей шрифтом FONT размером SIZE.
- Положение легенды задается параметрами X, Y, которые полагаются
- нормированными в диапазоне [0,1].
-
- -- Команда MGL: addlegend 'text' 'stl'
- Добавляет описание TEXT кривой со стилем STL (*note Line styles::)
- во внутренний массив записей легенды. Максимальное число записей
- 100.
-
- -- Команда MGL: clearlegend
- Очищает внутренний массив записей легенды.
-
- -- Команда MGL: legendbox `val'
- Включает/выключает рисование прямоугольника вокруг легенды. По
- умолчанию (=`on') прямоугольник рисуется.
-
- -- Команда MGL: legendmarks `val'
- Задает число маркеров в легенде. По умолчанию используется 1
- маркер.
-
-\1f
-File: mgl_ru.info, Node: 1D plotting, Next: 2D plotting, Prev: Legend, Up: MGL interface
-
-1.10 1D графики
-======================
-
-Эти команды строят графики для одномерных (1D) массивов. Одномерными
-считаются массивы, зависящие только от одного параметра (индекса)
-подобно кривой в параметрической форме {x(i),y(i),z(i)}, i=1...n. Есть
-5 основных типов 1D графиков: линия (*note plot::), линия с заполнением
-(*note area::), ступеньки (*note step::), прямоугольники (*note bars::,
-*note barh::) и вертикальные линии (*note stem::). Все эти типы
-графиков имеют похожий интерфейс. Есть версии для рисования в
-пространстве и на плоскости. В последнем случае имеется возможность
-использования только одного массива. Стиль линии и маркеров указывается
-строковой переменной. Если она равна `'''. Кроме того, есть еще
-несколько типов графиков для одномерных массивов, имеющих другой
-интерфейс и вид: поверхность вращения кривой (*note torus::), диаграмма
-(*note chart::), размер ошибки (*note error::), маркеры переменного
-размера (*note mark::), трубками (*note tube::) и т.д. См. раздел *note
-1D plot sample::, для примеров кода и графика.
-
- График рисуется для каждой строки если один из массивов матрица.
-Размер по 1-ой координате *должен быть одинаков* для всех массивов
-`xdat.nx=ydat.nx=zdat.nx'. Если массив XDAT не указан, то используется
-массив со значениями равно распределенными вдоль оси x. Если массив
-ZDAT не указан, то используется ZDAT[i] = ZVAL. Строка STL задает цвет
-и стиль линии и маркеров (*note Line styles::). По умолчанию (`stl=''')
-рисуется сплошная линия с текущим цветом из палитры.
-
- -- Команда MGL: plot ydat ['stl'=" `zval=nan']
- -- Команда MGL: plot xdat ydat ['stl'=" `zval=nan']
- -- Команда MGL: plot xdat ydat zdat ['stl'="]
- Рисует ломанную линию между точками {X[i], Y[i], Z[i]}. См. также
- *note area::, *note step::, *note stem::, *note tube::, *note
- mark::, *note error::, *note belt::, *note tens::. См. раздел
- *note Plot sample::, для примеров кода и графика.
-
- -- Команда MGL: radar adat ['stl'=" `r=-1']
- Рисует radar chart, представляющий собой ломанную с вершинами на
- радиальных линиях (типа ломанной в полярных координатах). График
- рисуется для каждой строки если один из массивов матрица. Параметр
- R задает дополнительный сдвиг данных (т.е. используется A+R вместо
- A). Если `r<0', то `r=max(0, -min(a)'. Если STL содержит символ
- `#', то также рисуется "сетка" (радиальные линии и круг для R).
- См. также *note plot::. См. раздел *note Radar sample::, для
- примеров кода и графика.
-
- -- Команда MGL: tens ydat cdat ['stl'=" `zval=nan']
- -- Команда MGL: tens xdat ydat cdat ['stl'=" `zval=nan']
- -- Команда MGL: tens xdat ydat zdat cdat ['stl'="]
- Рисует ломанную линию по точкам {X[i], Y[i], Z[i]} с цветом,
- определяемым массивом C[i] (типа графика натяжений). См. также
- *note plot::, *note mesh::, *note fall::. См. раздел *note Tens
- sample::, для примеров кода и графика.
-
- -- Команда MGL: area ydat ['stl'=" `zval=nan']
- -- Команда MGL: area xdat ydat ['stl'=" `zval=nan']
- -- Команда MGL: area xdat ydat zdat ['stl'="]
- Рисует ломанную линию по точками {XDAT[i], YDAT[i], ZDAT[i]} и
- закрашивает ее вниз до плоскости осей координат. Можно
- использовать градиентное закрашивание если число указанных цветов
- в STL равно удвоенному числу кривых для построения. Если строка
- содержит символ `a', то линии рисуются одна поверх другой (с
- суммированием) - того же эффекта можно достичь вызовом `cumsum
- ydat 'y'' перед построением графика. См. также *note plot::, *note
- bars::, *note stem::, *note region::. См. раздел *note Area
- sample::, для примеров кода и графика.
-
- -- Команда MGL: region fdat gdat ['stl'=" `inside=off']
- -- Команда MGL: region xdat fdat gdat ['stl'=" `inside=off']
- Закрашивает область между 2 кривыми {XDAT[i], FDAT[i]} и {XDAT[i],
- GDAT[i]}. При `inside=off' закрашивается только область y1<y<y2,
- в противном случае также будет закращена область y2<y<y1. Можно
- использовать градиентное закрашивание если число указанных цветов
- STL равно удвоенному числу кривых для построения. См. также *note
- area::, *note bars::, *note stem::. См. раздел *note Region
- sample::, для примеров кода и графика.
-
- -- Команда MGL: stem ydat ['stl'=" `zval=nan']
- -- Команда MGL: stem xdat ydat ['stl'=" `zval=nan']
- -- Команда MGL: stem xdat ydat zdat ['stl'="]
- Рисует вертикальные линии из точек {XDAT[i], YDAT[i], ZDAT[i]} до
- плоскости осей координат. См. также *note area::, *note bars::,
- *note plot::, *note mark::. См. раздел *note Stem sample::, для
- примеров кода и графика.
-
- -- Команда MGL: bars ydat ['stl'=" `zval=nan']
- -- Команда MGL: bars xdat ydat ['stl'=" `zval=nan']
- -- Команда MGL: bars xdat ydat zdat ['stl'="]
- Рисует вертикальные полосы (прямоугольники) из точек {XDAT[i],
- YDAT[i], ZDAT[i]} до плоскости осей координат. Если строка STL
- содержит символ `a', то линии рисуются одна поверх другой. Если
- строка содержит символ `f', то рисуется график типа waterfall для
- определения кумулятивного эффекта последовательности положительных
- и отрицательных значений. Можно использовать разные цвета для
- положительных и отрицательных значений если число указанных цветов
- равно удвоенному числу кривых для построения. См. также *note
- barh::, *note area::, *note stem::, *note chart::. См. раздел
- *note Bars sample::, для примеров кода и графика.
-
- -- Команда MGL: barh xdat ['stl'=" `zval=nan']
- -- Команда MGL: barh ydat xdat ['stl'=" `zval=nan']
- Рисует горизонтальные полосы (прямоугольники) из точек {XDAT[i],
- YDAT[i]} до плоскости оси y. Если массив YDAT не указан, то
- используется массив со значениями равно распределенными вдоль оси
- y. Если строка STL содержит символ `a', то линии рисуются одна
- поверх другой. Если строка содержит символ `f', то рисуется график
- типа waterfall для определения кумулятивного эффекта
- последовательности положительных и отрицательных значений. Можно
- использовать разные цвета для положительных и отрицательных
- значений если число указанных цветов равно удвоенному числу кривых
- для построения. См. также *note bars::. См. раздел *note Barh
- sample::, для примеров кода и графика.
-
- -- Команда MGL: chart adat ['col'="]
- Рисует цветные полосы (пояса) для массива данных ADAT. Число полос
- равно числу строк ADAT (равно A.NY). Цвет полос поочередно
- меняется из цветов указанных в COL или в палитре (если `col=''').
- Пробел в цветах соответствует прозрачному "цвету", т.е.
- соответствующая полоса не рисуется. Ширина полосы пропорциональна
- значению элемента в ADAT. График строится только для массивов не
- содержащих отрицательных значений. Если строка COL содержит `#',
- то рисуется также черная граница полос. График выглядит лучше в 3d
- (после вращения системы координат) и/или в полярной системе
- координат (становится Pie chart). См. раздел *note Chart sample::,
- для примеров кода и графика.
-
- -- Команда MGL: step ydat ['stl'=" `zval=nan']
- -- Команда MGL: step xdat ydat ['stl'=" `zval=nan']
- -- Команда MGL: step xdat ydat zdat ['stl'="]
- Рисует ступеньки для точек массива {XDAT[i], YDAT[i], ZDAT[i]}.
- См. также *note plot::, *note stem::, *note tile::, *note boxs::.
- См. раздел *note Step sample::, для примеров кода и графика.
-
- -- Команда MGL: torus zdat ['stl'="]
- -- Команда MGL: torus rdat zdat ['stl'="]
- Рисует поверхность вращения кривой {RDAT[i], ZDAT[i], ZDAT[i]}
- относительно оси *note axialdir::. Если массив RDAT не указан, то
- используется массив со значениями равно распределенными вдоль оси
- x. См. также *note plot::, *note axial::. См. раздел *note Torus
- sample::, для примеров кода и графика.
-
- -- Команда MGL: tube ydat rdat ['stl'=" `zval=nan']
- -- Команда MGL: tube ydat `rval' ['stl'=" `zval=nan']
- -- Команда MGL: tube xdat ydat rdat ['stl'=" `zval=nan']
- -- Команда MGL: tube xdat ydat `rval' ['stl'=" `zval=nan']
- -- Команда MGL: tube xdat ydat zdat rdat ['stl'="]
- -- Команда MGL: tube xdat ydat zdat `rval' ['stl'="]
- Рисует трубу радиуса RDAT[i] (or RVAL) вдоль кривой между точками
- {XDAT[i], YDAT[i], ZDAT[i]}. См. также *note plot::. См. раздел
- *note Tube sample::, для примеров кода и графика.
-
- -- Команда MGL: mark ydat rdat ['stl'=" `zval=nan']
- -- Команда MGL: mark xdat ydat rdat ['stl'=" `zval=nan']
- -- Команда MGL: mark xdat ydat zdat rdat ['stl'="]
- Рисует маркеры размером RDAT[i]*`marksize' в точках {XDAT[i],
- YDAT[i], ZDAT[i]}. Для рисования маркеров одинакового размера
- можно использовать функцию `plot' с невидимой линией (со стилем
- содержащим ` '). См. также *note plot::, *note textmark::, *note
- stem::, *note error::. См. раздел *note Mark sample::, для
- примеров кода и графика.
-
- -- Команда MGL: textmark ydat 'txt' ['stl'=" `zval=nan']
- -- Команда MGL: textmark ydat rdat 'txt' ['stl'=" `zval=nan']
- -- Команда MGL: textmark xdat ydat rdat 'txt' ['stl'=" `zval=nan']
- -- Команда MGL: textmark xdat ydat zdat rdat 'txt' ['stl'="]
- Рисует текст TXT как маркер с размером пропорциональным
- RDAT[i]*`marksize' в точках {XDAT[i], YDAT[i], ZDAT[i]}. Если
- массив RDAT не указан, то полагается RDAT[i] = 1. См. также *note
- plot::, *note mark::, *note stem::. См. раздел *note TextMark
- sample::, для примеров кода и графика.
-
- -- Команда MGL: error ydat yerr ['stl'=" `zval=nan']
- -- Команда MGL: error xdat ydat yerr ['stl'=" `zval=nan']
- -- Команда MGL: error xdat ydat xerr yerr ['stl'=" `zval=nan']
- Рисует размер ошибки {XERR[i], YERR[i]} в точках {XDAT[i],
- YDAT[i]} на плоскости Z = ZVAL. Такой график полезен для
- отображения ошибки эксперимента, вычислений и пр. См. также *note
- plot::. См. раздел *note Error sample::, для примеров кода и
- графика.
-
- -- Команда MGL: boxplot adat ['stl'=" `zval=nan']
- -- Команда MGL: boxplot xdat adat ['stl'=" `zval=nan']
- Рисует boxplot (называемый также как box-and-whisker diagram или
- как "ящик с усами") в точках XDAT[i] на плоскости Z = ZVAL. Это
- график, компактно изображающий распределение вероятностей
- ADAT[i,j] (минимум, нижний квартиль (Q1), медиана (Q2), верхний
- квартиль (Q3) и максимум) вдоль второго (j-го) направления. См.
- также *note plot::, *note error::, *note bars::. См. раздел *note
- BoxPlot sample::, для примеров кода и графика.
-
-\1f
-File: mgl_ru.info, Node: 2D plotting, Next: 3D plotting, Prev: 1D plotting, Up: MGL interface
-
-1.11 2D графики
-======================
-
-Эти команды строят графики для двумерных (2D) массивов. Двумерными
-считаются массивы, зависящие только от двух параметров (индексов)
-подобно матрице f(x_i,y_j), i=1...n, j=1...m. Есть несколько основных
-типов 2D графиков: сплошная поверхность (*note surf::), сетчатая
-поверхность (*note mesh::), поверхность из ящиков (*note boxs::),
-поверхность из плиток (*note tile::), водопад (*note fall::), ленточки
-(*note belt::), график плотности (*note dens::), линии уровня (*note
-cont::), линии уровня с заполнением (*note contf::) и результат их
-вращения (*note axial::). В функциях *note cont::, *note contf:: и
-*note axial:: значения уровней можно задавать автоматически и вручную.
-Можно также нарисовать сетку (*note grid::) по массиву данных для
-улучшения вида графика плотности или линий уровня. Каждый тип графика
-имеет похожий интерфейс. Есть версия для рисования одного массива с
-автоматическими координатами и версия для параметрически заданной
-поверхности. См. раздел *note 1D plot sample::, для примеров кода и
-графика.
-
- Строка SCH задает цветовую схему (*note Color scheme::. Предыдущая
-цветовая схема используется по умолчанию. Младшие размерности массивов
-XDAT, YDAT, ZDAT должны быть одинаковы `xdat.nx=zdat.nx &&
-ydat.nx=zdat.ny' или `xdat.nx=ydat.nx=zdat.nx &&
-xdat.ny=ydat.ny=zdat.ny'. Массивы XDAT и YDAT могут быть векторами (не
-матрицами как ZDAT). Если массивы XDAT, YDAT не указаны, то
-используются массивы со значениями равно распределенными вдоль осей x,
-y. График строится для каждого z среза данных.
-
- -- Команда MGL: surf zdat ['sch'="]
- -- Команда MGL: surf xdat ydat zdat ['sch'="]
- Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
- ZDAT[i,j]}. Если SCH содержит `#', то на поверхности рисуется
- сетка. См. также *note mesh::, *note dens::, *note belt::, *note
- tile::, *note boxs::, *note surfc::, *note surfa::. См. раздел
- *note Surf sample::, для примеров кода и графика.
-
- -- Команда MGL: mesh zdat ['sch'="]
- -- Команда MGL: mesh xdat ydat zdat ['sch'="]
- Рисует сетчатую поверхность, заданную параметрически {XDAT[i,j],
- YDAT[i,j], ZDAT[i,j]}. См. также *note surf::, *note fall::, *note
- meshnum::, *note cont::, *note tens::. См. раздел *note Mesh
- sample::, для примеров кода и графика.
-
- -- Команда MGL: fall zdat ['sch'="]
- -- Команда MGL: fall xdat ydat zdat ['sch'="]
- Рисует водопад для параметрически заданной поверхности {XDAT[i,j],
- YDAT[i,j], ZDAT[i,j]}. График удобен для построения нескольких
- кривых, сдвинутых вглубь друг относительно друга. Если SCH
- содержит `x', то линии рисуются вдоль x-оси (по умолчанию линии
- рисуются вдоль y-оси). См. также *note belt::, *note mesh::, *note
- tens::, *note meshnum::. См. раздел *note Fall sample::, для
- примеров кода и графика.
-
- -- Команда MGL: belt zdat ['sch'="]
- -- Команда MGL: belt xdat ydat zdat ['sch'="]
- Рисует ленточки для параметрически заданной поверхности
- {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. Если SCH содержит `x', то линии
- рисуются вдоль x-оси (по умолчанию линии рисуются вдоль y-оси).
- См. также *note fall::, *note surf::, *note plot::, *note
- meshnum::. См. раздел *note Belt sample::, для примеров кода и
- графика.
-
- -- Команда MGL: boxs zdat ['sch'="]
- -- Команда MGL: boxs xdat ydat zdat ['sch'="]
- Рисует вертикальные ящики для параметрически заданной поверхности
- {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. См. также *note surf::, *note
- dens::, *note tile::, *note step::. См. раздел *note Boxs
- sample::, для примеров кода и графика.
-
- -- Команда MGL: tile zdat ['sch'="]
- -- Команда MGL: tile xdat ydat zdat ['sch'="]
- Рисует плитки для параметрически заданной поверхности {XDAT[i,j],
- YDAT[i,j], ZDAT[i,j]}. График может использоваться как 3d
- обобщение *note step::. См. также *note surf::, *note boxs::,
- *note step::, *note tiles::. См. раздел *note Tile sample::, для
- примеров кода и графика.
-
- -- Команда MGL: dens zdat ['sch'=" `zval=nan']
- -- Команда MGL: dens xdat ydat zdat ['sch'=" `zval=nan']
- Рисует график плотности для параметрически заданной поверхности
- {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL. Если SCH содержит
- `#', то рисуется сетка. См. также *note surf::, *note cont::,
- *note contf::, *note boxs::, *note tile::, `dens[xyz]'. См. раздел
- *note Dens sample::, для примеров кода и графика.
-
- -- Команда MGL: cont vdat zdat ['sch'=" `zval=nan']
- -- Команда MGL: cont vdat xdat ydat zdat ['sch'=" `zval=nan']
- Рисует линии уровня для параметрически заданной поверхности
- {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL (или при Z=VDAT[k]
- если `zval==nan'). Линии уровня рисуются для Z=VDAT[k]. Если SCH
- содержит `#', то рисуется сетка. Если SCH содержит `t' или `T', то
- значения VDAT[k] будут выведены вдоль контуров над (или под)
- кривой. См. также *note dens::, *note contf::, *note contd::,
- *note axial::, `cont[xyz]'. См. раздел *note Cont sample::, для
- примеров кода и графика.
-
- -- Команда MGL: cont zdat ['sch'=" `num=7 zval=nan']
- -- Команда MGL: cont xdat ydat zdat ['sch'=" `num=7 zval=nan']
- Как предыдущий с вектором V из NUM элементов равно распределенных
- в интервале цветовой шкалы (см., *note caxis::).
-
- -- Команда MGL: contf vdat zdat ['sch'=" `zval=nan']
- -- Команда MGL: contf vdat xdat ydat zdat ['sch'=" `zval=nan']
- Рисует закрашенные линии (контуры) уровня для параметрически
- заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z =
- ZVAL (или при Z=V[k] если `zval=nan'). Линии уровня рисуются для
- Z=VDAT[k]. Если SCH содержит `#', то рисуется сетка. См. также
- *note dens::, *note cont::, *note contd::, `contf[xyz]'. См.
- раздел *note ContF sample::, для примеров кода и графика.
-
- -- Команда MGL: contf zdat ['sch'=" `num=7 zval=nan']
- -- Команда MGL: contf xdat ydat zdat ['sch'=" `num=7 zval=nan']
- Как предыдущий с вектором V из NUM элементов равно распределенных
- в интервале цветовой шкалы (см., *note caxis::).
-
- -- Команда MGL: contd vdat zdat ['sch'=" `zval=nan']
- -- Команда MGL: contd vdat xdat ydat zdat ['sch'=" `zval=nan']
- Рисует закрашенные линии (контуры) уровня для параметрически
- заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z =
- ZVAL (или при Z=V[k] если `zval==nan') цветами заданными явно.
- Линии уровня рисуются для Z=VDAT[k]. Строка SCH задает цвет
- контуров: цвет k-го контура определяется символом
- `sch[k%strlen(sch)]'. См. также *note dens::, *note cont::, *note
- contf::, `cont[xyz]'. См. раздел *note ContD sample::, для
- примеров кода и графика.
-
- -- Команда MGL: contd zdat ['sch'=" `num=7 zval=nan']
- -- Команда MGL: contd xdat ydat zdat ['sch'=" `num=7 zval=nan']
- Как предыдущий с вектором V из NUM элементов равно распределенных
- в интервале цветовой шкалы (см., *note caxis::).
-
- -- Команда MGL: axial vdat zdat ['sch'="]
- -- Команда MGL: axial vdat xdat ydat zdat ['sch'="]
- Рисует поверхность вращения линии уровня для параметрически
- заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. Линии
- уровня рисуются для ZDAT[i,j]=VDAT[k]. Если SCH содержит `#', то
- рисуется сетчатая поверхность. Если строка содержит символы `x',
- `y' или `z', то ось вращения устанавливается в указанное
- направление (по умолчанию вдоль оси *note axialdir::). См. также
- *note cont::, *note contf::, *note torus::, *note surf3::. См.
- раздел *note Axial sample::, для примеров кода и графика.
-
- -- Команда MGL: axial zdat ['sch'=" `num=3']
- -- Команда MGL: axial xdat ydat zdat ['sch'=" `num=3']
- Как предыдущий с вектором V из NUM элементов равно распределенных
- в интервале цветовой шкалы (см., *note caxis::).
-
- -- Команда MGL: grad pdat ['sch'=" `num=5 zval=nan']
- -- Команда MGL: grad xdat ydat pdat ['sch'=" `num=5 zval=nan']
- -- Команда MGL: grad xdat ydat zdat pdat ['sch'=" `num=5']
- Рисует линии градиента скалярного поля PDAT заданного
- параметрически {XDAT[i,j], YDAT[i,j]} или {XDAT[i,j,k],
- YDAT[i,j,k], ZDAT[i,j,k]}. Число линий пропорционально NUM. Линии
- рисуются только с границ интервала при NUM<0. См. также *note
- dens::, *note cont::, *note dens3::, *note cont3::, *note flow::.
- См. раздел *note Grad sample::, для примеров кода и графика.
-
- -- Команда MGL: grid2 zdat ['sch'=" `zval=nan']
- -- Команда MGL: grid2 xdat ydat zdat ['sch'=" `zval=nan']
- Рисует плоскую сету для параметрически заданной поверхности
- {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL. См. также *note
- dens::, *note cont::, *note contf::.
-
-\1f
-File: mgl_ru.info, Node: 3D plotting, Next: Dual plotting, Prev: 2D plotting, Up: MGL interface
-
-1.12 3D графики
-======================
-
-Эти функции строят графики для трехмерных (3D) массивов. Трехмерными
-считаются массивы, зависящие от трех параметров (индексов) подобно
-матрице f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l. Есть 5 основных
-типов 3D графиков: поверхность постоянного уровня (*note surf3::),
-график плотности на срезе (DENS3), линии уровня на срезе (*note
-cont3::), закрашенные контуры уровня на срезе (*note contf3::) и график
-объемной прозрачности типа облака (*note cloud::). В функциях *note
-cont3::, *note contf3:: и *note surf3:: значения уровней можно задавать
-автоматически и вручную. Можно также нарисовать на срезе сетку (*note
-grid3::) по массиву данных для улучшения вида графика плотности или
-линий уровня. Каждый тип графика имеет похожий интерфейс. Есть версия
-для рисования одного массива с автоматическими координатами и версия
-для параметрически заданного массива. См. раздел *note 3D plot
-sample::, для примеров кода и графика.
-
- Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
-цветовая схема используется по умолчанию. Массивы X, Y, Z могут быть
-векторами (не 3d массивами как A). Если массивы XDAT, YDAT, ZDAT не
-указаны, то используются массивы со значениями равно распределенными
-вдоль осей x, y, z.
-
- -- Команда MGL: surf3 adat `val' ['sch'="]
- -- Команда MGL: surf3 xdat ydat zdat adat `val' ['sch'="]
- Рисует поверхность уровня для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
- ADAT(x,y,z)=VAL. Если SCH содержит `#', то рисуется сетчатая
- поверхность. См. также *note cloud::, *note dens3::, *note
- surf3c::, *note surf3a::, *note axial::. См. раздел *note Surf3
- sample::, для примеров кода и графика.
-
- -- Команда MGL: surf3 adat ['sch'=" `num=5']
- -- Команда MGL: surf3 xdat ydat zdat adat ['sch'=" `num=5']
- Рисует NUM поверхностей уровня равномерно распределенных в
- интервале цветовой шкалы (см. *note caxis::).
-
- -- Команда MGL: dens3 adat 'dir' [`sval=-1' 'sch'="]
- -- Команда MGL: dens3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="]
- Рисует график плотности для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График
- рисуется на срезе SVAL в направлении DIR={`x', `y', `z'}. Если STL
- содержит `#', то на срезе рисуется сетка. См. также *note cont3::,
- *note contf3::, *note dens::, *note grid3::. См. раздел *note
- Dens3 sample::, для примеров кода и графика.
-
- -- Команда MGL: densa adat ['sch'="]
- -- Команда MGL: densa xdat ydat zdat adat ['sch'="]
- Рисует графики плотности на всех центральных срезах 3d данных.
-
- -- Команда MGL: cont3 vdat adat 'dir' [`sval=-1' 'sch'="]
- -- Команда MGL: cont3 vdat xdat ydat zdat adat 'dir' [`sval=-1'
- 'sch'="]
- Рисует линии уровня для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). Линии рисуются
- для значений из массива V на срезе SVAL в направлении DIR={`x',
- `y', `z'}. Если STL содержит `#', то на срезе рисуется сетка. Если
- SCH содержит `t' или `T', то значения VDAT[k] будут выведены вдоль
- контуров над (или под) кривой. См. также *note dens3::, *note
- contf3::, *note cont::, *note grid3::. См. раздел *note Cont3
- sample::, для примеров кода и графика.
-
- -- Команда MGL: cont3 adat 'dir' [`sval=-1' 'sch'=" `num=7']
- -- Команда MGL: cont3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="
- `num=7']
- Как предыдущий с вектором V из NUM элементов равно распределенных
- в интервале цветовой шкалы (см., *note caxis::).
-
- -- Команда MGL: conta adat ['sch'=" `num=7']
- -- Команда MGL: conta xdat ydat zdat adat ['sch'=" `num=7']
- Рисует линии уровня на всех центральных срезах 3d данных.
-
- -- Команда MGL: contf3 vdat adat 'dir' [`sval=-1' 'sch'="]
- -- Команда MGL: contf3 vdat xdat ydat zdat adat 'dir' [`sval=-1'
- 'sch'="]
- Рисует закрашенные линии (контуры) уровня для 3d массива,
- заданного параметрически ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k],
- ZDAT[i,j,k]). Линии рисуются для значений из массива V на срезе
- SVAL в направлении DIR={`x', `y', `z'}. Если STL содержит `#', то
- на срезе рисуется сетка. См. также *note dens3::, *note cont3::,
- *note contf::, *note grid3::. См. раздел *note ContF3 sample::,
- для примеров кода и графика.
-
- -- Команда MGL: contf3 adat 'dir' [`sval=-1' 'sch'=" `num=7']
- -- Команда MGL: contf3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="
- `num=7']
- Как предыдущий с вектором V из NUM элементов равно распределенных
- в интервале цветовой шкалы (см., *note caxis::).
-
- -- Команда MGL: contfa adat ['sch'=" `num=7']
- -- Команда MGL: contfa xdat ydat zdat adat ['sch'=" `num=7']
- Рисует закрашенные линии (контуры) уровня на всех центральных
- срезах 3d данных.
-
- -- Команда MGL: grid3 adat 'dir' [`sval=-1' 'sch'="]
- -- Команда MGL: grid3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="]
- Рисует сетку для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График
- рисуется на срезе SVAL в направлении DIR={`x', `y', `z'}. См.
- также *note cont3::, *note contf3::, *note dens3::, *note grid2::.
-
- -- Команда MGL: grida adat ['sch'="]
- -- Команда MGL: grida xdat ydat zdat adat ['sch'="]
- Рисует сетку на всех центральных срезах 3d данных.
-
- -- Команда MGL: cloud adat ['sch'="]
- -- Команда MGL: cloud xdat ydat zdat adat ['sch'="]
- Рисует облачный график для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График состоит
- из кубиков с цветом и прозрачностью пропорциональной значениям
- ADAT. Результат похож на облако - малые значения прозрачны, а
- большие нет. Число кубиков зависит от *note meshnum::. Параметр
- ALPHA меняет общую прозрачность графика. См. также *note surf3::.
- См. раздел *note Cloud sample::, для примеров кода и графика.
-
- -- Команда MGL: beam tr g1 g2 adat `rval' ['sch'=" `flag=0 num=3']
- Рисует поверхность уровня для 3d массива ADAT при постоянном
- значении ADAT=VAL. Это специальный тип графика для ADAT заданного
- в сопровождающей системе координат вдоль кривой TR с ортами G1, G2
- и с поперечным размером RVAL. Переменная FLAG - битовый флаг:
- `0x1' - рисовать в сопровождающих (не лабораторных) координатах;
- `0x2' - рисовать проекцию на плоскость \rho-z; `0x4' - рисовать
- нормированное в каждом сечении поле. Размеры массивов по 1-му
- индексу TR, G1, G2 должны быть nx>2. Размеры массивов по 2-му
- индексу TR, G1, G2 и размер по 3-му индексу массива ADAT должны
- быть одинаковы. См. также *note surf3::.
-
-\1f
-File: mgl_ru.info, Node: Dual plotting, Next: Vector fields, Prev: 3D plotting, Up: MGL interface
-
-1.13 Парные графики
-================================
-
-Эти команды строят графики для двух связанных массивов. Есть несколько
-основных типов 3D графиков: поверхность и поверхность уровня с окраской
-по второму массиву (*note surfc::, *note surf3c::), поверхность и
-поверхность уровня с прозрачностью по второму массиву (*note surfa::,
-*note surf3a::), плитки переменного размера (*note tiles::), диаграмма
-точечного отображения (*note map::), STFA диаграмма (*note stfa::). В
-командах *note surf3a:: и *note surf3c:: значения уровней можно
-задавать автоматически и вручную. Каждый тип графика имеет похожий
-интерфейс. Есть версия для рисования одного массива с автоматическими
-координатами и версия для параметрически заданного массива.
-
- Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
-цветовая схема используется по умолчанию. Массивы X, Y, Z могут быть
-векторами (не 3d массивами как A). Если массивы XDAT, YDAT, ZDAT не
-указаны, то используются массивы со значениями равно распределенными
-вдоль осей x, y, z.
-
- -- Команда MGL: surfc zdat cdat ['sch'="]
- -- Команда MGL: surfc xdat ydat zdat cdat ['sch'="]
- Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
- ZDAT[i,j]} с цветом, заданным массивом CDAT[i,j]. Если SCH
- содержит `#', то на поверхности рисуется сетка. См. также *note
- surf::, *note surfa::, *note surf3c::. См. раздел *note SurfC
- sample::, для примеров кода и графика.
-
- -- Команда MGL: surf3c adat cdat `val' ['sch'="]
- -- Команда MGL: surf3c xdat ydat zdat adat cdat `val' ['sch'="]
- Рисует поверхность уровня для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
- A(x,y,z)=VAL. Аналогично *note surf3::, но цвет задается массивом
- CDAT. Если SCH содержит `#', то рисуется сетчатая поверхность. См.
- также *note surf3::, *note surfc::, *note surf3a::. См. раздел
- *note Surf3C sample::, для примеров кода и графика.
-
- -- Команда MGL: surf3c adat cdat ['sch'=" `num=5']
- -- Команда MGL: surf3c xdat ydat zdat adat cdat ['sch'=" `num=5']
- Рисует NUM поверхностей уровня равномерно распределенных в
- интервале цветовой шкалы (см. *note caxis::).
-
- -- Команда MGL: surfa zdat cdat ['sch'="]
- -- Команда MGL: surfa xdat ydat zdat cdat ['sch'="]
- Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
- ZDAT[i,j]} с прозрачностью, заданным массивом CDAT[i,j]. Если SCH
- содержит `#', то на поверхности рисуется сетка. См. также *note
- surf::, *note surfc::, *note surf3a::. См. раздел *note SurfA
- sample::, для примеров кода и графика.
-
- -- Команда MGL: surf3a adat cdat `val' ['sch'="]
- -- Команда MGL: surf3a xdat ydat zdat adat cdat `val' ['sch'="]
- Рисует поверхность уровня для 3d массива, заданного параметрически
- ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
- A(x,y,z)=VAL. Аналогично *note surf3::, но прозрачность задается
- массивом CDAT. Если SCH содержит `#', то рисуется сетчатая
- поверхность. См. также *note surf3::, *note surfa::, *note
- surf3c::. См. раздел *note Surf3A sample::, для примеров кода и
- графика.
-
- -- Команда MGL: surf3a adat cdat ['sch'=" `num=5']
- -- Команда MGL: surf3a xdat ydat zdat adat cdat ['sch'=" `num=5']
- Рисует NUM поверхностей уровня равномерно распределенных в
- интервале цветовой шкалы (см. *note caxis::).
-
- -- Команда MGL: tiles zdat rdat ['sch'="]
- -- Команда MGL: tiles xdat ydat zdat rdat ['sch'="]
- Рисует плитки для параметрически заданной поверхности {XDAT[i,j],
- YDAT[i,j], ZDAT[i,j]}. Аналогично *note tile::, но размер плиток
- задается массивов RDAT. Это создает эффект "прозрачности" при
- экспорте в файлы EPS. См. также *note surfa::, *note tile::. См.
- раздел *note TileS sample::, для примеров кода и графика.
-
- -- Команда MGL: map udat vdat ['sch'=" `pnts=on']
- -- Команда MGL: map xdat ydat udat vdat ['sch'=" `pnts=on']
- Визуализирует точечное отображение для матриц {UDAT, VDAT }
- параметрически зависящих от координат XDAT, YDAT. Исходное
- положение ячейки задает ее цвет. Высота пропорциональна якобиану
- Jacobian(udat,vdat). График является аналогом диаграммы Арнольда.
- Если `pnts=off', то рисуются грани, иначе цветные точки рисуются в
- узлах матриц (полезно для "запутанного" отображения). См. раздел
- *note Map sample::, для примеров кода и графика.
-
- -- Команда MGL: stfa re im `dn' ['sch'=" `pnts=on']
- -- Команда MGL: stfa xdat ydat re im `dn' ['sch'=" `pnts=on']
- Рисует спектрограмму комплексного массива RE+i*`im' для Фурье
- размером DN точек. Параметр DN - любое четное число. Например в 1D
- случае, результатом будет график плотности от массива
- res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn
- размером {int(nx/dn), dn, ny}. Массивы RE, IM параметрически
- зависят от координат XDAT, YDAT. См. раздел *note STFA sample::,
- для примеров кода и графика.
-
-\1f
-File: mgl_ru.info, Node: Vector fields, Next: Other plotting, Prev: Dual plotting, Up: MGL interface
-
-1.14 Векторные поля
-================================
-
-Эти функции рисуют графики для 2D и 3D векторных полей. Есть несколько
-типов графиков: просто векторное поле (*note vect::), вектора вдоль
-траектории (*note traj::), векторное поле каплями (*note dew::), нити
-тока (*note flow::), трубки тока (*note pipe::). Каждый тип графика
-имеет похожий интерфейс. Есть версия для рисования одного массива с
-автоматическими координатами и версия для параметрически заданного
-массива.
-
- Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
-цветовая схема используется по умолчанию. Все размеры массивов AX и AY
-должны быть одинаковы. Младшие размерности массивов X, Y и AX должны
-быть одинаковы. Массивы X и Y могут быть векторами (не матрицами как
-AX). График строится для каждого z среза AX, AY для 2D случаев.
-
- -- Команда MGL: traj xdat ydat udat vdat ['sch'=" `zval=nan len=0']
- -- Команда MGL: traj xdat ydat zdat udat vdat wdat ['sch'=" `len=0']
- Рисует вектора {UDAT, VDAT, WDAT} вдоль кривой {XDAT, YDAT, ZDAT}.
- Длина векторов пропорциональна \sqrt{udat^2+vdat^2+wdat^2}. Строка
- PEN задает цвет (*note Line styles::). По умолчанию (`pen=''').
- Параметр LEN задает фактор длины векторов (если не нуль) или
- выбирать длину пропорционально расстоянию между точками кривой
- (если LEN=0). См. также *note vect::. См. раздел *note Traj
- sample::, для примеров кода и графика.
-
- -- Команда MGL: vect udat vdat ['sch'=" `zval=nan flag=0']
- -- Команда MGL: vect xdat ydat udat vdat ['sch'=" `zval=nan flag=0']
- Рисует векторное поле {UDAT, VDAT} параметрически зависящее от
- координат XDAT, YDAT на плоскости при Z=ZVAL. Длина и цвет
- векторов пропорциональна \sqrt{ax^2+ay^2}. Число рисуемых векторов
- зависит от *note meshnum::. Параметр FLAG побитовый флаг для
- настройки вид векторов: `1' - двуцветный вектор, `2' - одинаковая
- длина векторов, `4' - рисует стрелку в точку сетки, `8' - рисует
- стрелку с серединой в точке сетки, `16' - рисует штрихи вместо
- стрелок. См. также *note flow::, *note dew::, *note vectc::. См.
- раздел *note Vect sample::, для примеров кода и графика.
-
- -- Команда MGL: vect udat vdat wdat ['sch'=" `flag=0']
- -- Команда MGL: vect xdat ydat zdat udat vdat wdat ['sch'=" `flag=0']
- Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
- 3d массивами, а длина и цвет пропорциональны
- \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note Vect 3D sample::,
- для примеров кода и графика.
-
- -- Команда MGL: vectc udat vdat ['sch'=" `zval=nan']
- -- Команда MGL: vectc xdat ydat udat vdat ['sch'=" `zval=nan']
- Аналогично *note vect:: c `flag=2+16=18'. См. раздел *note VectC
- sample::, для примеров кода и графика.
-
- -- Команда MGL: vectc udat vdat wdat ['sch'="]
- -- Команда MGL: vectc xdat ydat zdat udat vdat wdat ['sch'="]
- Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
- 3d массивами, а длина и цвет пропорциональны
- \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note VectC 3D sample::,
- для примеров кода и графика.
-
- -- Команда MGL: vectl udat vdat ['sch'=" `zval=nan']
- -- Команда MGL: vectl xdat ydat udat vdat ['sch'=" `zval=nan']
- Аналогично *note vect:: c `flag=1+16=17'. См. раздел *note VectL
- sample::, для примеров кода и графика.
-
- -- Команда MGL: vectl udat vdat wdat ['sch'="]
- -- Команда MGL: vectl xdat ydat zdat udat vdat wdat ['sch'="]
- Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
- 3d массивами, а длина и цвет пропорциональны
- \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note VectL 3D sample::,
- для примеров кода и графика.
-
- -- Команда MGL: dew udat vdat ['sch'=" `zval=nan']
- -- Команда MGL: dew xdat ydat udat vdat ['sch'=" `zval=nan']
- Рисует капли для векторного поля {UDAT, VDAT}, параметрически
- зависящего от координат XDAT, YDAT при Z=ZVAL. Замечу, что график
- требует много памяти и процессорного времени для своего создания!
- Цвет капель пропорционален \sqrt{ax^2+ay^2}. Число капель
- определяется *note meshnum::. См. также *note vect::. См. раздел
- *note Dew sample::, для примеров кода и графика.
-
- -- Команда MGL: flow udat vdat ['sch'=" `num=5 zval=nan']
- -- Команда MGL: flow xdat ydat udat vdat ['sch'=" `num=5 zval=nan']
- Рисует нити тока для векторного поля {UDAT, VDAT}, параметрически
- зависящего от координат XDAT, YDAT на плоскости при z = ZVAL.
- Число нитей пропорционально NUM. При NUM>0 нитей могут стартовать
- и изнутри сетки, в противном случае только с краев. Цвет нитей
- пропорционален \sqrt{udat^2+vdat^2}. Теплые цвета соответствуют
- нормальному току (типа стока). Холодные цвета соответствуют
- обратному току (типа источника). См. также *note pipe::, *note
- vect::. См. раздел *note Flow sample::, для примеров кода и
- графика.
-
- -- Команда MGL: flow udat vdat wdat ['sch'=" `num=3']
- -- Команда MGL: flow xdat ydat zdat udat vdat wdat ['sch'=" `num=3']
- Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
- 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
- См. раздел *note Flow 3D sample::, для примеров кода и графика.
-
- -- Команда MGL: flow `x0 y0' udat vdat ['sch'=" `zval=nan']
- -- Команда MGL: flow `x0 y0' xdat ydat udat vdat ['sch'=" `zval=nan']
- Рисует нить тока из точки {X0, Y0} для векторного поля {UDAT,
- VDAT}, параметрически зависящего от координат XDAT, YDAT на
- плоскости при z = ZVAL. Цвет нити пропорционален
- \sqrt{udat^2+vdat^2}. Теплые цвета соответствуют нормальному току
- (типа стока). Холодные цвета соответствуют обратному току (типа
- источника).
-
- -- Команда MGL: flow `x0 y0 z0' udat vdat wdat ['sch'="]
- -- Команда MGL: flow `x0 y0 z0' xdat ydat zdat udat vdat wdat ['sch'="]
- Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
- 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
-
- -- Команда MGL: pipe udat vdat ['sch'=" `r0=0.05 num=5 zval=nan']
- -- Команда MGL: pipe xdat ydat udat vdat ['sch'=" `r0=0.05 num=5
- zval=nan']
- Рисует трубки тока для векторного поля {UDAT, VDAT},
- параметрически зависящего от координат XDAT, YDAT на плоскости при
- z = ZVAL. Число трубок пропорционально NUM. При NUM>0 нитей могут
- стартовать и изнутри сетки, в противном случае только с краев.
- Цвет и радиус трубок пропорционален \sqrt{udat^2+vdat^2}. Теплые
- цвета соответствуют нормальному току (типа стока). Холодные цвета
- соответствуют обратному току (типа источника). Параметр R0 задает
- радиус трубок. При R0<0 радиус трубок обратно пропорционален их
- амплитуде. См. также *note flow::, *note vect::. См. раздел *note
- Pipe sample::, для примеров кода и графика.
-
- -- Команда MGL: pipe udat vdat wdat ['sch'=" `r0=0.05 num=3']
- -- Команда MGL: pipe xdat ydat zdat udat vdat wdat ['sch'=" `r0=0.05
- num=3']
- Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
- 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
- См. раздел *note Pipe 3D sample::, для примеров кода и графика.
-
-\1f
-File: mgl_ru.info, Node: Other plotting, Next: Nonlinear fitting, Prev: Vector fields, Up: MGL interface
-
-1.15 Прочие графики
-================================
-
-Это команды, не относящиеся к какой-то специальной категории. Сюда
-входят функции построения графиков по текстовым формулам (*note
-fplot::, *note fsurf::), рисования поверхностей из треугольников (*note
-triplot::), произвольных точек в пространстве (*note dots::) и
-реконструкции по ним поверхности (*note crust::), графики плотности и
-линии уровня на плоскостях, перпендикулярных осям x, y или z
-(dens[xyz], cont[xyz], contf[xyz]). Каждый тип графика имеет похожий
-интерфейс. Есть версия для рисования одного массива с автоматическими
-координатами и версия для параметрически заданного массива. Строка SCH
-задает цветовую схему (*note Color scheme::). Предыдущая цветовая схема
-используется по умолчанию.
-
- -- Команда MGL: densx dat ['sch'=" `val=nan']
- -- Команда MGL: densy dat ['sch'=" `val=nan']
- -- Команда MGL: densz dat ['sch'=" `val=nan']
- Рисуют график плотности на x, y или z плоскостях. Если DAT - 3d
- массив, то выполняется интерполяция к заданному срезу VAL. Функции
- полезны для создания проекций 3D массивов на оси координат. См.
- также `cont[xyz], contf[xyz]', *note dens::. См. раздел *note Dens
- projection sample::, для примеров кода и графика.
-
- -- Команда MGL: contx dat ['sch'=" `val=nan num=7']
- -- Команда MGL: conty dat ['sch'=" `val=nan num=7']
- -- Команда MGL: contz dat ['sch'=" `val=nan num=7']
- Рисуют линии уровня на x, y или z плоскостях. Если DAT - 3d
- массив, то выполняется интерполяция к заданному срезу VAL. Функции
- полезны для создания проекций 3D массивов на оси координат. См.
- также `dens[xyz], contf[xyz]', *note cont::. См. раздел *note Cont
- projection sample::, для примеров кода и графика.
-
- -- Команда MGL: contfx dat ['sch'=" `val=nan num=7']
- -- Команда MGL: contfy dat ['sch'=" `val=nan num=7']
- -- Команда MGL: contfz dat ['sch'=" `val=nan num=7']
- Рисуют закрашенные контуры уровня на x, y или z плоскостях. Если
- DAT - 3d массив, то выполняется интерполяция к заданному срезу
- VAL. Функции полезны для создания проекций 3D массивов на оси
- координат. См. также `dens[xyz], cont[xyz]', *note contf::.
-
- -- Команда MGL: dots xdat ydat zdat ['sch'="]
- -- Команда MGL: dots xdat ydat zdat adat ['sch'="]
- Рисует произвольно расположенные точки {XDAT[i], YDAT[i],
- ZDAT[i]}. Если определен массив ADAT[i], то он задает прозрачность
- точек. См. также *note crust::, *note mark::, *note plot::. См.
- раздел *note Dots sample::, для примеров кода и графика.
-
- -- Команда MGL: crust xdat ydat zdat ['sch'="]
- Реконструирует и рисует поверхность по произвольно расположенным
- точкам {XDAT[i], YDAT[i], ZDAT[i]}. Если строка содержит `#', то
- рисуется сетчатая поверхность. См. также *note dots::, *note
- triplot::. См. раздел *note Crust sample::, для примеров кода и
- графика.
-
- -- Команда MGL: triplot idat xdat ydat ['sch'=" `zval=nan']
- -- Команда MGL: triplot idat xdat ydat zdat ['sch'="]
- -- Команда MGL: triplot idat xdat ydat zdat cdat ['sch'="]
- Рисует поверхность из треугольников. Вершины треугольников
- задаются индексами IDAT в массиве точек {XDAT[i], YDAT[i],
- ZDAT[i]}. Если строка содержит `#', то рисуется сетчатая
- поверхность. Размер по 1-му индексу массива IDAT должен быть 3 или
- больше. Массивы XDAT, YDAT, ZDAT должны иметь одинаковые размеры.
- Массив CDAT задает цвет треугольников (если IDAT.ny=CDAT.nx) или
- цвет вершин (если XDAT.nx=CDAT.nx). См. также *note dots::, *note
- crust::, *note quadplot::, *note tricont::.
-
- -- Команда MGL: tricont vdat idat xdat ydat zdat cdat ['sch'="
- `zval=nan']
- -- Команда MGL: tricont vdat idat xdat ydat zdat ['sch'=" `zval=nan']
- -- Команда MGL: tricont idat xdat ydat zdat ['sch'=" `num=7 zval=nan']
- Рисует линии уровня поверхности из треугольников при Z = ZVAL (или
- для z=VDAT[k] если `zval==NAN'). Вершины треугольников задаются
- индексами IDAT в массиве точек {XDAT[i], YDAT[i], ZDAT[i]}. Размер
- по 1-му индексу массива IDAT должен быть 3 или больше. Массивы
- XDAT, YDAT, ZDAT должны иметь одинаковые размеры. Массив CDAT
- (если указан) задает цвет треугольников (если IDAT.ny=CDAT.nx) или
- цвет вершин (если XDAT.nx=CDAT.nx). См. также *note triplot::,
- *note cont::.
-
- -- Команда MGL: quadplot idat xdat ydat ['sch'=" `zval=nan']
- -- Команда MGL: quadplot idat xdat ydat zdat ['sch'="]
- -- Команда MGL: quadplot idat xdat ydat zdat cdat ['sch'="]
- Рисует поверхность из четырехугольников. Вершины треугольников
- задаются индексами IDAT в массиве точек {XDAT[i], YDAT[i],
- ZDAT[i]}. Если строка содержит `#', то рисуется сетчатая
- поверхность. Размер по 1-му индексу массива IDAT должен быть 4 или
- больше. Массивы XDAT, YDAT, ZDAT должны иметь одинаковые размеры.
- Массив CDAT задает цвет четырехугольников (если IDAT.ny=CDAT.nx)
- или цвет вершин (если XDAT.nx=CDAT.nx). См. также *note triplot::.
-
- -- Команда MGL: fplot 'y(x)' ['pen'=" `zval=nan num=100']
- Рисует функцию `y(x)' в плоскости z=ZVAL с координатой `x' в
- диапазоне x-оси координат. Параметр NUM задает минимальное число
- точек по координате для графика. См. также *note plot::.
-
- -- Команда MGL: fplot 'x(t)' 'y(t)' 'z(t)' ['pen'=" `num=100']
- Рисует параметрическую кривую {`x(t)', `y(t)', `z(t)'}, где
- координата `t' меняется в диапазоне [0, 1]. Параметр NUM задает
- минимальное число точек по координате для графика. См. также *note
- plot::.
-
- -- Команда MGL: fsurf 'z(x,y)' ['sch'=" `num=100']
- Рисует поверхность `z(x,y)' с координатами `x', `y' в диапазоне
- x-,y-осей координат. Параметр NUM задает минимальное число точек
- по координатам для графика. См. также *note surf::.
-
- -- Команда MGL: fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'=" `num=100']
- Рисует параметрическую поверхность {`x(u,v)', `y(u,v)', `z(u,v)'},
- где координаты `u', `v' меняются в диапазоне [0, 1]. Параметр NUM
- задает минимальное число точек по координатам для графика. См.
- также *note surf::.
-
-\1f
-File: mgl_ru.info, Node: Nonlinear fitting, Next: Data create, Prev: Other plotting, Up: MGL interface
-
-1.16 Nonlinear fitting
-======================
-
-Эти команды подбирают параметры функций для наилучшей аппроксимации
-данных, т.е. минимизируют сумму \sum_i (f(x_i, y_i, z_i) -
-a_i)^2/s_i^2. При этом аппроксимирующая функция `f' может зависеть от
-одного аргумента `x' (1D случай), от двух аргументов `x,y' (2D случай)
-или от трех аргументов `x,y,z' (3D случай). Функция `f' также может
-зависеть от параметров. Список параметров задается строкой VAR
-(например, `abcd'). Обычно пользователь должен предоставить начальные
-значения параметров в переменной INI. Однако, при его отсутствии
-используются нулевые значения.
-
- Команды *note fit:: и *note fits:: не рисуют полученные массивы. Они
-заполняют массив FIT по формуле `f' с найденными коэффициентами. При
-этом, координаты `x,y,z' равно распределены в вдоль осей координат.
-Число точек в FIT выбирается максимальным из размера массива FIT и 100.
-Формулу с найденными коэффициентами можно вывести с помощью команды
-*note putsfit::. См. раздел *note Fitting sample::, для примеров кода и
-графика.
-
- Размерность массивов должны быть не меньше, чем число указанных
-массивов XDAT, YDAT, ZDAT. Также подбор коэффициентов будет
-осуществляться только вдоль указанных направлений (например, вдоль x и
-y если указаны только XDAT и YDAT). Если массив XDAT не указан, то
-используется массив со значениями равно распределенными вдоль оси x.
-
- -- Команда MGL: fits adat sdat 'func' 'var' [ini=0]
- -- Команда MGL: fits xdat adat sdat 'func' 'var' [ini=0]
- -- Команда MGL: fits xdat ydat adat sdat 'func' 'var' [ini=0]
- -- Команда MGL: fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]
- "Подгоняют" формулу вдоль x-, y- и z-направлений для массива
- заданного параметрически A[i,j,k](X[i,j,k], Y[i,j,k], Z[i,j,k]) с
- весовыми коэффициентами SDAT[i,j,k].
-
- -- Команда MGL: fit adat 'func' 'var' [ini=0]
- -- Команда MGL: fit xdat adat 'func' 'var' [ini=0]
- -- Команда MGL: fit xdat ydat adat 'func' 'var' [ini=0]
- -- Команда MGL: fit xdat ydat zdat adat 'func' 'var' [ini=0]
- "Подгоняют" формулу вдоль x-, y- и z-направлений для массива
- заданного параметрически A[i,j,k](X[i,j,k], Y[i,j,k], Z[i,j,k]) с
- весовыми коэффициентами равными 1.
-
- -- Команда MGL: putsfit `x y' ['pre'=" 'fnt'=" `size=-1']
- Печатает последнюю подобранную формулу с найденными коэффициентами
- в точке {X, Y}. Строка PRE будет напечатана перед формулой. Все
- другие параметры такие же как в *note Text printing::.
-
-\1f
-File: mgl_ru.info, Node: Data create, Next: Data filling, Prev: Nonlinear fitting, Up: MGL interface
-
-1.17 Создание данных
-==================================
-
- -- Команда MGL: new dat [`nx=1 ny=1 nz=1']
- Создает/пересоздает массив с именем DAT данных указанного размера
- и заполняет его нулями. Ничего не делает при NX, NY, NZ
- отрицательных или равных нулю.
-
- -- Команда MGL: var dat `num v1 [v2=nan]'
- Создает одномерный массив с именем DAT размером `num' и заполняет
- его равномерно в диапазоне [V1, V2]. Если V2=`nan', то
- используется V2=V1.
-
- -- Команда MGL: list dat `v1 ...'
- Создает массив с именем DAT и заполняет его числовыми значениями
- аргументов `v1 ...'. Команда может создавать 1d- и 2d-массивы. Для
- создания 2d-массивов требуется указать разделитель строк данных
- `|'. Размер массива будет [максимальное число чисел в строке *
- число строк]. Например, команда `list 1 | 2 3' создаст массив [1
- 0; 2 3]. Отмечу, что максимальное число аргументов 1000.
-
- -- Команда MGL: list dat d1 ...
- Создает массив с именем DAT и заполняет его числами из массивов
- `d1 ...'. Команда может создавать 2d- и 3d-массивы (если аргументы
- 2d массивы). Младшие размерности всех массивов в аргументах должны
- быть равны размерности D1. Отмечу, что максимальное число
- аргументов 1000.
-
- -- Команда MGL: copy dat dat2 ['eq'=" `on_axis=on']
- -- Команда MGL: copy dat `val'
- Создает массив с именем DAT и копирует в него данные из массива
- DAT2. При этом, если указан параметр EQ, то данные будут изменены
- по формуле аналогично команде *note fill:: (для `on_axis=on') или
- *note modify:: (для `on_axis=off').
-
- -- Команда MGL: idset dat 'ids'
- Устанавливает символьные обозначения для колонок данных. Строка
- должна содержать символы 'a'...'z' один на колонку (без пробелов).
-
- -- Команда MGL: info dat [`detail=off']
- Выводит информацию о массиве (размер, максимальное/минимальное
- значение, моменты и пр.). При `detail=off' показывается только
- краткая информация.
-
- -- Команда MGL: info 'text'
- Выводит текст TEXT как информацию (предупреждение).
-
-\1f
-File: mgl_ru.info, Node: Data filling, Next: Rearrange data, Prev: Data create, Up: MGL interface
-
-1.18 Заполнение данных
-======================================
-
- -- Команда MGL: fill dat v1 v2 ['dir'='x']
- Заполняет значениями равно распределенными в диапазоне [V1, V2] в
- направлении DIR={`x',`y',`z'}.
-
- -- Команда MGL: fill dat 'eq' [vdat=0 wdat=0]
- Заполняет значениями вычисленными по формуле EQ. Формула
- представляет собой произвольное выражение, зависящее от переменных
- `x', `y', `z', `u', `v', `w'. Координаты `x', `y', `z' полагаются
- меняющимися в диапазоне осей координат (в отличие от *note
- modify::). Переменная `u' - значения исходного массива, переменные
- `v', `w' - значения массивов VDAT, WDAT. Последние могут быть
- опущены.
-
- -- Команда MGL: modify dat 'eq' [`dim=0']
- -- Команда MGL: modify dat 'eq' vdat [wdat=0]
- Заполняет значениями вычисленными по формуле EQ. Формула
- представляет собой произвольное выражение, зависящее от переменных
- `x', `y', `z', `u', `v', `w'. Координаты `x', `y', `z' полагаются
- меняющимися в диапазоне [0,1] (в отличие от *note fill::).
- Переменная `u' - значения исходного массива, переменные `v', `w' -
- значения массивов VDAT, WDAT. Последние могут быть опущены. Если
- указан DIM>0, то изменяются только слои >=DIM.
-
- -- MGL command: put dat `val [i=: j=: k=:]'
- Присваивает значения (под-)массива DAT[I, J, K] = VAL. Индексы I,
- J, K равные `:' задают значениия VAL для всего диапазона
- соответствующего направления(ий). Например, `put dat val : 0 :'
- задает DAT[i,0,j]=VAL для i=0...(DAT.nx-1), j=0...(DAT.nz-1).
-
- -- MGL command: put dat vdat [`i=: j=: k=:']
- Копирует значения из массива VDAT в диапазон значений массива DAT.
- Индексы I, J, K равные `:' задают диапазон изменения значений в
- соответствующих направление(ях). Младшие размерности массива VDAT
- должны быть больше выбранного диапазона массива DAT. Например,
- `put dat v : 0 :' присвоит DAT[i,0,j]=VDAT.ny>DAT.nz ? VDAT[i,j] :
- VDAT[i], где i=0...(DAT.nx-1), j=0...(DAT.nz-1) и условие
- vdat.nx>=dat.nx выполнено.
-
-\1f
-File: mgl_ru.info, Node: Rearrange data, Next: File I/O, Prev: Data filling, Up: MGL interface
-
-1.19 Изменение размеров данных
-=====================================================
-
- -- Команда MGL: rearrange dat `mx [my=0 mz=0]'
- Изменяет размерность данных без изменения самого массива данных,
- так что результирующий массив MX*MY*MZ < nx*ny*nz. Если один из
- параметров MY или MZ ноль, то он будет выбран оптимальным образом.
- Например, если MY=0, то будет MY=nx*ny*nz/MX и MZ=1.
-
- -- Команда MGL: extend dat `n1 [n2=0]'
- Увеличивает размер данных путем вставки (|N1|+1) новых срезов
- после (для N1>0) или перед (для N1<0) существующими данными. Можно
- добавить сразу 2 размерности для 1d массива, используя второй
- параметр N2. Данные в новые срезы будут скопированы из
- существующих. Например, для N1>0 новый массив будет a_ij^new =
- a_i^old where j=0...N1. Соответственно, для N1<0 новый массив
- будет a_ij^new = a_j^old, где i=0...|N1|.
-
- -- Команда MGL: transpose dat ['dim'='yxz']
- Транспонирует (меняет порядок размерностей) массив данных. Новый
- порядок размерностей задается строкой DIM.
-
- -- Команда MGL: squeeze dat `rx [ry=1 rz=1 sm=off]'
- Уменьшает размер данных путем удаления элементов с индексами не
- кратными RX, RY, RZ соответственно. Параметр SMOOTH задает
- использовать сглаживания (т.е. out[i]=\sum_{j=i,i+r} a[j]/r) или
- нет (т.е. out[i]=a[j*r]).
-
- -- Команда MGL: crop dat `n1 n2' 'dir'
- Обрезает границы данных при I<N1 и I>N2 (при N2>0) или
- I>`n[xyz]'-N2 (при N2<=0) вдоль направления DIR.
-
- -- Команда MGL: delete dat
- Удаляет массив DAT и освобождает использованную память. Может быть
- полезно для больших неиспользуемых массивов.
-
- -- Команда MGL: delete dat 'dir' `[pos=off num=0]'
- Удаляет NUM срезов вдоль направления DIR с позиции POS.
-
- -- Команда MGL: insert dat 'dir' `[pos=off num=0]'
- Вставляет NUM срезов вдоль направления DIR с позиции POS и
- заполняет их нулями.
-
-\1f
-File: mgl_ru.info, Node: File I/O, Next: Make another data, Prev: Rearrange data, Up: MGL interface
-
-1.20 Чтение/сохранение данных
-===================================================
-
- -- Команда MGL: read dat 'fname'
- Читает данные из текстового файла с разделителями символом
- пробела/табуляции с автоматическим определением размера массива.
- Двойной перевод строки начинает новый срез данных (по направлению
- z).
-
- -- Команда MGL: read dat 'fname' `mx [my=1 mz=1]'
- Читает данные из текстового файла с заданными размерами. Ничего не
- делается если параметры MX, MY или MZ равны нулю или отрицательны.
-
- -- Команда MGL: readmat dat 'fname' [`dim=2']
- Читает данные из текстового файла с размерами, указанными в первых
- DIM числах файла. При этом переменная DIM задает размерность (1d,
- 2d, 3d) данных.
-
- -- Команда MGL: readall dat 'templ' `v1 v2 [dv=1 slice=off]'
- Объединяет данные из нескольких текстовых файлов. Имена файлов
- определяются вызовом функции `sprintf(fname,templ,val);', где VAL
- меняется от V1 до V2 с шагом DV. Данные загружаются один за другим
- в один и тот же срез данных (при SLICE=`off') или срез-за-срезом
- (при SLICE=`on').
-
- -- Команда MGL: readall dat 'templ' `[slice=off]'
- Объединяет данные из нескольких текстовых файлов, чьи имена
- удовлетворяют шаблону TEMPL (например, TEMPL=`"t_*.dat"'). Данные
- загружаются один за другим в один и тот же срез данных (при
- SLICE=`off') или срез-за-срезом (при SLICE=`on').
-
- -- Команда MGL: save dat 'fname'
- Сохраняет массив данных в текстовый файл.
-
- -- Команда MGL: readhdf dat 'fname' 'dname'
- Читает массив с именем DNAME из HDF5 или HDF4 файла FNAME.
-
- -- Команда MGL: savehdf dat 'fname' 'dname'
- Сохраняет массив под именем DNAME в HDF5 или HDF4 файл FNAME.
-
- -- Команда MGL: import dat 'fname' 'sch' [`v1=0 v2=1']
- Читает данные из растрового файла. RGB значения пикселов
- преобразуются в число в диапазоне [V1, V2] используя цветовую
- схему SCH (*note Color scheme::).
-
- -- Команда MGL: export dat 'fname' 'sch' [`v1=0 v2=0']
- Сохраняет данные в растровый файл. Числовые значения,
- нормированные в диапазон [V1, V2], преобразуются в RGB значения
- пикселов, используя цветовую схему SCH (*note Color scheme::).
- Если V1>=V2, то значения V1, V2 определяются автоматически как
- минимальное и максимальное значение данных.
-
-\1f
-File: mgl_ru.info, Node: Make another data, Next: Change data, Prev: File I/O, Up: MGL interface
-
-1.21 Создание новых данных
-=============================================
-
- -- Команда MGL: combine res adat bdat
- Возвращает в массиве данных RES прямое произведение массивов
- (наподобие, res[i,j] = adat[i]*bdat[j] и т.д.).
-
- -- Команда MGL: evaluate res dat idat [`norm=on']
- -- Команда MGL: evaluate res dat idat jdat [`norm=on']
- -- Команда MGL: evaluate res dat idat jdat kdat [`norm=on']
- Возвращает массив данных RES, полученный в результате интерполяции
- исходного массива в точках других массивов (например,
- res[i,j]=dat[idat[i,j],jdat[i,j]]). Размеры массивов IDAT, JDAT,
- KDAT должны совпадать. Координаты в IDAT, JDAT, KDAT полагаются
- нормированными в диапазон [0,1] (при NORM=`on') или в диапазоны
- [0,nx], [0,ny], [0,nz] соответственно.
-
- -- Команда MGL: hist res dat `num v1 v2 [nsub=0]'
- -- Команда MGL: hist res dat wdat `num v1 v2 [nsub=0]'
- Возвращает распределение (гистограмму) RES из NUM точек от
- значений массива DAT в диапазоне [V1, V2]. Массив WDAT задает веса
- элементов (все веса равны 1 если WDAT не указан). Параметр NSUB
- задает число дополнительных точек интерполяции (для сглаживания
- получившейся гистограммы).
-
- -- Команда MGL: hist res xdat adat
- -- Команда MGL: hist res xdat ydat adat
- -- Команда MGL: hist res xdat ydat zdat adat
- Возвращает распределение (гистограмму) RES от значений массива
- ADAT, параметрически зависящего от координат {XDAT,YDAT,ZDAT} в
- диапазоне осей координат. Массив ADAT играет роль веса точки.
- Число точек в результате RES - максимум из размера RES и 100.
-
- -- Команда MGL: momentum res dat 'how' ['dir'='z']
- Возвращает в массиве данных RES момент (1d массив) данных DAT
- вдоль направления DIR. Строка HOW определяет тип момента. Момент
- определяется как res_k = \sum_ij how(x_i,y_j,z_k) dat_ij/ \sum_ij
- a_ij если DIR=`z' и т.д. Координаты `x', `y', `z' - индексы
- массива в диапазоне [0,1].
-
- -- Команда MGL: sum res dat 'dir'
- Возвращает в массиве данных RES результат суммирования DAT вдоль
- направления(ий) DIR.
-
- -- Команда MGL: max res dat 'dir'
- Возвращает в массиве данных RES максимальное значение DAT вдоль
- направления(ий) DIR. Gets array which is the maximal data values
- in given direction or direction(s).
-
- -- Команда MGL: min res dat 'dir'
- Возвращает в массиве данных RES минимальное значение DAT вдоль
- направления(ий) DIR.
-
- -- Команда MGL: resize res dat `mx [my=1 mz=1]'
- Возвращает массив данных RES размером MX, MY, MZ со значениями
- полученными интерполяцией значений массива DAT.
-
- -- Команда MGL: subdata res dat `xx [yy=: zz=:]'
- Возвращает в RES подмассив массива данных DAT с фиксированными
- значениями индексов с положительными значениями. Например,
- `subdata a b : 2' выделяет третью строку (индексы начинаются с
- нуля), `subdata a b 4 :' выделяет 5-ую колонку, `subdata a b : :
- 3' выделяет 4-ый срез и т.д.
-
- -- Команда MGL: trace res dat
- Возвращает массив REF диагональных элементов DAT[i,i] (для 2D
- данных) или DAT[i,i,i] (для 3D данных) где i=0...nx-1. В 1D случае
- возвращается сам массив данных DAT. Размеры массива данных должен
- быть DAT.ny, DAT.nz >= DAT.nx или DAT.ny, DAT.nz = 1.
-
- -- Команда MGL: transform dat 'type' real imag
- Выполняет интегральное преобразование комплексных данных REAL,
- IMAG в выбранном направлении и возвращает модуль результата в RES.
- Порядок и тип преобразований задается строкой TYPE: первый символ
- для x-направления, второй для y-направления, третий для
- z-направления. Возможные символы: `f' - прямое преобразование
- Фурье, `i' - обратное преобразование Фурье, `s' - синус
- преобразование, `c' - косинус преобразование, `h' - преобразование
- Ханкеля, `n' или ` ' - нет преобразования.
-
- -- Команда MGL: transforma dat 'type' ampl phase
- Аналогично предыдущему с заданными амплитудой AMPL и фазой PHASE
- комплексных чисел.
-
- -- Команда MGL: stfad res real imag `dn' ['dir'='x']
- Выполняет оконное преобразование Фурье длиной DN для комплексных
- данных REAL, IMAG и возвращает модуль результата в RES. Например,
- для DIR=`x' результат будет иметь размер {int(nx/dn), dn, ny} и
- будет равен res[i,j,k]=|\sum_d^dn
- exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn.
-
- -- Команда MGL: pde res 'ham' ini_re ini_im [`dz=0.1 k0=100']
- Решает уравнение в частных производных du/dz =
- i*k0*HAM(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy -
- псевдо-дифференциальные операторы. Параметры INI_RE, INI_IM задают
- начальное распределение поля. Координаты в уравнении и в решении
- полагаются в диапазоне осей координат. Замечу, что внутри этот
- диапазон увеличивается в 3/2 раза для уменьшения отражения от
- границ расчетного интервала. Параметр DZ задает шаг по
- эволюционной координате z. В данный момент использован упрощенный
- алгоритм, когда все "смешанные" члена (типа `x*p'->x*d/dx)
- исключаются. Например, в 2D случае это функции типа ham = f(p,z) +
- g(x,z,u). При этом допускаются коммутирующие комбинации (типа
- `x*q'->x*d/dy). Переменная `u' используется для обозначения
- амплитуды поля |u|. Это позволяет решать нелинейные задачи -
- например, нелинейное уравнение Шредингера `ham='p^2+q^2-u^2''.
- Также можно указать мнимую часть для поглощения (типа `ham =
- 'p^2+i*x*(x>0)''), но только если зависимость от `i' линейная,
- т.е. ham = hre+i*him. См. раздел *note PDE sample::, для примеров
- кода и графика.
-
- -- Команда MGL: ray res 'ham' `x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]'
- Решает систему геометрооптических уравнений d_r_/dt = d HAM/d_p_,
- d_p_/dt = -d HAM/d_r_. Это гамильтоновы уравнения для траектории
- частицы в 3D случае. Гамильтониан HAM может зависеть от координат
- `x', `y', `z', импульсов `p'=px, `q'=py, `v'=pz и времени `t': ham
- = H(x,y,z,p,q,v,t). Начальная точка (при `t=0') задается
- переменными {X0, Y0, Z0, P0, Q0, V0}. Параметры DT и TMAX задают
- шаг и максимальное время интегрирования. Результат RES - массив
- {x,y,z,p,q,v,t} с размером {7 * int(TMAX/DT+1) }. См. раздел *note
- Beam tracing sample::, для примеров кода и графика.
-
- -- Команда MGL: qo2d res 'ham' ini_re ini_im ray [`r=1 k0=100' xx=0
- yy=0]
- Решает уравнение в частных производных du/dt =
- i*k0*HAM(p,q,x,y,|u|)[u] в сопровождающей системе координат, где
- p=-i/k0*d/dx, q=-i/k0*d/dy - псевдо-дифференциальные операторы.
- Параметры INI_RE, INI_IM задают начальное распределение поля.
- Параметр RAY задает опорный луч для сопровождающей системы
- координат. Можно использовать луч найденный с помощью `ray'.
- Опорный луч должен быть достаточно гладкий, чтобы система
- координат была однозначной и для исключения ошибок интегрирования.
- Если массивы XX и YY указаны, то в них записываются декартовы
- координаты для каждой точки найденного решения. См. также *note
- pde::. См. раздел *note Beam tracing sample::, для примеров кода и
- графика.
-
- -- Команда MGL: jacobian res xdat ydat [zdat=0]
- Вычисляет якобиан преобразования {i,j,k} в {XDAT,YDAT,ZDAT}, где
- координаты {i,j,k} полагаются нормированными в интервал [0,1].
- Якобиан находится по формуле det||dr_\alpha/d\xi_\beta||, где
- r={XDAT,YDAT,ZDAT} и \xi={i,j,k}. Все размерности всех массивов
- должны быть одинаковы. Данные должны быть трехмерными если указаны
- все 3 массива {XDAT,YDAT,ZDAT} или двумерными если только 2
- массива {XDAT,YDAT}.
-
-\1f
-File: mgl_ru.info, Node: Change data, Next: Operators, Prev: Make another data, Up: MGL interface
-
-1.22 Изменение данных
-====================================
-
-Эти команды изменяют данные вдоль заданного направления(ий) типа
-например дифференцирования, интегрирования и т.д. Направление
-указывается строкой DIR, которая может содержать символы `x', `y' и/или
-`z', вдоль которых изменения будут применены.
-
- -- Команда MGL: cumsum dat 'dir'
- Суммирует с накоплением в выбранном направлении(ях).
-
- -- Команда MGL: integrate dat 'dir'
- Выполняет интегрирование (подобно суммированию с накоплением) в
- выбранном направлении(ях).
-
- -- Команда MGL: diff dat 'dir'
- Выполняет дифференцирование в выбранном направлении(ях).
-
- -- Команда MGL: diff dat xdat ydat [zdat=0]
- Выполняет дифференцирование данных DAT, параметрически зависящих
- от координат, в направлении XDAT с YDAT, ZDAT=constant. Параметр
- ZDAT может быть опущен, что соответствует 2D случаю. Используются
- следующие формулы (2D случай): da/dx =
- (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j), где a_i=da/di, a_j=da/dj
- обозначает дифференцирование вдоль 1-ой и 2-ой размерности.
- Похожие формулы используются и в 3D случае. Порядок аргументов
- можно менять - например, если данные a(i,j) зависят от координат
- {x(i,j), y(i,j)}, то обычная производная по `x' будет равна `diff
- a x y', а обычная производная по `y' будет равна `diff a y x'.
-
- -- Команда MGL: diff2 dat 'dir'
- Выполняет двойное дифференцирование (как в операторе Лапласа) в
- выбранном направлении(ях).
-
- -- Команда MGL: sinfft dat 'dir'
- Выполняет синус преобразование в выбранном направлении(ях). Синус
- преобразование есть \sum a_i \sin(k i).
-
- -- Команда MGL: cosfft dat 'dir'
- Выполняет косинус преобразование в выбранном направлении(ях).
- Синус преобразование есть \sum a_i \cos(k i).
-
- -- Команда MGL: hankel dat 'dir'
- Выполняет преобразование Ханкеля в выбранном направлении(ях).
- Преобразование Ханкеля есть \sum a_i J_0(k i).
-
- -- Команда MGL: swap dat 'dir'
- Меняет местами левую и правую части данных в выбранном
- направлении(ях). Полезно для отображения результата FFT.
-
- -- Команда MGL: roll dat 'dir' num
- Сдвигает данные на NUM ячеек в выбранном направлении(ях).
- Соответствует замене индекса на I->(I+NUM)%N.
-
- -- Команда MGL: mirror dat 'dir'
- Отражает данные в выбранном направлении(ях). Соответствует замене
- индекса на I->N-I.
-
- -- Команда MGL: sew dat ['dir'='xyz' `da=2*pi']
- Удаляет скачки данных (например, скачки фазы после обратных
- тригонометрических функций) с периодом DA в выбранном
- направлении(ях).
-
- -- Команда MGL: smooth data `type' ['dir'='xyz']
- Сглаживает данные в выбранном направлении(ях) методом TYPE. Сейчас
- поддерживаются 4 метода: `0' ничего не делает, `1' линейное
- усреднение по 3 точкам, `2' линейное усреднение по 5 точкам, `3'
- квадратичное усреднение по 5 точкам.
-
- -- Команда MGL: envelop dat ['dir'='x']
- Находит огибающую данных в выбранном направлении. Только одно
- направление может быть выбрано за раз.
-
- -- Команда MGL: normsl dat `v1 v2' ['dir'='z' `keep=on sym=off']
- Нормирует данные срез-за-срезом в выбранном направлении DIR в
- интервал [V1,V2]. Если SYM=`on', то используется симметричный
- интервал [-max(|v1|,|v2|), max(|v1|,|v2|)]. Если KEEP=`on', то
- максимальное значение k-го среза ограничено величиной \sqrt{\sum
- a_ij(k)/\sum a_ij(0)}.
-
- -- Команда MGL: norm dat `v1 v2 [sym=off dim=0]'
- Нормирует данные в интервал [V1,V2]. Если SYM=`on', то
- используется симметричный интервал [-max(|v1|,|v2|),
- max(|v1|,|v2|)]. Изменения применяются только к срезам >=DIM.
-
-\1f
-File: mgl_ru.info, Node: Operators, Next: Program flow, Prev: Change data, Up: MGL interface
-
-1.23 Операторы
-=======================
-
- -- Команда MGL: multo dat dat2
- Поэлементно умножает массив DAT на DAT2.
-
- -- Команда MGL: multo dat `val'
- Умножает каждый элемент на число.
-
- -- Команда MGL: divto dat dat2
- Поэлементно делит массив DAT на DAT2.
-
- -- Команда MGL: divto dat `val'
- Делит каждый элемент на число.
-
- -- Команда MGL: addto dat dat2
- Поэлементно прибавляет DAT2 к массиву DAT.
-
- -- Команда MGL: addto dat `val'
- Прибавляет число к каждому элементу.
-
- -- Команда MGL: subto dat dat2
- Поэлементно вычитает DAT2 из массива DAT.
-
- -- Команда MGL: subto dat `val'
- Вычитает число из каждого элемента.
-
-\1f
-File: mgl_ru.info, Node: Program flow, Next: Command options, Prev: Operators, Up: MGL interface
-
-1.24 Программирование
-=====================================
-
-Эти команды управляют порядком выполнения других команд (условия,
-циклы, подпрограммы), (пере-)определяют аргументы скрипта и пр.
-
- -- Команда MGL: chdir 'path'
- Переходит в папку PATH.
-
- -- Команда MGL: define $N smth
- Задает N-ый аргумент скрипта равным SMTH. Отмечу, что SMTH
- используется как есть (с символами `'' если присутствуют).
- Выполняется только подстановка других макроопределений $0...$9,
- $a...$z. Здесь N это цифра (0...9) или буква (a...z).
-
- -- Команда MGL: define name smth
- Определяет константу (скаляр) с именем `name' и числовым значением
- `smth'. Позднее она может быть использована как обычное число.
-
- -- Команда MGL: defchr $N smth
- Задает N-ый аргумент скрипта равным символу с UTF кодом SMTH.
- Здесь N это цифра (0...9) или буква (a...z).
-
- -- Команда MGL: defnum $N smth
- Задает N-ый аргумент скрипта равным числовому значению SMTH. Здесь
- N это цифра (0...9) или буква (a...z).
-
- -- Команда MGL: defpal $N smth
- Задает N-ый аргумент скрипта равным символу палитры с индексом,
- найденным из SMTH. Здесь N это цифра (0...9) или буква (a...z).
-
- -- Команда MGL: call 'fname' [ARG1 ARG2 ... ARG9]
- Переходит к выполнению (вызывает) подпрограммы FNAME (или внешнего
- скрипта, если функция не была найдена). Опциональные аргументы
- передаются в подпрограмму. См. также *note func::.
-
- -- Команда MGL: func 'fname' [narg=0]
- Определяет подпрограмму с именем FNAME и задает число требуемых
- аргументов. Аргументы будут помещены в параметры скрипта $1, $2,
- ... $9. Отмечу, что выполнение основной программы должно быть
- остановлено до начала определений подпрограмм. См. также *note
- stop::, *note return::.
-
- -- Команда MGL: return
- Возвращается из подпрограммы.
-
- -- Команда MGL: if dat 'cond'
- Начинает блок команд, выполняемый если каждый элемент DAT
- удовлетворяет условию COND.
-
- -- Команда MGL: if `val'
- Начинает блок команд, выполняемый если `val' не ноль.
-
- -- Команда MGL: elseif dat 'cond'
- Начинает блок команд, выполняемый если предыдущий `if' или
- `elseif' не был выполнен и каждый элемент DAT удовлетворяет
- условию COND.
-
- -- Команда MGL: elseif `val'
- Начинает блок команд, выполняемый если предыдущий `if' или
- `elseif' не был выполнен и `val' не ноль.
-
- -- Команда MGL: else
- Начинает блок команд, выполняемый если предыдущий `if' или
- `elseif' не был выполнен.
-
- -- Команда MGL: endif
- Заканчивает определение блока `if/elseif/else'.
-
- -- Команда MGL: for $N `v1 v2 [dv=1]'
- Начинает блок команд, выполняемый в цикле с $N-ым аргументом
- изменяющимся от V1 до V2 с шагом DV. Здесь N это цифра (0...9) или
- буква (a...z).
-
- -- Команда MGL: for $N dat
- Начинает блок команд, выполняемый в цикле с $N-ым аргументом
- пробегающим значения массива DAT. Здесь N это цифра (0...9) или
- буква (a...z).
-
- -- Команда MGL: next
- Заканчивает блок цикла `for'.
-
- -- Команда MGL: once `val'
- Определяет код (между `once on' и `once off') который будет
- выполнен только один раз. Полезно для работы с большими данными в
- программах типа UDAV.
-
- -- Команда MGL: stop
- Останавливает выполнение скрипта.
-
-\1f
-File: mgl_ru.info, Node: Command options, Next: Suffixes, Prev: Program flow, Up: MGL interface
-
-1.25 Опции команд
-============================
-
-Опции команд позволяют легко настроить вид отдельного графика не меняя
-глобальных настроек для все рисунка. Опции указываются после команды.
-Каждая опция отделяется от предыдущей символом `;'. Опции работают так,
-что запоминают текущие настройки рисунка, применяют собственные
-настройки, выполняют команду и возвращают глобальные настройки обратно.
-Поэтому использование опций для команд обработки данных или настройки
-графика бесполезно.
-
- Наиболее часто используемые опции - `xrange, yrange, zrange',
-устанавливающие границы изменения осей координат (и тем самым
-автоматических массивов). Например, команда `plot y; xrange 0.1 0.9'
-построит кривую с x-координатой равно распределенной в интервале 0.1
-... 0.9, а не вдоль текущей оси x.
-
- Полный список опций:
-
- -- Опция MGL: alpha `val'
- -- Опция MGL: alphadef `val'
- Задает величину прозрачности поверхности. Значение должно быть в
- диапазоне [0, 1]. См. также *note alphadef::
-
- -- Опция MGL: ambient `val'
- Задает яркость фонового освещения. Значение должно быть в
- диапазоне [0, 1]. См. также *note ambient::
-
- -- Опция MGL: crange `val1 val2'
- Задает границы цветовой шкалы. См. также *note crange::
-
- -- Опция MGL: xrange `val1 val2'
- Задает границы изменения координаты x. См. также *note xrange::
-
- -- Опция MGL: yrange `val1 val2'
- Задает границы изменения координаты y. См. также *note yrange::
-
- -- Опция MGL: zrange `val1 val2'
- Задает границы изменения координаты z. См. также *note zrange::
-
- -- Опция MGL: cut `val'
- Задает обрезание точек за пределами осей координат. См. также
- *note cut::
-
- -- Опция MGL: fontsize `val'
- Задает размер текста. См. также *note font::
-
- -- Опция MGL: marksize `val'
- Задает размер маркеров. См. также *note marksize::
-
- -- Опция MGL: meshnum `val'
- Задает ориентировочное число линий, стрелок, ячеек и пр. См. также
- *note meshnum::
-
- -- Опция MGL: legend 'txt'
- Добавляет строку 'txt' во внутренний массив записей легенды. Стиль
- линии и маркера аргумента последней вызванной команды построения
- *note 1D plotting::. См. также *note legend::
-
-\1f
-File: mgl_ru.info, Node: Suffixes, Next: Utilities, Prev: Command options, Up: MGL interface
-
-1.26 Суффиксы переменных
-==========================================
-
-Суффиксы позволяют быстро получить числовую характеристику (размер,
-максимальное или минимальное значение, сумму элементов и т.д.) массива
-данных и использовать ее как число (скаляр) в аргументах. Суффиксы
-начинаются с точки `.' сразу после (без пробелов) имени переменной и
-временного массива. Например, `a.nx' даст размер массива A по оси х,
-`b(1).max' даст максимальное значение второй строки массива B,
-`(c(:,0)^2).sum' даст сумму квадратов элементов первой колонки массива
-C и т.д.
-
- Полный список суффиксов:
-*nx, ny, nz*
- Размер массива в направлении x, y, z соответственно.
-
-*max*
- Максимальное значение массива.
-
-*min*
- Минимальное значение массива.
-
-*sum*
- Сумма элементов массива.
-
-*a*
- Первый элемент массива (элемент с индексами 0,0,0).
-
-*fst*
- Первое не нулевое значение массива.
-
-*lst*
- Последнее не нулевое значение массива.
-
-*mx, my, mz*
- Положение максимума в направлении x, y, z соответственно.
-
-*ax, ay, az, aa*
- Положение центра масс в направлении x, y, z соответственно или
- среднее значение массива.
-
-*wx, wy, wz, wa*
- Ширина в направлении x, y, z соответственно или дисперсия
- элементов массива.
-
-*sx, sy, sz, sa*
- Асимметрия в направлении x, y, z соответственно или элементов
- массива.
-
-*kx, ky, kz, ka*
- Эксцесс в направлении x, y, z соответственно или элементов массива.
-
-\1f
-File: mgl_ru.info, Node: Utilities, Prev: Suffixes, Up: MGL interface
-
-1.27 Утилиты для MGL
-==============================
-
-MathGL содержит несколько программ для работы со скриптами MGL. Есть
-утилита для сохранения в растровое (`mgl2png', `mgl2gif') или векторное
-(`mgl2eps', `mgl2svg') изображения. Программа `mglview' показывает
-результат выполнения скрипта MGL и позволяет вращать и настраивать
-график. Также можно транслировать MGL скрипт в C++ файл с помощью
-программы `mgl2cpp'.
-
- Все эти программы имеют схожий набор аргументов. Первым идет имя
-скрипта, а вторым идет имя выходного файлы (может быть опущено),
-последние аргументы - опции скрипта и программы. К опциям относятся
-параметры скрипта (это `$0, $1, ... $9') и настройки локали. Параметры
-скрипта имеют формат `-Nval', где N=0,1...9 - номер параметра, val -
-его значние. Например, опция `-1test' заменит `$1' на `test' в скрипте.
-Опция -Lval устанавливает локаль в значение val. Например, `-Lutf8'
-будет использовать UTF-8 в скрипте.
-
- Также можно создавать анимированные изображения GIF или набор JPEG
-файлов с именами `frameNNNN.jpg' (где `NNNN' - номер кадра). Для этого
-в скрипте надо указать параметры анимации для каждого кадра (строками с
-коментариями `##a val' или опциями `-Aval') или в цикле (строкой с
-комментарием `##с v1 v2 [dv]' или опцию `-Cn1:n2'), которые будут
-подставлены в качестве параметра `$0' при последовательном вызове
-скрипта. Для сохранения кадров в JPEG просто добавьте команду `write
-''' в конце скрипта.
-
-\1f
-File: mgl_ru.info, Node: Examples, Next: Samples, Prev: MGL interface, Up: Top
-
-2 MathGL examples
-*****************
-
-This chapter contain information about basic and advanced MathGL, hints
-and samples for all types of graphics. I recommend you read first 2
-sections one after another and at least look on "Hints" section. Also I
-recommend you to look at *note General concepts::. Sample code for some
-of these examples can be found in `http://mathgl.sf.net/pictures.html'
-and in *note Samples::.
-
-* Menu:
-
-* Basic usage::
-* Advanced usage::
-* Data handling::
-* Data plotting::
-* Hints::
-
-\1f
-File: mgl_ru.info, Node: Basic usage, Next: Advanced usage, Up: Examples
-
-2.1 Basic usage
-===============
-
-MGL script can be used by several manners. Each has positive and
-negative sides:
- * _The using of MGL in UDAV._
-
- Positive side is the possibility to view the plot at once and to
- modify it, rotate, zoom or switch on transparency or lighting) by
- hand or by mouse. Negative sides are: the need of X-terminal.
-
- * _Direct writing to file in bitmap or vector format without
- creation of graphical window._
-
- Positive aspects are: batch processing of similar data set, for
- example, a set of resulting data files for different calculation
- parameters), running from the console program, including the
- cluster calculation), fast and automated drawing, saving pictures
- for further analysis, or demonstration). Negative sides are: the
- usage of the external program for picture viewing. Also, the data
- plotting is non-visual. So, you have to imagine the picture, view
- angles, lighting and so on) before the plotting. I recommend to
- use graphical window for determining the optimal parameters of
- plotting on the base of some typical data set. And later use these
- parameters for batch processing in console program.
-
- In this case you can use a set of programs: `mgl2png', `mgl2gif',
- `mgl2eps', `mgl2svg' or `mglview' for viewing.
-
- The simplest script is
-box # draw bounding box
-axis # draw axis
-fplot 'x^3' # draw some function
-
- Just type it in UDAV and press F5. Also you can save it in text file
-`test.mgl' and type in the console `mgl2png test.mgl' what produce file
-`test.mgl.png' with resulting picture.
-
-\1f
-File: mgl_ru.info, Node: Advanced usage, Next: Data handling, Prev: Basic usage, Up: Examples
-
-2.2 Advanced usage
-==================
-
-Now I show several non-obvious features of MGL: several subplots in a
-single picture, curvilinear coordinates, text printing and so on.
-Generally you may miss this section at first reading, but I don't
-recommend it.
-
-* Menu:
-
-* Subplots::
-* Axis and grids::
-* Curvilinear coordinates::
-* Text printing example::
-
-\1f
-File: mgl_ru.info, Node: Subplots, Next: Axis and grids, Up: Advanced usage
-
-2.2.1 Subplots
---------------
-
-Let me demonstrate possibilities of axes transformation. MathGL has the
-following functions: `SubPlot', `InPlot', `Aspect' and `Rotate', *note
-Transformation matrix::). The order of their calling is strictly
-determined. First, one changes the position of axes in image area,
-functions `SubPlot' and `InPlot'). After that one may rotate the plot,
-function `Rotate'). Finally, one may change aspects of axes, function
-`Aspect'). The following code illustrates the aforesaid it:
-subplot 2 2 0:box
-text -1 1.1 'Just box' 'L'
-inplot 0.2 0.5 0.7 1:box
-text 0 1.2 'Inplot example'
-
-subplot 2 2 1
-rotate 60 40:aspect 1 1 1
-box:text 1 1 1.5 'rotate only' 'R'
-
-subplot 2 2 2
-rotate 60 40:aspect 1 1 2
-box:text 0 0 2 'aspect and rotate'
-
-subplot 2 2 3
-rotate 60 40:aspect 1 2 2
-box:text 0 0 1.5 'Aspect in other direction'
- Here I used function `text' for printing the text in arbitrary
-position of picture, *note Text printing::). Text coordinates and size
-are connected with axes. However, text coordinates may be everywhere,
-including the outside the bounding box. I shall show its features later
-in *Note Text printing example::.
-
- Note that several commands can be placed in a string if they are
-separated by `:' symbol.
-
-\0\b[image src="../png/sample1.png"\0\b]
-
-Example of several subplots on the single picture.
-
-\1f
-File: mgl_ru.info, Node: Axis and grids, Next: Curvilinear coordinates, Prev: Subplots, Up: Advanced usage
-
-2.2.2 Axis and grids
---------------------
-
-MathGL library can draw not only the bounding box but also the axes,
-grids, labels and so on. The limits of axes and their origin (the point
-of intersection) are determined by function `axis'. Also you can use
-`xrange, yrange, zrange' functions (*note Axis settings::). Ticks on
-axis are specified by functions `xtick, ytick, ztick, ttick'. First
-argument the direction for each change will be applied. Second argument
-gives the step between ticks (if positive) or gives the number of ticks
-on the axis (if negative) or set to use logarithmic ticks (if zero).
-Third argument gives numbers of sub-ticks between ticks (default is
-zero). Last argument define the initial ticks position.
-
- Function `Axis' draws axes. Its textual string shows in which
-directions the axis or axes will be drawn (by default `'xyz'', function
-draws axes in all directions). Function `Grid' draws grid
-perpendicularly to specified directions. Example of axes and grid
-drawing is:
-subplot 2 2 0
-xtick 0.4 3 # sets tick step to 0.5
-ytick 0.4 3 # and draws 3 subticks
-box # should be after the ticks change
-axis 'xy': grid
-text 0 1.3 1 'axis and grid'
-
-xtick -5: ytick -5 # restore back
-subplot 2 2 1:rotate 60 40
-origin 0 0 0
-axis
-xlabel 'x' 1
-ylabel 'y' 1
-zlabel 'z' 1
-text 0 0 1.5 'axis and labels'
-
-subplot 2 2 2:rotate 60 40
-xtick 0.2: ytick 0.2: ztick 0.2 # too low step of ticks
-origin -1 -1 -1
-axis:grid
-text 0 0 1.5 'shift origin and add grid'
-text 0 0 1.2 '(note, too many ticks)'
-
-subplot 2 2 3:rotate 60 40
-xtick -6: ytick -6 # decrease the number of ticks
-axis 'yz'
-ylabel 'y axis'
-zlabel 'z axis'
-text 0 0 1.5 'remove x axis, and'
-text 0 0 1.2 'decrease number of ticks'
-
- This example shows the importance of the correct choosing of the
-number of ticks on axis. If tick step is too small then its text may
-overlap and becomes unreadable. This code has the example of `Label'
-function. It draws label for axis in specified direction. The text
-position on axis is specified by third argument of `Label' function. If
-it is positive then then text is drawn near the axis maximum, if
-negative then the same takes place near the minimum of axis, if zero -
-then at the center of axis.
-
-\0\b[image src="../png/sample2.png"\0\b]
-
-Example of setting up axis range and axis ticks.
-
-\1f
-File: mgl_ru.info, Node: Curvilinear coordinates, Next: Text printing example, Prev: Axis and grids, Up: Advanced usage
-
-2.2.3 Curvilinear coordinates
------------------------------
-
-Now let use curvilinear coordinates. In difference from other systems
-of plot creation, MathGL uses textual formulas for connection of the
-old (data) and new (output) coordinates. This allows one to plot in
-arbitrary coordinates. The following code plots the line Y=0, Z=0 in
-Cartesian, polar, parabolic and spiral coordinates:
-new x 50: new y 50: new z 50
-fill y 0.5 0.5: fill x -1 1 # creates data arrays
-origin -1 1 -1
-
-subplot 2 2 0:rotate 60 40
-plot x y z 'r2'
-axis: grid
-text 0 1.3 1 'cartesian'
-
-subplot 2 2 1:rotate 60 40
-axis 'y*sin(pi*x)' 'y*cos(pi*x)' ''
-plot x y z 'r2'
-axis: grid
-text 0 1.3 1 'cylindrical'
-
-subplot 2 2 2:rotate 60 40
-axis '2*y*x' 'y*y - x*x' ''
-plot x y z 'r2'
-axis: grid
-text 0 1.3 1 'parabolic'
-
-subplot 2 2 3:rotate 60 40
-axis 'y*sin(pi*x)' 'y*cos(pi*x)' 'x+z'
-plot x y z 'r2'
-axis: grid
-text 0 1.3 1 'spiral'
-
-\0\b[image src="../png/sample3.png"\0\b]
-
-Example of curvilinear coordinates
-
-\1f
-File: mgl_ru.info, Node: Text printing example, Prev: Curvilinear coordinates, Up: Advanced usage
-
-2.2.4 Text printing example
----------------------------
-
-MathGL prints text by vector font. There are functions for manual
-specifying of text position (like `Puts') and for its automatic
-selection (like `Label', `legend' and so on). MathGL prints text always
-in specified position even if it lies outside the bounding box. The
-default size of font is specified by command FONTSIZE. However, the
-actual size of output string depends on position of axes (depends on
-functions `SubPlot', `InPlot'). The switching of the font style
-(italic, bold, wire and so on) can be done for the whole string (by
-function parameter) or inside the string. By default MathGL parses
-TeX-like commands for symbols and indexes (see *note Font styles::).
-Example of MathGL font drawing is:
-text 0 1 'Text can be in ASCII and in Unicode'
-text 0 0.6 'It can be \wire{wire}, \big{big} or #r{colored}'
-text 0 0.2 'One can change style in string: \b{bold}, \i{italic, \b{both}}'
-text 0 -0.2 'Easy to \a{overline} or \u{underline}'
-text 0 -0.6 'Easy to change indexes ^{up} _{down} @{center}'
-text 0 -1 'It parse TeX: \int \alpha \cdot \sqrt3{sin(\pi x)^2 + \gamma_{i_k}} dx'
-
-\0\b[image src="../png/sample4.png"\0\b]
-
-Example of text printing with different font effects
-
- Another example demonstrate the features of TeX formula parsing.
-text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}', 0, -4
-
-\0\b[image src="../png/samplee.png"\0\b]
-
-Example of TeX formula parsing
-
-\1f
-File: mgl_ru.info, Node: Data handling, Next: Data plotting, Prev: Advanced usage, Up: Examples
-
-2.3 Data handling
-=================
-
-* Menu:
-
-* Array creation::
-* Data changing::
-
-\1f
-File: mgl_ru.info, Node: Array creation, Next: Data changing, Up: Data handling
-
-2.3.1 Array creation
---------------------
-
-One can put numbers into the data instance by several ways. Let us do
-it for sinus function:
- * one can create array by `list' command list a 0 0.04 0.16 0.36 0.64 1
-
- * another way is to copy from "inline" array copy a [0,0.04,0.16,0.36,0.64,1]
-
- * next way is to fill the data by textual formula with the help of
- `modify' function new a 6
- modify a 'x^2'
-
- * or one may fill the array in some interval and modify it later new a 6
- fill a 0 1
- modify a 'u^2'
-
- * or fill the array using current axis range new a 6
- fill a '(x+1)^2/4'
-
- * finally it can be loaded from file new s 6: modify s 'x^2'
- save s 'sqr.dat' # create file first
- read a 'sqr.dat' # load it
-
- * at this one can read only part of data new s 6: modify s 'x^2'
- save s 'sqr.dat' # create file first
- read a 'sqr.dat' 5 # load it
-
- Creation of 2d- and 3d-arrays is mostly the same. One can use direct
-data filling by `list' command
-list a 11 12 13 | 21 22 23 | 31 32 33
- or by inline arrays
-copy a [[11,12,13],[21,22,23],[31,32,33]]
- Also data can be filled by formula
-new z 30 40
-fill z 'sin(pi*x)*cos(pi*y)'
- or loaded from file.
-
- The only non-obvious thing here is using multidimensional arrays in
-C/C++, i.e. arrays defined like `float dat[40][30];'. Since, formaly
-this arrays element `dat[i]' can address the memory in arbitrary place
-you should use the proper function to convert such arrays to `mglData'
-object. For C++ this is functions like `mglData::Set(float **dat, int
-N1, int N2'. For C this is functions like `mgl_data_set_float2(HMDT d,
-const float **dat, int N1, int N2'. At this, you should keep in mind
-that `nx=N2' and `ny=N1' after conversion.
-
-\1f
-File: mgl_ru.info, Node: Data changing, Prev: Array creation, Up: Data handling
-
-2.3.2 Data changing
--------------------
-
-MathGL has functions for data processing: differentiating, integrating,
-smoothing and so on. Let us consider some examples. The simplest ones
-are integration and differentiation. The direction in which operation
-will be performed is specified by textual string, which may contain
-symbols `x', `y' or `z'. For example, the call of `diff a 'x'' will
-differentiate data along `x' direction; the call of `integrate a 'xy''
-perform the double integration of data along `x' and `y' directions;
-the call of `diff2 a 'xyz'' will apply 3d Laplace operator to data and
-so on. Example of this operations on 2d array a=x*y is presented in
-code:
-new a 30 40: modify a 'x*y'
-axis 0 0 0 1 1 1
-subplot 2 2 0:rotate 60 40
-surf a: box
-text 0.7 1 1.2 'a(x,y)'
-subplot 2 2 1:rotate 60 40
-diff a 'x': surf a: box
-text 0.7 1 1.2 'da/dx'
-subplot 2 2 2:rotate 60 40
-integrate a 'xy': surf a: box
-text 0.7 1 1.2 '\int da/dx dxdy'
-subplot 2 2 3:rotate 60 40
-diff2 a 'y': surf a: box
-text 0.7 1 1.2 '\int {d^2}a/dxdy dx'
-
-\0\b[image src="../png/sample6.png"\0\b]
-
-Example of data differentiation and integration
-
- Data smoothing (function `Smooth') is more interesting and
-important. This function has 2 main arguments: type of smoothing and
-its direction. Now 4 methods are supported: `0' does nothing for
-delta=0 or approaches data to zero with the step delta, `1' linear
-averaging by 3 points, `2' linear averaging by 5 points, `3' quadratic
-averaging by 5 points. Let me demonstrate it for 1d case:
-new y0 30
-modify y0 '0.4*sin(2*pi*x)+0.3*cos(3*pi*x)-0.4*sin(4*pi*x)+0.2*rnd'
-copy y1 y0: smooth y1 1
-copy y2 y0: smooth y2 2
-copy y3 y0: smooth y3 3
-
-plot y0 'k': addlegend 'none' 'k'
-plot y1 'r': addlegend 'line 3' 'r'
-plot y2 'g': addlegend 'line 5' 'g'
-plot y3 'b': addlegend 'quad 5' 'b'
-legend: box
-
-\0\b[image src="../png/sample7.png"\0\b]
-
-Example of data smoothing
-
- Finally one can create new data arrays on base of the existing one:
-extract slice, row or column of data (`SubData'), summarize along some
-of direction(s) (`Sum'), find distribution of data elements (`Hist').
-Note, that all these functions are not thread-safe because they use
-static internal variable for output array. In particular, the using of
-several of them in arguments of the same function will lead to
-unpredictable result.
-
-\1f
-File: mgl_ru.info, Node: Data plotting, Next: Hints, Prev: Data handling, Up: Examples
-
-2.4 Data plotting
-=================
-
-Let me now show how to plot the data. MathGL generally has 2 types of
-plotting functions. Simple variant requires a single data array for
-plotting, other data (coordinates) are considered uniformly distributed
-in interval MIN*MAX. Second variant requires data arrays for all
-coordinates. It allows one to plot rather complex multivalent curves
-and surfaces (in case of parametric dependencies). Argument setting to
-default values allows one to plot data in standard form. Manual
-arguments setting gives possibility for fine tuning of colors,
-positions and view of graphics. Note, that the call of drawing function
-adds something to picture but does not clear the previous plots (as it
-does in Matlab). Another difference from Matlab is that all setup (like
-transparency, lightning, axis borders and so on) must be specified
-*before* plotting functions.
-
-* Menu:
-
-* Plots for 1D data::
-* Plots for 2D data::
-* Plots for 3D data::
-* Surface transparency::
-
-\1f
-File: mgl_ru.info, Node: Plots for 1D data, Next: Plots for 2D data, Up: Data plotting
-
-2.4.1 Plots for 1D data
------------------------
-
-Term "1D data" means that data depend on single index (parameter) like
-curve in parametric form {x(i),y(i),z(i)}, i=1...n. There are 5
-generally different types of data representations: simple line plot,
-line plot with filling under it, stairs plot, bar plot and vertical
-lines (*note 1D plotting::). Each type of plotting has similar
-interface. There are 3D version and two 2D versions. One of last
-requires single array. The parameters of line and marks (*note Line
-styles::) are specified by the string argument. If the string parameter
-is `NULL' then solid line with color from palette is used.
-
- Below I shall show the features of 1D plotting on base of `plot'
-function (*note 1D plotting::). Let us start from sinus plot:
-new y0 50: modify y0 'sin(pi*(2*x-1))'
-subplot 2 2 0
-plot y0: box
- Style of line is not specified in `plot' function. So MathGL uses the
-solid line with first color of palette (this is blue). Next subplot
-shows array Y1 with 2 rows:
-subplot 2 2 1
-new y1 50 2
-modify y1 'sin(pi*2*x-pi)'
-modify y1 'cos(pi*2*x-pi)/2' 1
-plot y1: box
- As previously I did not specify the style of lines. As a result,
-MathGL again uses solid line with next colors in palette (there are
-green and red). Now let us plot a circle on the same subplot. The
-circle is parametric curve x=cos(\pi t), y=sin(\pi t). I will set the
-color of the circle (dark yellow, `Y') and put marks `+' at point
-position:
-new x 50: modify x 'cos(pi*2*x-pi)'
-plot x y0 'Y+'
- Note that solid line is used because I did not specify the type of
-line. The same picture can be achieved by `Plot2' function. Let us draw
-ellipse by orange dash line:
-plot y1(:,0) y(:,1) 'q|'
-
- Drawing in 3D space is mostly the same. Let us draw spiral with
-default line style. Now its color is 4-th color from palette (this is
-cyan):
-subplot 2 2 2:rotate 60 40
-new z 50: modify z '2*x-1'
-plot x y0 z 'g':box
- Function `Plot3' does 3D curve plot but for single array. Use it to
-put circle marks on the previous plot:
-new y2 10 3
-modify y2 'cos(pi*(2*x-1-y))'
-modify y2 '2*x-1' 2
-plot y2(:,0) y2(:,1) y2(:,2) 'bo '
- Note that line style is empty ` ' here. Usage of other 1D plotting
-functions looks similar:
-subplot 2 2 3:rotate 60 40
-bars x y0 z 'r':box
-
-\0\b[image src="../png/sample8.png"\0\b]
-
-Example of 1D data plot
-
-\1f
-File: mgl_ru.info, Node: Plots for 2D data, Next: Plots for 3D data, Prev: Plots for 1D data, Up: Data plotting
-
-2.4.2 Plots for 2D data
------------------------
-
-Surfaces `Surf' and other 2D plots (*note 2D plotting::) are drown the
-same simpler as 1D one. The difference is that the string parameter
-specifies not by line style but by the color scheme of the plot (*note
-Color scheme::). Here I draw attention on 4 most interesting color
-schemes. There is gray scheme where color is changed from black to
-white (string `kw') or from white to black (string `wk'). Another
-scheme is useful for accentuation of negative (by blue color) and
-positive (by red color) regions on plot (string `'BbwrR''). Last one is
-the popular "jet" scheme (string `'BbcyrR'').
-
- Now I shall show the example of a surface drawing. At first let us
-switch lightning on
-light on
- and draw the surface, considering coordinates x,y to be uniformly
-distributed in interval MIN*MAX
-new a0 50 40
-modify a0 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
-subplot 2 2 0:rotate 60 40
-surf a0: box
- Color scheme was not specified. So previous color scheme is used. In
-this case it is default color scheme ("jet") for the first plot. Next
-example is a sphere. The sphere is parametrically specified surface:
-new x 50 40: new y 50 40: new z 50 40
-modify x '0.8*sin(2*pi*x)*sin(pi*y)'
-modify y '0.8*cos(2*pi*x)*sin(pi*y)'
-modify z '0.8*cos(pi*y)'
-subplot 2 2 1:rotate 60 40
-surf x y z 'bbwrr': box
- I set color scheme to `'BbwrR'' that corresponds to red top and blue
-bottom of the sphere.
-
- Surfaces will be plotted for each of slice of the data if NZ>1. Next
-example draws surfaces for data arrays with NZ=3:
-new a1 50 40 3
-modify a1 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
-modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*sin(3*pi*(x*y))' 1
-modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))' 2
-subplot 2 2 2:rotate 60 40
-alpha on
-surf a1: box
- Note, that it may entail a confusion. However, if one will use density
-plot then the picture will look better:
-subplot 2 2 3: rotate 60 40
-dens a1: box
- Note, that the previous color scheme is used in last plots because
-there are no direct specification of the one.
-
-\0\b[image src="../png/sample9.png"\0\b]
-
-Example of surface plot for 2D data
-
- Drawing of other 2D plots is analogous. The only peculiarity is the
-usage of flag `#'. By default this flag switches on the drawing of a
-grid on plot (`grid' or `mesh' for plots in plain or in volume).
-However, for isosurfaces (including surfaces of rotation `axial') this
-flag switches the face drawing off. Figure becomes wired. The
-following code gives example of flag `#' using (compare with normal
-function drawing as in its description):
-alpha on: light on: light 0 0 0 1
-new a 30 20
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-
-subplot 2 2 0: rotate 40 60
-surf a 'bbcyrr#': box
-subplot 2 2 1: rotate 40 60
-dens a 'bbcyrr#': box
-subplot 2 2 2: rotate 40 60
-cont a 'bbcyrr#': box
-subplot 2 2 3: rotate 40 60
-axial a 'bbcyrr#': box
-
-\0\b[image src="../png/samplea.png"\0\b]
-
-Example of 2D data plot with color scheme contained `#' symbol
-
-\1f
-File: mgl_ru.info, Node: Plots for 3D data, Next: Surface transparency, Prev: Plots for 2D data, Up: Data plotting
-
-2.4.3 Plots for 3D data
------------------------
-
-Drawing procedures for 3D plot looks similarly to 1D and 2D plots
-described above. There are 3 general types of 3D plots (*note 3D
-plotting::): (i) plots on slices or on projections, (ii) isosurfaces,
-(iii) cloud-like plots. Plots on slice are clear enough - one specifies
-a slice (as its index or as coordinate value) and MathGL draws contour
-lines or density plot on slice plane. Isosurface gives more
-information. Isosurface is 3D analogue of the contour line `cont'. It
-shows the region where data array values exceed specified isosurface
-level. Plot becomes more informative if one adds transparency,
-lightning or sets color scheme depending on coordinates. Generalization
-of isosurface is the cloud-like plot. For this plot the darker color
-and less transparent regions correspond to higher values of data.
-Contrary, the regions with low values are transparent. For plotting of
-the phase of fields (or beams or pulses) one can use isosurface which
-transparency depends on the other data array (see function `surf3a').
-As example of 3D data plots let us draw the Gaussian beam diffraction
-in space. Beam propagates along X axis:
-alpha on: light on
-light 0 0 0 1
-new a 30 30 30: new b 30 30 30
-modify a 'exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))'
-modify b '16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)'
-caxis 0 1
-
-subplot 2 2 0: rotate 40 60
-surf3 a 'wgk': box
-subplot 2 2 1: rotate 40 60
-densa a: box: axis
-subplot 2 2 2: rotate 40 60
-cloud a: box
-subplot 2 2 3: rotate 40 60
-surf3a b a 'q': box
-
-\0\b[image src="../png/sampleb.png"\0\b]
-
-Example of Gaussian beam diffraction (3D data)
-
-\1f
-File: mgl_ru.info, Node: Surface transparency, Prev: Plots for 3D data, Up: Data plotting
-
-2.4.4 Surface transparency
---------------------------
-
-MathGL library has advanced features for setting and handling the
-surface transparency. The simplest way to add transparency is the using
-of function `Alpha'. As a result, all further surfaces (and
-isosurfaces, density plots and so on) become transparent. However,
-their look can be additionally improved.
-
- First, the selected surface will be non-transparent if one sets the
-flag `transparent' before the surface drawing and sets it off after the
-drawing.
-
- Second, the value of transparency can be different from surface to
-surface. To do it just change the value of `alphadef' before the
-drawing of the selected surface. If its value is close to 0 then the
-surface becomes more and more transparent. Contrary, if its value is
-close to 1 then the surface becomes practically non-transparent. This
-is some analogue of `transparent on'.
-
- Third feature is the changing of the way how the light goes through
-overlapped surfaces. The variable `transptype' defines it. By default
-the usual transparency is used (`transptype 0') - surfaces below is
-less visible than the upper ones. A "glass-like" transparency
-(`transptype 1') has a different look when the surface just decreases
-the background light (the surfaces are commutable in this case).
-
- A "neon-like" transparency (`transptype 2') has more interesting
-look. In this case a surface is the light source (like a lamp on the
-dark background) and just adds some intensity to the color. At this,
-the library sets automatically the black color for the background and
-changes the default line color to white.
-
- As example I shall show the variant of plot from *note Plots for 2D
-data:: (grid drawing is disabled) for different types of transparency.
-\0\b[image src="../png/type0.png"\0\b]
-
-Example of `TranspType=0'.
-
-\0\b[image src="../png/type1.png"\0\b]
-
-Example of `TranspType=1'.
-
-\0\b[image src="../png/type2.png"\0\b]
-
-Example of `TranspType=2'.
-
-\1f
-File: mgl_ru.info, Node: Hints, Prev: Data plotting, Up: Examples
-
-2.5 Hints
-=========
-
-In this section I have included some small hints and advices for the
-improving of the quality of plots and for the demonstration of some
-non-trivial features of MathGL library. In contrast to previous
-examples I showed mostly the idea but not the whole drawing function.
-More examples with the source code can be find at
-`http://mathgl.sf.net/' or in section *note Samples::.
-
-* Menu:
-
-* ``Compound'' graphics::
-* Two axes in one plot::
-* Titles for the plot::
-* Changing of the color range::
-* Management of a point cutting::
-* Vector field visualization::
-* Several light sources::
-* CutMin and CutMax features::
-* Mapping visualization::
-* Log-scaled plot::
-* Nonlinear fitting hints::
-* PDE solving hints::
-* Stereo image::
-
-\1f
-File: mgl_ru.info, Node: ``Compound'' graphics, Next: Two axes in one plot, Up: Hints
-
-2.5.1 "Compound" graphics
--------------------------
-
-As I noted above, MathGL functions (except the special one, like `clf')
-do not erase the previous plotting but just add the new one. It allows
-one to draw "compound" plots easily. For example, popular Matlab
-command `surfc' can be emulated in MathGL by 2 calls:
-surf a
-cont a 0 7 -1 # draw contours at z = -1
- Here A is 2-dimensional data for the plotting, `-1' is the value of
-z-coordinate at which the contour should be plotted (at the bottom in
-this example). Analogously, one can draw density plot instead of
-contour lines and so on.
-
- Another nice plot is contour lines plotted directly on the surface:
-light on # switch on light for the surface
-surf a 'bbcyrr' # select 'jet' colormap for the surface
-cont a 'y' # and yellow color for contours
- The possible difficulties arise in black&white case, when the color of
-the surface can be close to the color of a contour line. In that case I
-may suggest the following code:
-light on # switch on light for the surface
-surf a 'kw' # select 'gray' colormap for the surface
-caxis -1 0 # first draw for darker surface colors
-conta 'w' # white contours
-caxis 0 1 # now draw for brighter surface colors
-cont a 'k' # black contours
- The idea is to divide the color range on 2 parts (dark and bright) and
-to select the contrasting color for contour lines for each of part.
-
- Similarly, one can plot flow thread over density plot of vector
-field amplitude (this is another amusing plot from Matlab) and so on.
-The list of compound graphics can be prolonged but I hope that the
-general idea is clear.
-
-\1f
-File: mgl_ru.info, Node: Two axes in one plot, Next: Titles for the plot, Prev: ``Compound'' graphics, Up: Hints
-
-2.5.2 Two axes in one plot
---------------------------
-
-Developing the previous hint one can make a plot with 2 or more axes.
-The idea is that the change of settings does not influence on the
-already drawn graphics. So, for 2-axes plot let us set the first axis
-and draw everything concerning it. Then let us setup the second axis
-and draw things for the second axis. The corresponding code is (*note
-2-axes sample::):
-# set up first axis
-axis -1 -1 1 1: origin -1 -1
-axis:fplot 'sin(pi*x)' # draw something in first axis
-# set up second axis
-axis 0 0 1 1: origin 1 1
-axis: fplot 'cos(4*pi*x^2)' # draw something in second axis
- Note, that the first and the second axes look better if being placed
-in different corners. In the code presented above the first axis is
-placed in the left-bottom corner, and the second one is placed in the
-right-top corner.
-
-\1f
-File: mgl_ru.info, Node: Titles for the plot, Next: Changing of the color range, Prev: Two axes in one plot, Up: Hints
-
-2.5.3 Titles for the plot
--------------------------
-
-The printing of nice titles for the plot is not so trivial task in
-general case. The problem is that the rotation and aspect change lead
-to different looks for titles of different subplots. So, the resulting
-look is not so good as it could be. The solution is simple - to print
-titles exactly after `subplot' call and before any rotation, aspect
-change and so on! Analogously, the title for the whole picture looks
-better if it is printed first (before any `subplot' calls).
-Alternatively you can use function `title' for plotting title for the
-picture at any time.
-
-\1f
-File: mgl_ru.info, Node: Changing of the color range, Next: Management of a point cutting, Prev: Titles for the plot, Up: Hints
-
-2.5.4 Changing of the color range
----------------------------------
-
-By default (for the user comfort), the color range is set equal to
-z-range of the plot. However, there are different ranges. So, one can
-obtain amusing plot by the change of color range manually. For example,
-there are plots with one-color bottom (or top) or practically bi-color
-picture and so on.
-
- For example, compare 2 surfaces:
-subplot 2 1 0
-surf a # usual coloring range
-subplot 2 1 1
-caxis 0 1
-surf a # bottom of the surface have one-colour filling
-
-\1f
-File: mgl_ru.info, Node: Management of a point cutting, Next: Vector field visualization, Prev: Changing of the color range, Up: Hints
-
-2.5.5 Management of a point cutting
------------------------------------
-
-Sometimes an experimental or numerical surface has outstanding points.
-Visualization of such surface will lead to the hole(s) in place of such
-points. The standard method of "fighting" - to change data values - is
-not always good and is not so convenient. MathGL library has another
-method - to set variable `cut off'. As a consequence, all outstanding
-points will be projected on the bounding box.
-
- Such method is good not only for outstanding points but also for the
-case when one need to plane the bottom or the top of the plot. Exactly
-such case is demonstrated in the code:
-new a 20 30 # create some data
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-# set lower border above the data minimal value
-axis -1 -1 0 1 1 1:rotate 40 60
-cut off # set off cutting flag
-surf a # and draw the surface
- It is an interesting result, is not it?
-
-\1f
-File: mgl_ru.info, Node: Vector field visualization, Next: Several light sources, Prev: Management of a point cutting, Up: Hints
-
-2.5.6 Vector field visualization
---------------------------------
-
-Vector field visualization (especially in 3d case `vect3' or `vectc')
-may look tangly - there are too many overlapping lines. I may suggest 2
-ways to solve this problem. The first one is to change `meshnum' for
-decreasing the number of hachures. The second way is to use the flow
-thread chart `Flow'. Unfortunately, I don't know any other methods to
-visualize 3d vector field. If you know any, e-mail me and I shall add
-it to MatGL.
-
-\1f
-File: mgl_ru.info, Node: Several light sources, Next: CutMin and CutMax features, Prev: Vector field visualization, Up: Hints
-
-2.5.7 Several light sources
----------------------------
-
-In contrast to the most of other programs, MathGL supports several (up
-to 10) light sources. Moreover, the color each of them can be
-different: white (this is usual), yellow, red, cyan, green and so on.
-The use of several light sources may be interesting for the
-highlighting of some peculiarities of the plot or just to make an
-amusing picture. Note, each light source can be switched on/off
-individually (*note Several light sample::).
-
-\1f
-File: mgl_ru.info, Node: CutMin and CutMax features, Next: Mapping visualization, Prev: Several light sources, Up: Hints
-
-2.5.8 CutMin and CutMax features
---------------------------------
-
-MathGL library has a feature for cutting of points in some region
-CUTMIN*CUTMAX. Such an excision can be used to improve the look of the
-graphics. Moreover, this cutting may help to show an internal structure
-of an object (like `isocaps' plot in Matlab). For example, let us use
-the standard 3D data array and show its interior (*note CutMinMax
-sample::).
-
-new c 61 51 40 # create the data
-new v 10: fill v -0.5 1
-modify c '(-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1))'
-cut 0 -1 -1 1 0 1.1
-rotate 40 60: surf3 c -0.5 'bbcyrr'
-contf3 v c 'x' -1 'bbcyrr': contf3 v c 'y' -1 'bbcyrr'
-contf3 v c 'z' 0 'bbcyrr': contf3 v c 'z' 39 'bbcyrr'
-
- One can also exclude points from arbitrary area in space. This area
-defined by textual formula `cut' (*note Cutting::). The algorithm is
-the same as shown for "rectangular cutting".
-
-\1f
-File: mgl_ru.info, Node: Mapping visualization, Next: Log-scaled plot, Prev: CutMin and CutMax features, Up: Hints
-
-2.5.9 Mapping visualization
----------------------------
-
-Sometime ago I worked with mapping and have a question about its
-visualization. Let me remember you that mapping is some transformation
-rule for one set of number to another one. The 1d mapping is just an
-ordinary function - it takes a number and transforms it to another one.
-The 2d mapping (which I used) is a pair of functions which take 2
-numbers and transform them to another 2 ones. Except general plots
-(like `surfc', `surfa') there is a special plot - Arnold diagram. It
-shows the area which is the result of mapping of some initial area
-(usually square).
-
- I tried to make such plot in `map'. It shows the set of points or
-set of faces, which final position is the result of mapping. At this,
-the color gives information about their initial position and the height
-describes Jacobian value of the transformation. Unfortunately, it looks
-good only for the simplest mapping but for the real multivalent
-quasi-chaotic mapping it produces a confusion. So, use it if you like
-:).
-
-\1f
-File: mgl_ru.info, Node: Log-scaled plot, Next: Nonlinear fitting hints, Prev: Mapping visualization, Up: Hints
-
-2.5.10 Log-scaled plot
-----------------------
-
-Log-scaled plot can be drawn by 2 steps. First, one should change the
-scale of axis by call `axis 'lg(x)' 'lg(y)'' (in this example, x- and
-y-axis will be log-scaled). Second, one should set logarithmic scale
-for axis ticks by changing variables: `xtick 0: yticks 0'. Finally, one
-should check (or change) the axis ranges and origin so that their
-values to be positive. For example of log-log plot *note Log-log
-sample::.
-
-\1f
-File: mgl_ru.info, Node: Nonlinear fitting hints, Next: PDE solving hints, Prev: Log-scaled plot, Up: Hints
-
-2.5.11 Nonlinear fitting hints
-------------------------------
-
-Nonlinear fitting is rather simple. All that you need is the data to
-fit, the approximation formula and the list of coefficients to fit
-(better with its initial guess values). Let me demonstrate it on the
-following simple example (*note Fitting sample::). First, let us use
-sin function with some random noise:
-new rnd 100: new idl 50 # data to be fitted and ideal data
-modify rnd '0.4*rnd+0.1+sin(4*pi*x)'
-modify idl '0.3+sin(4*pi*x)'
- and plot it to see that data we will fit
-axis -1 -2 1 2
-plot rnd '. ':plot idl 'b'
-box:text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'C:b' -1
-
- The next step is the fitting itself. For that let me specify an
-initial values INI for coefficients `abc' and do the fitting for
-approximation formula `a+b*sin(c*x)'
-new res # The data for found formula
-fit res rnd 'a+b*sin(c*x)' 'abc' [1, 1, 3]
- Now display it
-plot res 'r'
-text -1 -1.3 'fitted:' 'L:r' -1
-putsfit 0 -1.8 'y = ' 'C:r' -1
-
- NOTE! the fitting results may have strong dependence on initial
-values for coefficients due to algorithm features. The problem is that
-in general case there are several local 'optimums' for coefficients and
-the program returns only first found one! There are no guaranties that
-it will be the best. Try for example to set `ini = [0, 0, 0]' in the
-code above.
-
-\1f
-File: mgl_ru.info, Node: PDE solving hints, Next: Stereo image, Prev: Nonlinear fitting hints, Up: Hints
-
-2.5.12 PDE solving hints
-------------------------
-
-Solving of Partial Differential Equations (PDE, including beam tracing)
-and ray tracing (or finding particle trajectory) are more or less
-common task. So, MathGL have several functions for that. There are
-`ray' for ray tracing, `pde' for PDE solving, `qo2d' for beam tracing
-in 2D case. Note, that these functions take "Hamiltonian" or equations
-as string values. And I don't plan now to allow one to use user-defined
-functions. There are 2 reasons: the complexity of corresponding
-interface; and the basic nature of used methods which are good for
-samples but may not good for serious scientific calculations.
-
- The ray tracing can be done by `ray' function. Really ray tracing
-equation is Hamiltonian equation for 3D space. So, the function can be
-also used for finding a particle trajectory (i.e. solve Hamiltonian
-ODE) for 1D, 2D or 3D cases. The function have a set of arguments.
-First of all, it is Hamiltonian which defined the media (or the
-equation) you are planning to use. The Hamiltonian is defined by string
-which may depend on coordinates `x', `y', `z', time `t' (for particle
-dynamics) and momentums `p'=p_x, `q'=p_y, `v'=p_z. Next, you have to
-define the initial conditions for coordinates and momentums at `t'=0
-and set the integrations step (default is 0.1) and its duration
-(default is 10). The Runge-Kutta method of 4-th order is used for
-integration.
-new re 128:new im 128
-ray r 'p^2+q^2-x-1' -0.7 -1 0 0 0.5 0
-plot r(0) r(1)
- This example calculate the reflection from linear layer (media with
-Hamiltonian `p^2+q^2-x-1'=p_x^2+p_y^2-x-1). This is parabolic curve.
-The resulting array have 7 columns which contain data for
-{x,y,z,p,q,v,t}.
-
- The solution of PDE is a bit more complicated. As previous you have
-to specify the equation as pseudo-differential operator \hat H(x,
-\nabla) which is called sometime as "Hamiltonian" (for example, in beam
-tracing). As previously, it is defined by string which may depend on
-coordinates `x', `y', `z' (but not time!), momentums `p'=(d/dx)/i k_0,
-`q'=(d/dy)/i k_0 and field amplitude `u'=|u|. The evolutionary
-coordinate is `z' in all cases. So that, the equation look like du/dz =
-ik_0 H(x,y,\hat p, \hat q, |u|)[u]. Dependence on field amplitude
-`u'=|u| allows one to solve nonlinear problems too. For example, for
-nonlinear Shrodinger equation you may set `ham='p^2 + q^2 - u^2''. Also
-you may specify imaginary part for wave absorption, like `ham = 'p^2 +
-i*x*(x>0)'', but only if dependence on variable `i' is linear (i.e. H =
-Hre+i*Him).
-
- Next step is specifing the initial conditions at `z'=`Min.z'. The
-function need 2 arrays for real and for imaginary part. Note, that
-coordinates x,y,z are supposed to be in specified range [Min, Max]. So,
-the data arrays should have corresponding scales. Finally, you may set
-the integration step and paramter k0=k_0. Also keep in mind, that
-internally the 2 times large box is used (for suppressing numerical
-reflection from boundaries) and the equation should well defined even
-in this extended range.
-
- Final comment is concerning the possible form of pseudo-differential
-operator H. At this moment, simplified form of operator H is supported
-- all "mixed" terms (like `x*p'->x*d/dx) are excluded. For example, in
-2D case this operator is effectively H = f(p,z) + g(x,z,u). However
-commutable combinations (like `x*q'->x*d/dy) are allowed for 3D case.
-
- So, for example let solve the equation for beam deflected from
-linear layer and absorbed later. The operator will have the form
-`'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)'' that correspond to equation ik_0
-\partial_z u + \Delta u + x \cdot u + i (x+z)/2 \cdot u = 0. This is
-typical equation for Electron Cyclotron (EC) absorption in magnetized
-plasmas. For initial conditions let me select the beam with plane phase
-front exp(-48*(x+0.7)^2). The corresponding code looks like this (*note
-PDE sample::):
-new re 128: new im 128
-fill re 'exp(-48*(x+0.7)^2)'
-pde a 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)' re im 0.01, 30
-transpose a 'yxz'
-caxis 0 1
-dens a 'wyrRk'
-
- The last example is example of beam tracing. Beam tracing equation
-is special kind of PDE equation written in coordinates accompanied to a
-ray. Generally this is the same parameters and limitation as for PDE
-solving but the coordinates are defined by the ray and by parameter of
-grid width W in direction transverse the ray. So, you don't need to
-specify the range of coordinates. *BUT* there is limitation. The
-accompanied coordinates are well defined only for smooth enough rays,
-i.e. then the ray curvature K (which is defined as 1/K^2 = (|\ddot r|^2
-|\dot r|^2 - (\ddot r, \dot r)^2)/|\dot r|^6) is much large then the
-grid width: K>>w. So, you may receive incorrect results if this
-condition will be broken.
-
- You may use following code for obtaining the same solution as in
-previous example:
-new re 128: new im 128
-define $1 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
-ray r $1 -0.7 -1 0 0 0.5 0 0.02 2
-# now start beam tracing
-fill re 'exp(-48*x^2)'
-new xx: new yy
-qo2d a $1 re im r 1 30 xx yy
-caxis 0 1
-dens xx yy a 'wyrRk'
-
-\1f
-File: mgl_ru.info, Node: Stereo image, Prev: PDE solving hints, Up: Hints
-
-2.5.13 Stereo image
--------------------
-
-One can easily create stereo image in MathGL. Stereo image can be
-produced by making two subplots with slightly different rotation
-angles. The corresponding code looks like this (*note Stereo image
-sample::):
-subplot 2 1 0 # left image
-rotate 40 60+3
-# draw something here
-subplot 2 1 1 # right image
-rotate 40 60-3
-# draw the same here
-
-\1f
-File: mgl_ru.info, Node: Samples, Next: Copying This Manual, Prev: Examples, Up: Top
-
-3 Примеры использования MathGL
-**************************************************
-
-Эта глава содержит множество примеров кода для всех типов графиков,
-наиболее важных возможностей библиотеки и советов. Аналогичные примеры
-(с картинками) можно найти на `http://mathgl.sf.net/pictures.html'.
-
-* Menu:
-
-* 1D plotting samples::
-* 2D plotting samples::
-* 3D plotting samples::
-* Dual plotting samples::
-* Basic features::
-* Additional features::
-* Advanced features::
-
-\1f
-File: mgl_ru.info, Node: 1D plotting samples, Next: 2D plotting samples, Up: Samples
-
-3.1 Примеры 1D графиков
-======================================
-
-* Menu:
-
-* Plot sample::
-* Radar sample::
-* Tens sample::
-* Area sample::
-* Area gradient sample::
-* Bars sample::
-* Bars 2 colors sample::
-* Bars above sample::
-* Bars fall sample::
-* Barh sample::
-* Step sample::
-* Stem sample::
-* Region sample::
-* Region gradient sample::
-* Error sample::
-* BoxPlot sample::
-* Mark sample::
-* TextMark sample::
-* Tube sample::
-* Text sample::
-* Torus sample::
-* Chart sample::
-* Pie chart sample::
-* Ring chart sample::
-
-\1f
-File: mgl_ru.info, Node: Plot sample, Next: Radar sample, Up: 1D plotting samples
-
-3.1.1 Plot - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/plot.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-box
-plot y
-
-\1f
-File: mgl_ru.info, Node: Radar sample, Next: Tens sample, Prev: Plot sample, Up: 1D plotting samples
-
-3.1.2 Radar - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/radar.png"\0\b]
-
-new y 10 3
-modify y '0.4*sin(pi*(2*x+y/2))+0.1*rnd'
-radar y '#'
-
-\1f
-File: mgl_ru.info, Node: Tens sample, Next: Area sample, Prev: Radar sample, Up: 1D plotting samples
-
-3.1.3 Tens - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/tens.png"\0\b]
-
-new y 50
-new c 50
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify c 'sin(2*pi*x)'
-box
-tens y c
-
-\1f
-File: mgl_ru.info, Node: Area sample, Next: Area gradient sample, Prev: Tens sample, Up: 1D plotting samples
-
-3.1.4 Area - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/area.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-origin 0 0
-box
-area y
-
-\1f
-File: mgl_ru.info, Node: Area gradient sample, Next: Bars sample, Prev: Tens sample, Up: 1D plotting samples
-
-3.1.5 Area с градиентной заливкой - пример использования
------------------------------------------------------------------------------------------------
-
-\0\b[image src="../png/area_2.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-origin 0 0
-box
-area y 'cbgGyr'
-
-\1f
-File: mgl_ru.info, Node: Bars sample, Next: Bars 2 colors sample, Prev: Area gradient sample, Up: 1D plotting samples
-
-3.1.6 Bars - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/bars.png"\0\b]
-
-new y 10 3
-modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
-origin 0 0
-box
-bars y
-
-\1f
-File: mgl_ru.info, Node: Bars 2 colors sample, Next: Bars above sample, Prev: Bars sample, Up: 1D plotting samples
-
-3.1.7 Bars (2 цвета) - пример использования
--------------------------------------------------------------------
-
-\0\b[image src="../png/bars_2.png"\0\b]
-
-new y 10 3
-modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
-origin 0 0
-box
-bars y 'cbgGyr'
-
-\1f
-File: mgl_ru.info, Node: Bars above sample, Next: Bars fall sample, Prev: Bars 2 colors sample, Up: 1D plotting samples
-
-3.1.8 Bars (один над другим) - пример использования
------------------------------------------------------------------------------------
-
-\0\b[image src="../png/bars_a.png"\0\b]
-
-new y 10 3
-modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
-origin 0 0
-box
-bars y 'a'
-
-\1f
-File: mgl_ru.info, Node: Bars fall sample, Next: Bars above sample, Prev: Bars above sample, Up: 1D plotting samples
-
-3.1.9 Bars "водопад" - пример использования
----------------------------------------------------------------------
-
-\0\b[image src="../png/bars_f.png"\0\b]
-
-new y 10 3
-modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
-origin 0 0
-box
-bars y 'f'
-
-\1f
-File: mgl_ru.info, Node: Barh sample, Next: Step sample, Prev: Bars fall sample, Up: 1D plotting samples
-
-3.1.10 Barh - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/barh.png"\0\b]
-
-new y 10 3
-modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
-origin 0 0
-box
-barh y
-
-\1f
-File: mgl_ru.info, Node: Step sample, Next: Stem sample, Prev: Barh sample, Up: 1D plotting samples
-
-3.1.11 Step - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/step.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-box
-step y
-
-\1f
-File: mgl_ru.info, Node: Stem sample, Next: Region sample, Prev: Step sample, Up: 1D plotting samples
-
-3.1.12 Stem - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/stem.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-origin 0 0
-box
-stem y 'o'
-
-\1f
-File: mgl_ru.info, Node: Region sample, Next: Region gradient sample, Prev: Stem sample, Up: 1D plotting samples
-
-3.1.13 Region - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/region.png"\0\b]
-
-new y1 50
-new y2 50
-modify y1 '0.3*sin(2*pi*x)'
-modify y2 '0.5+0.3*cos(2*pi*x)'
-box
-region y1 y2 'r'
-plot y1 'k2'
-plot y2 'k2'
-
-\1f
-File: mgl_ru.info, Node: Region gradient sample, Next: Error sample, Prev: Region sample, Up: 1D plotting samples
-
-3.1.14 Region с градиентной заливкой - пример использования
---------------------------------------------------------------------------------------------------
-
-\0\b[image src="../png/region_2.png"\0\b]
-
-new y1 50
-new y2 50
-modify y1 '0.3*sin(2*pi*x)'
-modify y2 '0.5+0.3*cos(2*pi*x)'
-box
-region y1 y2 'yr'
-plot y1 'k2'
-plot y2 'k2'
-
-\1f
-File: mgl_ru.info, Node: Error sample, Next: BoxPlot sample, Prev: Region gradient sample, Up: 1D plotting samples
-
-3.1.15 Error - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/error.png"\0\b]
-
-new y 50
-new x0 10
-new y0 10
-new ex 10
-new ey 10
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify x0 '2*x-1 + 0.1*rnd-0.05'
-modify y0 '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x) + 0.2*rnd-0.1'
-modify ey '0.2'
-modify ex '0.1'
-box
-plot y
-error x0 y0 ex ey 'ko'
-
-\1f
-File: mgl_ru.info, Node: BoxPlot sample, Next: Mark sample, Prev: Error sample, Up: 1D plotting samples
-
-3.1.16 BoxPlot - пример использования
---------------------------------------------------------
-
-\0\b[image src="../png/boxplot.png"\0\b]
-
-new a 10 7
-modify a '(2*rnd-1)^3/2'
-box
-boxplot a
-plot a ' ko'
-
-\1f
-File: mgl_ru.info, Node: Mark sample, Next: TextMark sample, Prev: BoxPlot sample, Up: 1D plotting samples
-
-3.1.17 Mark - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/mark.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-new y1 50
-modify y1 '0.5+0.3*cos(2*pi*x)'
-box
-mark y y1 'bs'
-
-\1f
-File: mgl_ru.info, Node: TextMark sample, Next: Tube sample, Prev: Mark sample, Up: 1D plotting samples
-
-3.1.18 TextMark - пример использования
----------------------------------------------------------
-
-\0\b[image src="../png/textmark.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-new y1 50
-modify y1 '0.5+0.3*cos(2*pi*x)'
-box
-textmark y y1 '\gamma'
-
-\1f
-File: mgl_ru.info, Node: Tube sample, Next: Text sample, Prev: TextMark sample, Up: 1D plotting samples
-
-3.1.19 Tube - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/tube.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-rotate 40 60
-light on
-box
-tube y 0.05
-
-\1f
-File: mgl_ru.info, Node: Text sample, Next: Torus sample, Prev: Tube sample, Up: 1D plotting samples
-
-3.1.20 Text - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/text.png"\0\b]
-
-new y 50 3
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-box
-plot y(:,0)
-text y 'This is very long string drawn along a curve' ':k'
-text y 'Another string drawn above a curve' 'T:r'
-
-\1f
-File: mgl_ru.info, Node: Torus sample, Next: Chart sample, Prev: Text sample, Up: 1D plotting samples
-
-3.1.21 Torus - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/torus.png"\0\b]
-
-new y1 50
-new y2 50
-modify y1 '0.5+0.3*cos(2*pi*x)'
-modify y2 '0.3*sin(2*pi*x)'
-rotate 40 60
-light on
-box
-torus y1 y2 'pz'
-
-\1f
-File: mgl_ru.info, Node: Chart sample, Next: Pie chart sample, Prev: Torus sample, Up: 1D plotting samples
-
-3.1.22 Chart - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/chart.png"\0\b]
-
-new ch 7 2
-modify ch 'rnd+0.1'
-rotate 40 60
-light on
-box
-chart ch
-
-\1f
-File: mgl_ru.info, Node: Pie chart sample, Next: Ring chart sample, Prev: Chart sample, Up: 1D plotting samples
-
-3.1.23 Pie chart - пример использования
-----------------------------------------------------------
-
-\0\b[image src="../png/pie_chart.png"\0\b]
-
-new ch 7 2
-modify ch 'rnd+0.1'
-rotate 40 60
-light on
-axis '(y+1)/2*cos(pi*x)' '(y+1)/2*sin(pi*x)' ''
-box
-chart ch 'bgr cmy#'
-
-\1f
-File: mgl_ru.info, Node: Ring chart sample, Prev: Pie chart sample, Up: 1D plotting samples
-
-3.1.24 Ring chart - пример использования
------------------------------------------------------------
-
-\0\b[image src="../png/ring_chart.png"\0\b]
-
-new ch 7 2
-modify ch 'rnd+0.1'
-rotate 40 60
-light on
-axis '(y+2)/3*cos(pi*x)' '(y+2)/3*sin(pi*x)' ''
-box
-chart ch 'bgr cmy#'
-
-\1f
-File: mgl_ru.info, Node: 2D plotting samples, Next: 3D plotting samples, Prev: 1D plotting samples, Up: Samples
-
-3.2 Примеры 2D графиков
-======================================
-
-* Menu:
-
-* Surf sample::
-* Transparent surface sample::
-* Surface in fog sample::
-* Sharp colors sample::
-* Mesh sample::
-* Fall sample::
-* Belt sample::
-* Tile sample::
-* Boxs sample::
-* Dens sample::
-* Cont sample::
-* ContF sample::
-* ContD sample::
-* Axial sample::
-* Grad sample::
-
-\1f
-File: mgl_ru.info, Node: Surf sample, Next: Transparent surface sample, Up: 2D plotting samples
-
-3.2.1 Surf - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/surf.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-surf a
-
-\1f
-File: mgl_ru.info, Node: Transparent surface sample, Next: Surface in fog sample, Prev: Surf sample, Up: 2D plotting samples
-
-3.2.2 Transparent surface - пример использования
--------------------------------------------------------------------
-
-\0\b[image src="../png/surf_alpha.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-alpha on
-box
-surf a
-
-\1f
-File: mgl_ru.info, Node: Surface in fog sample, Next: Sharp colors sample, Prev: Transparent surface sample, Up: 2D plotting samples
-
-3.2.3 Surface in fog - пример использования
---------------------------------------------------------------
-
-\0\b[image src="../png/surf_fog.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-fog 1
-box
-surf a
-
-\1f
-File: mgl_ru.info, Node: Sharp colors sample, Next: Mesh sample, Prev: Surface in fog sample, Up: 2D plotting samples
-
-3.2.4 Sharp colors - пример использования
-------------------------------------------------------------
-
-\0\b[image src="../png/surf_sl.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-surf a 'BbcyrR|'
-
-\1f
-File: mgl_ru.info, Node: Mesh sample, Next: Fall sample, Prev: Sharp colors sample, Up: 2D plotting samples
-
-3.2.5 Mesh - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/mesh.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-box
-mesh a
-
-\1f
-File: mgl_ru.info, Node: Fall sample, Next: Belt sample, Prev: Mesh sample, Up: 2D plotting samples
-
-3.2.6 Fall - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/fall.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-box
-fall a
-
-\1f
-File: mgl_ru.info, Node: Belt sample, Next: Tile sample, Prev: Fall sample, Up: 2D plotting samples
-
-3.2.7 Belt - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/belt.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-belt a
-
-\1f
-File: mgl_ru.info, Node: Tile sample, Next: Boxs sample, Prev: Belt sample, Up: 2D plotting samples
-
-3.2.8 Tile - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/tile.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-tile a
-
-\1f
-File: mgl_ru.info, Node: Boxs sample, Next: Dens sample, Prev: Tile sample, Up: 2D plotting samples
-
-3.2.9 Boxs - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/boxs.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-origin 0 0 0
-box
-boxs a
-
-\1f
-File: mgl_ru.info, Node: Dens sample, Next: Cont sample, Prev: Boxs sample, Up: 2D plotting samples
-
-3.2.10 Dens - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/dens.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-dens a
-colorbar
-
-\1f
-File: mgl_ru.info, Node: Cont sample, Next: ContF sample, Prev: Dens sample, Up: 2D plotting samples
-
-3.2.11 Cont - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/cont.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-box
-cont a
-
-\1f
-File: mgl_ru.info, Node: ContF sample, Next: ContD sample, Prev: Cont sample, Up: 2D plotting samples
-
-3.2.12 ContF - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/contf.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-contf a
-
-\1f
-File: mgl_ru.info, Node: ContD sample, Next: Axial sample, Prev: ContF sample, Up: 2D plotting samples
-
-3.2.13 ContD - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/contd.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-var v 9 -1 1
-box
-contd v a
-colorbar v
-
-\1f
-File: mgl_ru.info, Node: Axial sample, Next: Grad sample, Prev: ContD sample, Up: 2D plotting samples
-
-3.2.14 Axial - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/axial.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-alpha on
-box
-axial a
-
-\1f
-File: mgl_ru.info, Node: Grad sample, Prev: Axial sample, Up: 2D plotting samples
-
-3.2.15 Grad - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/grad.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box:alpha on:dens a
-grad a
-
-\1f
-File: mgl_ru.info, Node: 3D plotting samples, Next: Dual plotting samples, Prev: 2D plotting samples, Up: Samples
-
-3.3 Примеры 3D графиков
-======================================
-
-* Menu:
-
-* Surf3 sample::
-* Cloud sample::
-* CloudP sample::
-* Dens3 sample::
-* Cont3 sample::
-* ContF3 sample::
-* Cont projection sample::
-* Dens projection sample::
-* CutMinMax sample::
-* Isocaps sample::
-* CutOff sample::
-
-\1f
-File: mgl_ru.info, Node: Surf3 sample, Next: Cloud sample, Up: 3D plotting samples
-
-3.3.1 Surf3 - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/surf3.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-light on
-alpha on
-box
-surf3 a
-
-\1f
-File: mgl_ru.info, Node: Cloud sample, Next: CloudP sample, Prev: Surf3 sample, Up: 3D plotting samples
-
-3.3.2 Cloud - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/cloud.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-alpha on
-box
-cloud a 'wyrRk'
-
-\1f
-File: mgl_ru.info, Node: CloudP sample, Next: Dens3 sample, Prev: Cloud sample, Up: 3D plotting samples
-
-3.3.3 CloudP - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/cloudp.png"\0\b]
-
-Not available.
-
-\1f
-File: mgl_ru.info, Node: Dens3 sample, Next: Cont3 sample, Prev: CloudP sample, Up: 3D plotting samples
-
-3.3.4 Dens3 - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/densa.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-alpha on
-origin 0 0 0
-box
-densa a
-axis
-
-\1f
-File: mgl_ru.info, Node: Cont3 sample, Next: ContF3 sample, Prev: Dens3 sample, Up: 3D plotting samples
-
-3.3.5 Cont3 - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/conta.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-box
-conta a
-
-\1f
-File: mgl_ru.info, Node: ContF3 sample, Next: Cont projection sample, Prev: Cont3 sample, Up: 3D plotting samples
-
-3.3.6 ContF3 - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/contfa.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-light on
-box
-contfa a
-
-\1f
-File: mgl_ru.info, Node: Cont projection sample, Next: Dens projection sample, Prev: ContF3 sample, Up: 3D plotting samples
-
-3.3.7 Cont projection - пример использования
----------------------------------------------------------------
-
-\0\b[image src="../png/cont_xyz.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-box
-sum s a 'x'
-contx s '' -1
-sum s a 'y'
-conty s '' 1
-sum s a 'z'
-contz s '' -1
-
-\1f
-File: mgl_ru.info, Node: Dens projection sample, Next: CutMinMax sample, Prev: Cont projection sample, Up: 3D plotting samples
-
-3.3.8 Dens projection - пример использования
----------------------------------------------------------------
-
-\0\b[image src="../png/dens_xyz.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-box
-sum s a 'x'
-densx s '' -1
-sum s a 'y'
-densy s '' 1
-sum s a 'z'
-densz s '' -1
-
-\1f
-File: mgl_ru.info, Node: CutMinMax sample, Next: Isocaps sample, Prev: Dens projection sample, Up: 3D plotting samples
-
-3.3.9 CutMinMax - пример использования
----------------------------------------------------------
-
-\0\b[image src="../png/cutminmax.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-light on
-alpha on
-cut 0 -1 -1 1 0 1
-box
-surf3 a
-
-\1f
-File: mgl_ru.info, Node: Isocaps sample, Next: CutOff sample, Prev: CutMinMax sample, Up: 3D plotting samples
-
-3.3.10 "Isocaps" - пример использования
-----------------------------------------------------------
-
-\0\b[image src="../png/cutminmax2.png"\0\b]
-
-new a 61 51 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-light on
-cut 0 -1 -1 1 0 1.1
-box
-surf3 a -1
-contf3 a 'x' -1
-contf3 a 'y' -1
-contf3 a 'z' 0
-contf3 a 'z' 39
-
-\1f
-File: mgl_ru.info, Node: CutOff sample, Prev: Isocaps sample, Up: 3D plotting samples
-
-3.3.11 CutOff - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/surf3_cutoff.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-light on
-alpha on
-cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)'
-box
-surf3 a
-
-\1f
-File: mgl_ru.info, Node: Dual plotting samples, Next: Basic features, Prev: 3D plotting samples, Up: Samples
-
-3.4 Примеры парных/векторных графиков
-===================================================================
-
-* Menu:
-
-* SurfC sample::
-* SurfA sample::
-* TileS sample::
-* Map sample::
-* Traj sample::
-* Vect sample::
-* VectL sample::
-* VectC sample::
-* Flow sample::
-* Pipe sample::
-* Dew sample::
-* Surf3C sample::
-* Surf3A sample::
-* Vect 3D sample::
-* VectL 3D sample::
-* VectC 3D sample::
-* Flow 3D sample::
-* Pipe 3D sample::
-* Crust sample::
-* Dots sample::
-
-\1f
-File: mgl_ru.info, Node: SurfC sample, Next: SurfA sample, Up: Dual plotting samples
-
-3.4.1 SurfC - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/surfc.png"\0\b]
-
-new a 50 40
-new b 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-surfc a b
-
-\1f
-File: mgl_ru.info, Node: SurfA sample, Next: TileS sample, Prev: SurfC sample, Up: Dual plotting samples
-
-3.4.2 SurfA - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/surfa.png"\0\b]
-
-new a 50 40
-new b 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-alpha on
-box
-surfa a b
-
-\1f
-File: mgl_ru.info, Node: TileS sample, Next: Map sample, Prev: SurfA sample, Up: Dual plotting samples
-
-3.4.3 TileS - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/tiles.png"\0\b]
-
-new a 50 40
-new b 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-tile a b
-
-\1f
-File: mgl_ru.info, Node: Map sample, Next: Traj sample, Prev: TileS sample, Up: Dual plotting samples
-
-3.4.4 Map - пример использования
----------------------------------------------------
-
-\0\b[image src="../png/map.png"\0\b]
-
-new a 50 40
-new b 50 40
-text 0 0 '\to'
-zrange -2 2
-subplot 2 1 0
-text 0 1.1 '\{x, y\}' '' -2
-box
-fill a 'x'
-fill b 'y'
-map a b 'brgk' 0 0
-subplot 2 1 1
-text 0 1.1 '\{\frac{x^3+y^3}{2}, \frac{x-y}{2}\}' '' -2
-box
-fill a '(x^3+y^3)/2'
-fill b '(x-y)/2'
-map a b 'brgk' 0 0
-
-\1f
-File: mgl_ru.info, Node: Traj sample, Next: Vect sample, Prev: Map sample, Up: Dual plotting samples
-
-3.4.5 Traj - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/traj.png"\0\b]
-
-new y 50 3
-new x 50
-new y1 50
-new y2 50
-modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
-modify y 'sin(2*pi*x)' 1
-modify y 'cos(2*pi*x)' 2
-fill x -1 1
-modify y1 '0.5+0.3*cos(2*pi*x)'
-modify y2 '0.3*sin(2*pi*x)'
-box
-plot x y
-traj x y y1 y2
-
-\1f
-File: mgl_ru.info, Node: Vect sample, Next: VectL sample, Prev: Traj sample, Up: Dual plotting samples
-
-3.4.6 Vect - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/vect.png"\0\b]
-
-new a 20 30
-new b 20 30
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-vect a b
-
-\1f
-File: mgl_ru.info, Node: VectL sample, Next: VectC sample, Prev: Vect sample, Up: Dual plotting samples
-
-3.4.7 VectL - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/vectl.png"\0\b]
-
-new a 20 30
-new b 20 30
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-vectl a b
-
-\1f
-File: mgl_ru.info, Node: VectC sample, Next: Flow sample, Prev: VectL sample, Up: Dual plotting samples
-
-3.4.8 VectC - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/vectc.png"\0\b]
-
-new a 20 30
-new b 20 30
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-vectc a b
-
-\1f
-File: mgl_ru.info, Node: Flow sample, Next: Pipe sample, Prev: VectC sample, Up: Dual plotting samples
-
-3.4.9 Flow - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/flow.png"\0\b]
-
-new a 20 30
-new b 20 30
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-flow a b
-
-\1f
-File: mgl_ru.info, Node: Pipe sample, Next: Dew sample, Prev: Flow sample, Up: Dual plotting samples
-
-3.4.10 Pipe - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/pipe.png"\0\b]
-
-new a 20 30
-new b 20 30
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-light on
-box
-pipe a b
-
-\1f
-File: mgl_ru.info, Node: Dew sample, Next: Surf3C sample, Prev: Pipe sample, Up: Dual plotting samples
-
-3.4.11 Dew - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/dew.png"\0\b]
-
-new a 20 30
-new b 20 30
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-light on
-dew a b
-
-\1f
-File: mgl_ru.info, Node: Surf3C sample, Next: Surf3A sample, Prev: Dew sample, Up: Dual plotting samples
-
-3.4.12 Surf3C - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/surf3c.png"\0\b]
-
-new a 60 50 40
-new b 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-modify b '1-2*tanh(4*(x+y-1)^2)'
-rotate 40 60
-light on
-alpha on
-box
-surf3c a b
-
-\1f
-File: mgl_ru.info, Node: Surf3A sample, Next: Vect 3D sample, Prev: Surf3C sample, Up: Dual plotting samples
-
-3.4.13 Surf3A - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/surf3a.png"\0\b]
-
-new a 60 50 40
-new b 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-modify b '1-2*tanh(4*(x+y-1)^2)'
-rotate 40 60
-light on
-alpha on
-box
-surf3a a b
-
-\1f
-File: mgl_ru.info, Node: Vect 3D sample, Next: VectL 3D sample, Prev: Surf3A sample, Up: Dual plotting samples
-
-3.4.14 Vect 3D - пример использования
---------------------------------------------------------
-
-\0\b[image src="../png/vect3.png"\0\b]
-
-new ex 10 10 10
-new ey 10 10 10
-new ez 10 10 10
-fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
-rotate 40 60
-box
-vect ex ey ez 'bwr'
-
-\1f
-File: mgl_ru.info, Node: VectL 3D sample, Next: VectC 3D sample, Prev: Vect 3D sample, Up: Dual plotting samples
-
-3.4.15 VectL 3D - пример использования
----------------------------------------------------------
-
-\0\b[image src="../png/vectl3.png"\0\b]
-
-new ex 10 10 10
-new ey 10 10 10
-new ez 10 10 10
-fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
-rotate 40 60
-box
-vectl ex ey ez 'bwr'
-
-\1f
-File: mgl_ru.info, Node: VectC 3D sample, Next: Flow 3D sample, Prev: VectL 3D sample, Up: Dual plotting samples
-
-3.4.16 VectC 3D - пример использования
----------------------------------------------------------
-
-\0\b[image src="../png/vectc3.png"\0\b]
-
-new ex 10 10 10
-new ey 10 10 10
-new ez 10 10 10
-fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
-rotate 40 60
-box
-vectc ex ey ez 'bwr'
-
-\1f
-File: mgl_ru.info, Node: Flow 3D sample, Next: Pipe 3D sample, Prev: VectC 3D sample, Up: Dual plotting samples
-
-3.4.17 Flow 3D - пример использования
---------------------------------------------------------
-
-\0\b[image src="../png/flow3.png"\0\b]
-
-new ex 30 30 30
-new ey 30 30 30
-new ez 30 30 30
-fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
-rotate 40 60
-box
-flow ex ey ez 'bwr'
-
-\1f
-File: mgl_ru.info, Node: Pipe 3D sample, Next: Crust sample, Prev: Flow 3D sample, Up: Dual plotting samples
-
-3.4.18 Pipe 3D - пример использования
---------------------------------------------------------
-
-\0\b[image src="../png/pipe3.png"\0\b]
-
-new ex 10 10 10
-new ey 10 10 10
-new ez 10 10 10
-fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
-fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
-rotate 40 60
-light on
-box
-pipe ex ey ez 'bwr'
-
-\1f
-File: mgl_ru.info, Node: Crust sample, Next: Dots sample, Prev: Pipe 3D sample, Up: Dual plotting samples
-
-3.4.19 Crust - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/crust.png"\0\b]
-
-read a 'hotdogs.pts'
-norm a -1 1 on
-rotate 40 60
-light on
-box
-crust a 'p'
-
-\1f
-File: mgl_ru.info, Node: Dots sample, Prev: Crust sample, Up: Dual plotting samples
-
-3.4.20 Dots - пример использования
------------------------------------------------------
-
-\0\b[image src="../png/dots.png"\0\b]
-
-read a 'hotdogs.pts'
-norm a -1 1 on
-rotate 40 60
-box
-dots a 'p'
-
-\1f
-File: mgl_ru.info, Node: Basic features, Next: Additional features, Prev: Dual plotting samples, Up: Samples
-
-3.5 Базовые возможности
-=========================================
-
-* Menu:
-
-* 1D plot sample::
-* 2D plot sample::
-* 3D plot sample::
-* Line styles sample::
-* Arrow styles sample::
-* Text styles sample::
-* TeX parsing sample::
-* Font faces sample::
-* Colors sample::
-* Color schemes sample::
-* Normal transparency::
-* Glass-like transparency::
-* Lamp-like transparency::
-
-\1f
-File: mgl_ru.info, Node: 1D plot sample, Next: 2D plot sample, Up: Basic features
-
-3.5.1 Пример графиков 1D данных
----------------------------------------------------
-
-\0\b[image src="../png/sample8.png"\0\b]
-
-new y0 50: modify y0 'sin(pi*(2*x-1))'
-subplot 2 2 0
-plot y0: box
-
-subplot 2 2 1
-new y1 50 2
-modify y1 'sin(pi*2*x-pi)'
-modify y1 'cos(pi*2*x-pi)/2' 1
-plot y1: box
-
-new x 50: modify x 'cos(pi*2*x-pi)'
-plot x y0 'Y+'
-plot y1(:,0) y(:,1) 'q|'
-
-subplot 2 2 2:rotate 60 40
-new z 50: modify z '2*x-1'
-plot x y0 z 'g':box
-new y2 10 3
-modify y2 'cos(pi*(2*x-1-y))'
-modify y2 '2*x-1' 2
-plot y2(:,0) y2(:,1) y2(:,2) 'bo '
-
-subplot 2 2 3:rotate 60 40
-bars x y0 z 'r':box
-
-\1f
-File: mgl_ru.info, Node: 2D plot sample, Next: 3D plot sample, Prev: 1D plot sample, Up: Basic features
-
-3.5.2 Пример графиков 2D данных
----------------------------------------------------
-
-\0\b[image src="../png/sample9.png"\0\b]
-
-light on
-
-new a0 50 40
-modify a0 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
-subplot 2 2 0:rotate 60 40
-surf a0: box
-
-new x 50 40: new y 50 40: new z 50 40
-modify x '0.8*sin(2*pi*x)*sin(pi*y)'
-modify y '0.8*cos(2*pi*x)*sin(pi*y)'
-modify z '0.8*cos(pi*y)'
-subplot 2 2 1:rotate 60 40
-surf x y z 'bbwrr': box
-
-new a1 50 40 3
-modify a1 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
-modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*sin(3*pi*(x*y))' 1
-modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))' 2
-subplot 2 2 2:rotate 60 40
-alpha on
-surf a1: box
-
-subplot 2 2 3: rotate 60 40
-dens a1: box
-
-\1f
-File: mgl_ru.info, Node: 3D plot sample, Next: Line styles sample, Prev: 2D plot sample, Up: Basic features
-
-3.5.3 Пример графиков 3D данных
----------------------------------------------------
-
-\0\b[image src="../png/sampleb.png"\0\b]
-
-alpha on: light on
-light 0 0 0 1
-new a 30 30 30: new b 30 30 30
-modify a 'exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))'
-modify b '16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)'
-caxis 0 1
-
-subplot 2 2 0: rotate 40 60
-surf3 a 'wgk': box
-subplot 2 2 1: rotate 40 60
-densa a: box: axis
-subplot 2 2 2: rotate 40 60
-cloud a: box
-subplot 2 2 3: rotate 40 60
-surf3a b a 'q': box
-
-\1f
-File: mgl_ru.info, Node: Line styles sample, Next: Arrow styles sample, Prev: 3D plot sample, Up: Basic features
-
-3.5.4 Пример стилей линий и маркеров
---------------------------------------------------------------
-
-\0\b[image src="../png/sample5.png"\0\b]
-
-NOT AVAILABLE
-
-\1f
-File: mgl_ru.info, Node: Arrow styles sample, Next: Text styles sample, Prev: Line styles sample, Up: Basic features
-
-3.5.5 Пример стилей стрелок
-----------------------------------------------
-
-\0\b[image src="../png/sampled.png"\0\b]
-
-NOT AVAILABLE
-
-\1f
-File: mgl_ru.info, Node: Text styles sample, Next: TeX parsing sample, Prev: Arrow styles sample, Up: Basic features
-
-3.5.6 Пример стилей текста
---------------------------------------------
-
-\0\b[image src="../png/sample4.png"\0\b]
-
-text 0 1 'Text can be in ASCII and in Unicode'
-text 0 0.6 'It can be \wire{wire}, \big{big} or #r{colored}'
-text 0 0.2 'One can change style in string: \b{bold}, \i{italic, \b{both}}'
-text 0 -0.2 'Easy to \a{overline} or \u{underline}'
-text 0 -0.6 'Easy to change indexes ^{up} _{down} @{center}'
-text 0 -1 'It parse TeX: \int \alpha \cdot \sqrt3{sin(\pi x)^2 + \gamma_{i_k}} dx'
-
-\1f
-File: mgl_ru.info, Node: TeX parsing sample, Next: Font faces sample, Prev: Text styles sample, Up: Basic features
-
-3.5.7 Пример TeX формулы
--------------------------------------
-
-\0\b[image src="../png/samplee.png"\0\b]
-
-text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}' '' -4
-
-\1f
-File: mgl_ru.info, Node: Font faces sample, Next: Colors sample, Prev: TeX parsing sample, Up: Basic features
-
-3.5.8 Примеры начертаний шрифта
-------------------------------------------------------
-
-\0\b[image src="../png/fonts.png"\0\b]
-
-NOT AVAILABLE
-
-\1f
-File: mgl_ru.info, Node: Colors sample, Next: Color schemes sample, Prev: Font faces sample, Up: Basic features
-
-3.5.9 Примеры цветов
----------------------------------
-
-\0\b[image src="../png/colors.png"\0\b]
-
-#LENUQ
-facez -1 -1 0 0.4 0.3 'L#': text -0.8 -0.9 'L' 'C:w'
-facez -0.6 -1 0 0.4 0.3 'E#': text -0.4 -0.9 'E' 'C:w'
-facez -0.2 -1 0 0.4 0.3 'N#': text 0 -0.9 'N' 'C:w'
-facez 0.2 -1 0 0.4 0.3 'U#': text 0.4 -0.9 'U' 'C:w'
-facez 0.6 -1 0 0.4 0.3 'Q#': text 0.8 -0.9 'Q' 'C:w'
-#lenuq
-facez -1 -0.7 0 0.4 0.3 'l#': text -0.8 -0.6 'l' 'C:k'
-facez -0.6 -0.7 0 0.4 0.3 'e#': text -0.4 -0.6 'e' 'C:k'
-facez -0.2 -0.7 0 0.4 0.3 'n#': text 0 -0.6 'n' 'C:k'
-facez 0.2 -0.7 0 0.4 0.3 'u#': text 0.4 -0.6 'u' 'C:k'
-facez 0.6 -0.7 0 0.4 0.3 'q#': text 0.8 -0.6 'q' 'C:k'
-#CMYkP
-facez -1 -0.4 0 0.4 0.3 'C#': text -0.8 -0.3 'C' 'C:w'
-facez -0.6 -0.4 0 0.4 0.3 'M#': text -0.4 -0.3 'M' 'C:w'
-facez -0.2 -0.4 0 0.4 0.3 'Y#': text 0 -0.3 'Y' 'C:w'
-facez 0.2 -0.4 0 0.4 0.3 'k#': text 0.4 -0.3 'k' 'C:w'
-facez 0.6 -0.4 0 0.4 0.3 'P#': text 0.8 -0.3 'P' 'C:w'
-#lenuq
-facez -1 -0.1 0 0.4 0.3 'c#': text -0.8 0 'c' 'C:k'
-facez -0.6 -0.1 0 0.4 0.3 'm#': text -0.4 0 'm' 'C:k'
-facez -0.2 -0.1 0 0.4 0.3 'y#': text 0 0 'y' 'C:k'
-facez 0.2 -0.1 0 0.4 0.3 'w#': text 0.4 0 'w' 'C:k'
-facez 0.6 -0.1 0 0.4 0.3 'p#': text 0.8 0 'p' 'C:k'
-#BGRHW
-facez -1 0.2 0 0.4 0.3 'B#': text -0.8 0.3 'B' 'C:k'
-facez -0.6 0.2 0 0.4 0.3 'G#': text -0.4 0.3 'G' 'C:k'
-facez -0.2 0.2 0 0.4 0.3 'R#': text 0 0.3 'R' 'C:k'
-facez 0.2 0.2 0 0.4 0.3 'H#': text 0.4 0.3 'H' 'C:k'
-facez 0.6 0.2 0 0.4 0.3 'W#': text 0.8 0.3 'W' 'C:k'
-#bgrhw
-facez -1 0.5 0 0.4 0.3 'b#': text -0.8 0.6 'b' 'C:w'
-facez -0.6 0.5 0 0.4 0.3 'g#': text -0.4 0.6 'g' 'C:w'
-facez -0.2 0.5 0 0.4 0.3 'r#': text 0 0.6 'r' 'C:w'
-facez 0.2 0.5 0 0.4 0.3 'h#': text 0.4 0.6 'h' 'C:w'
-facez 0.6 0.5 0 0.4 0.3 'w#': text 0.8 0.6 'w' 'C:w'
-#brighted
-facez -1 0.8 0 0.4 0.3 'r1#': text -0.8 0.9 'r1' 'C:k'
-facez -0.6 0.8 0 0.4 0.3 'r3#': text -0.4 0.9 'r3' 'C:k'
-facez -0.2 0.8 0 0.4 0.3 'r5#': text 0 0.9 'r5' 'C:k'
-facez 0.2 0.8 0 0.4 0.3 'r7#': text 0.4 0.9 'r7' 'C:k'
-facez 0.6 0.8 0 0.4 0.3 'r9#': text 0.8 0.9 'r9' 'C:k'
-
-\1f
-File: mgl_ru.info, Node: Color schemes sample, Next: Normal transparency, Prev: Colors sample, Up: Basic features
-
-3.5.10 Примеры цветовых схем
------------------------------------------------
-
-\0\b[image src="../png/color_schemes.png"\0\b]
-
-new a 256 2: fill a 'x'
-subplot 2 10 0 0.2:dens a 'kw'
-text -1.4 -0.3 'kw' '' -8
-subplot 2 10 1 0.2:dens a 'wk'
-text -1.4 -0.3 'wk' '' -8
-subplot 2 10 2 0.2:dens a 'kHCcw'
-text -1.4 -0.3 'kHCcw' '' -8
-subplot 2 10 3 0.2:dens a 'kBbcw'
-text -1.4 -0.3 'kBbcw' '' -8
-subplot 2 10 4 0.2:dens a 'kRryw'
-text -1.4 -0.3 'kRryw' '' -8
-subplot 2 10 5 0.2:dens a 'kGgew'
-text -1.4 -0.3 'kGgew' '' -8
-subplot 2 10 6 0.2:dens a 'BbwrR'
-text -1.4 -0.3 'BbwrR' '' -8
-subplot 2 10 7 0.2:dens a 'BbwgG'
-text -1.4 -0.3 'BbwgG' '' -8
-subplot 2 10 8 0.2:dens a 'GgwmM'
-text -1.4 -0.3 'GgwmM' '' -8
-subplot 2 10 9 0.2:dens a 'UuwqR'
-text -1.4 -0.3 'UuwqR' '' -8
-subplot 2 10 10 0.2:dens a 'QqwcC'
-text -1.4 -0.3 'QqwcC' '' -8
-subplot 2 10 11 0.2:dens a 'CcwyY'
-text -1.4 -0.3 'CcwyY' '' -8
-subplot 2 10 12 0.2:dens a 'bcwyr'
-text -1.4 -0.3 'bcwyr' '' -8
-subplot 2 10 13 0.2:dens a 'bwr'
-text -1.4 -0.3 'bwr' '' -8
-subplot 2 10 14 0.2:dens a 'BbcyrR'
-text -1.4 -0.3 'BbcyrR' '' -8
-subplot 2 10 15 0.2:dens a 'UbcyqR'
-text -1.4 -0.3 'UbcyqR' '' -8
-subplot 2 10 16 0.2:dens a 'BbcwyrR'
-text -1.4 -0.3 'BbcwyrR' '' -8
-subplot 2 10 17 0.2:dens a 'bcyr'
-text -1.4 -0.3 'bcyr' '' -8
-subplot 2 10 18 0.2:dens a 'BbcyrR|'
-text -1.4 -0.3 'BbcyrR|' '' -8
-subplot 2 10 19 0.2:dens a 'bgr'
-text -1.4 -0.3 'bgr' '' -8
-
-\1f
-File: mgl_ru.info, Node: Normal transparency, Next: Glass-like transparency, Prev: Color schemes sample, Up: Basic features
-
-3.5.11 Обычная прозрачность
-----------------------------------------------
-
-\0\b[image src="../png/type0.png"\0\b]
-
-alpha on: light on
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-
-transptype 0: clf
-subplot 2 2 0: rotate 40 60: surf a: box
-subplot 2 2 1: rotate 40 60: dens a: box
-subplot 2 2 2: rotate 40 60: cont a: box
-subplot 2 2 3: rotate 40 60: axial a: box
-
-\1f
-File: mgl_ru.info, Node: Glass-like transparency, Next: Lamp-like transparency, Prev: Normal transparency, Up: Basic features
-
-3.5.12 "Стеклянная" прозрачность
-------------------------------------------------------
-
-\0\b[image src="../png/type1.png"\0\b]
-
-alpha on: light on
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-
-transptype 1: clf
-subplot 2 2 0: rotate 40 60: surf a: box
-subplot 2 2 1: rotate 40 60: dens a: box
-subplot 2 2 2: rotate 40 60: cont a: box
-subplot 2 2 3: rotate 40 60: axial a: box
-
-\1f
-File: mgl_ru.info, Node: Lamp-like transparency, Prev: Glass-like transparency, Up: Basic features
-
-3.5.13 "Ламповая" прозрачность
---------------------------------------------------
-
-\0\b[image src="../png/type2.png"\0\b]
-
-alpha on: light on
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-
-transptype 2: clf
-subplot 2 2 0: rotate 40 60: surf a: box
-subplot 2 2 1: rotate 40 60: dens a: box
-subplot 2 2 2: rotate 40 60: cont a: box
-subplot 2 2 3: rotate 40 60: axial a: box
-
-\1f
-File: mgl_ru.info, Node: Additional features, Next: Advanced features, Prev: Basic features, Up: Samples
-
-3.6 Дополнительные возможности
-=======================================================
-
-* Menu:
-
-* Legend sample::
-* Adding mesh sample::
-* Surf & Cont sample::
-* Flow & Dens sample::
-* Several light sample::
-* Mirrored surface sample::
-* Cont with labels sample::
-* Ternary plot sample::
-* Coloring by coordinates sample::
-* Drops sample::
-* Molecules drawing sample::
-
-\1f
-File: mgl_ru.info, Node: Legend sample, Next: Adding mesh sample, Up: Additional features
-
-3.6.1 Legend - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/legend.png"\0\b]
-
-new f 50 3
-modify f 'sin(2*pi*x*x)'
-modify f 'sin(2*pi*x)' 1
-modify f 'sin(2*pi*sqrt(x))' 2
-axis 0 -1 1 1
-box
-plot f
-axis
-addlegend 'sin(\pi {x^2})' 'b'
-addlegend 'sin(\pi x)' 'g*'
-addlegend 'sin(\pi \sqrt{\a x})' 'r+'
-legend
-
-\1f
-File: mgl_ru.info, Node: Adding mesh sample, Next: Surf & Cont sample, Prev: Legend sample, Up: Additional features
-
-3.6.2 Добавляем сетку
------------------------------------
-
-\0\b[image src="../png/samplea.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-alpha on
-light on
-subplot 2 2 0
-rotate 40 60
-surf a 'BbcyrR#'
-box
-subplot 2 2 1
-rotate 40 60
-dens a 'BbcyrR#'
-box
-subplot 2 2 2
-rotate 40 60
-cont a 'BbcyrR#'
-box
-subplot 2 2 3
-rotate 40 60
-axial a 'BbcyrR#'
-box
-
-\1f
-File: mgl_ru.info, Node: Surf & Cont sample, Next: Flow & Dens sample, Prev: Adding mesh sample, Up: Additional features
-
-3.6.3 Surf & Cont - пример использования
------------------------------------------------------------
-
-\0\b[image src="../png/surf_cont_y.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-box
-surf a
-cont a 'y'
-
-\1f
-File: mgl_ru.info, Node: Flow & Dens sample, Next: Several light sample, Prev: Surf & Cont sample, Up: Additional features
-
-3.6.4 Flow & Dens - пример использования
------------------------------------------------------------
-
-\0\b[image src="../png/flow_dens.png"\0\b]
-
-new a 50 40
-new b 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-copy d a
-modify d 'sqrt(v^2+w^2)' a b
-box
-flow a b 'br'
-dens d 'BbcyrR'
-
-\1f
-File: mgl_ru.info, Node: Several light sample, Next: Mirrored surface sample, Prev: Flow & Dens sample, Up: Additional features
-
-3.6.5 Несколько источников света
---------------------------------------------------------
-
-\0\b[image src="../png/several_light.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-rotate 40 60
-light on
-light 1 0 1 0 'c'
-light 2 1 0 0 'y'
-light 3 0 -1 0 'm'
-box
-surf a 'h'
-
-\1f
-File: mgl_ru.info, Node: Mirrored surface sample, Next: Cont with labels sample, Prev: Several light sample, Up: Additional features
-
-3.6.6 Отражение поверхности
------------------------------------------------
-
-\0\b[image src="../png/mirror.png"\0\b]
-
-new a 30 40
-modify a 'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)'
-rotate 40 60
-light on
-surf a 'r'; yrange 0 1
-surf a 'b'; yrange 0 -1
-box
- or
-new a 30 40
-var x 30 -1 1
-var y1 40 0 1
-var y2 40 0 -1
-modify a 'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)'
-rotate 40 60
-light on
-surf x y1 a 'r'
-surf x y2 a 'b'
-box
-
-\1f
-File: mgl_ru.info, Node: Cont with labels sample, Next: Ternary plot sample, Prev: Mirrored surface sample, Up: Additional features
-
-3.6.7 Cont и подписи - пример использования
-----------------------------------------------------------------------
-
-\0\b[image src="../png/contt.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-box
-cont a 'BbcyrRt'
-
-\1f
-File: mgl_ru.info, Node: Ternary plot sample, Next: Coloring by coordinates sample, Prev: Cont with labels sample, Up: Additional features
-
-3.6.8 Ternary plot - пример использования
-------------------------------------------------------------
-
-\0\b[image src="../png/ternary.png"\0\b]
-
-new rx 10
-new ry 10
-new x 50
-new y 50
-new a 20 30
-modify a '4*x*y'
-modify x '0.25*(1+cos(2*pi*x))'
-modify y '0.25*(1+sin(2*pi*x))'
-modify rx 'rnd'
-modify ry 'rnd*(1-v)' rx
-text -0.8 1.3 'Ternary plot (x+y+t=1)'
-ternary on
-plot x y 'r2'
-plot rx ry 'q^ '
-cont a
-line 0.5 0 0 0.75 'g2'
-axis
-grid 'xyz' 'B;'
-xlabel 'x comp.'
-ylabel 'y comp.'
-tlabel 't comp.'
-
-\1f
-File: mgl_ru.info, Node: Coloring by coordinates sample, Next: Drops sample, Prev: Ternary plot sample, Up: Additional features
-
-3.6.9 Окрашивание по положению грани
----------------------------------------------------------------
-
-\0\b[image src="../png/surf3_rgbd.png"\0\b]
-
-new a 60 50 40
-modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
-rotate 40 60
-box
-surf3 a 'bgrd'
-
-\1f
-File: mgl_ru.info, Node: Drops sample, Next: Molecules drawing sample, Prev: Coloring by coordinates sample, Up: Additional features
-
-3.6.10 Drops - пример использования
-------------------------------------------------------
-
-\0\b[image src="../png/drops.png"\0\b]
-
-light on
-text -1 1.2 'sh=0'
-drop -1 0 0 1 0.5 'r' 0
-text -0.33 1.2 'sh=0.33'
-drop -0.33 0 0 1 0.5 'r' 0.33
-text 0.33 1.2 'sh=0.67'
-drop 0.33 0 0 1 0.5 'r' 0.67
-text 1 1.2 'sh=1'
-drop 1 0 0 1 0.5 'r' 1
-ball -1 0 1 'k'
-ball -0.33 0 1 'k'
-ball 0.33 0 1 'k'
-ball 1 0 1 'k'
-line -1 0 1 1 0 1 'b'
-new h 100
-modify h '0.25*(1+x)^2'
-plot h 'k|'
-text -1 0.6 'h\sim(1+sh)^2' 'rL'
-
-\1f
-File: mgl_ru.info, Node: Molecules drawing sample, Prev: Drops sample, Up: Additional features
-
-3.6.11 Рисование молекул
-----------------------------------------
-
-\0\b[image src="../png/molecule.png"\0\b]
-
-alpha on
-light on
-subplot 2 2 0
-text 0 1.2 'Methane, CH_4' '' -3
-rotate 60 120
-sphere 0 0 0 0.25 'k'
-drop 0 0 0 0 0 1 0.35 'h' 1 2
-sphere 0 0 0.7 0.25 'g'
-drop 0 0 0 -0.94 0 -0.33 0.35 'h' 1 2
-sphere -0.66 0 -0.23 0.25 'g'
-drop 0 0 0 0.47 0.82 -0.33 0.35 'h' 1 2
-sphere 0.33 0.57 -0.23 0.25 'g'
-drop 0 0 0 0.47 -0.82 -0.33 0.35 'h' 1 2
-sphere 0.33 -0.57 -0.23 0.25 'g'
-subplot 2 2 1
-text 0 1.2 'Water, H{_2}O' '' -3
-rotate 60 100
-sphere 0 0 0 0.25 'r'
-drop 0 0 0 0.3 0.5 0 0.3 'm' 1 2
-sphere 0.3 0.5 0 0.25 'g'
-drop 0 0 0 0.3 -0.5 0 0.3 'm' 1 2
-sphere 0.3 -0.5 0 0.25 'g'
-subplot 2 2 2
-text 0 1.2 'Oxygen, O_2' '' -3
-rotate 60 120
-drop 0 0.5 0 0 -0.3 0 0.3 'm' 1 2
-sphere 0 0.5 0 0.25 'r'
-drop 0 -0.5 0 0 0.3 0 0.3 'm' 1 2
-sphere 0 -0.5 0 0.25 'r'
-subplot 2 2 3
-text 0 1.2 0 'Ammonia, NH_3' '' -3
-rotate 60 120
-sphere 0 0 0 0.25 'b'
-drop 0 0 0 0.33 0.57 0 0.32 'n' 1 2
-sphere 0.33 0.57 0 0.25 'g'
-drop 0 0 0 0.33 -0.57 0 0.32 'n' 1 2
-sphere 0.33 -0.57 0 0.25 'g'
-drop 0 0 0 -0.65 0 0 0.32 'n' 1 2
-sphere -0.65 0 0 0.25 'g'
-
-\1f
-File: mgl_ru.info, Node: Advanced features, Prev: Additional features, Up: Samples
-
-3.7 "Продвинутые" возможности
-===================================================
-
-* Menu:
-
-* Curvelinear coorinates sample::
-* 2-axes sample::
-* Semi-log sample::
-* Log-log sample::
-* Fitting sample::
-* Envelop sample::
-* Sew sample::
-* STFA sample::
-* PDE sample::
-* Beam tracing sample::
-* Parser sample::
-* Manual ticks sample::
-* ColumnPlot sample::
-* StickPlot sample::
-* Stereo image sample::
-
-\1f
-File: mgl_ru.info, Node: Curvelinear coorinates sample, Next: 2-axes sample, Up: Advanced features
-
-3.7.1 Криволинейные координаты
------------------------------------------------------
-
-\0\b[image src="../png/sample3.png"\0\b]
-
-origin -1 1 -1
-subplot 2 2 0
-rotate 60 40
-line -1 0.5 0 1 0.5 0 'r2'
-axis
-grid
-text 0 1.3 1 'Cartesian'
-subplot 2 2 1
-rotate 60 40
-axis 'y*sin(pi*x)' 'y*cos(pi*x)' ''
-line -1 0.5 0 1 0.5 0 'r2'
-axis
-grid
-text 0 1.3 1 'Cylindrical'
-subplot 2 2 2
-rotate 60 40
-axis '2*y*x' 'y*y - x*x' ''
-line -1 0.5 0 1 0.5 0 'r2'
-axis
-grid
-text 0 1.3 1 'Parabolic'
-subplot 2 2 3
-rotate 60 40
-axis 'y*sin(pi*x)' 'y*cos(pi*x)' 'x+z'
-line -1 0.5 0 1 0.5 0 'r2'
-axis
-grid
-text 0 1.3 1 'Spiral'
-axis '' '' '' # set to default Cartesian
-
-\1f
-File: mgl_ru.info, Node: 2-axes sample, Next: Semi-log sample, Prev: Curvelinear coorinates sample, Up: Advanced features
-
-3.7.2 Несколько осей на одном графике
-----------------------------------------------------------------
-
-\0\b[image src="../png/2_axis.png"\0\b]
-
-new y1 50
-new y2 50
-modify y1 '0.3*sin(2*pi*x)'
-modify y2 '0.5+0.3*cos(2*pi*x)'
-axis -1 -1 -1 1 1 1
-origin -1 -1 -1
-axis
-ylabel 'axis 1' 0
-plot y1 'b'
-axis 0 0 0 1 1 1
-origin 1 1 1
-axis
-ylabel 'axis 2' 0
-stem y2 'r'
-
-\1f
-File: mgl_ru.info, Node: Semi-log sample, Next: Log-log sample, Prev: 2-axes sample, Up: Advanced features
-
-3.7.3 Semi-log - пример использования
---------------------------------------------------------
-
-\0\b[image src="../png/semilog.png"\0\b]
-
-new x 2000
-new y 2000
-modify x '0.01/(x+10^(-5))'
-modify y 'sin(1/v)' x
-xrange 0.01 1000
-origin 0.01 -1 0
-xtick 0
-axis 'lg(x)' '' ''
-plot x y 'b2'
-axis
-grid 'xy' 'g'
-xlabel 'x' 0
-ylabel 'y = sin 1/x' 0
-box
-
-\1f
-File: mgl_ru.info, Node: Log-log sample, Next: Fitting sample, Prev: Semi-log sample, Up: Advanced features
-
-3.7.4 Log-log - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/loglog.png"\0\b]
-
-new x 100
-new y 100
-modify x 'pow(10,6*x-3)'
-modify y 'sqrt(1+v^2)' x
-axis 0.001 0.1 1000 1000
-xtick 0
-ytick 0
-axis 'lg(x)' 'lg(y)' ''
-plot x y 'b2'
-axis
-grid 'xy' 'g;'
-xlabel 'x' 0
-ylabel 'y=\sqrt{1+x^2}' 0
-box
-
-\1f
-File: mgl_ru.info, Node: Fitting sample, Next: Envelop sample, Prev: Log-log sample, Up: Advanced features
-
-3.7.5 Fitting - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/fit.png"\0\b]
-
-new rnd 100
-fill rnd '0.4*rnd+0.1+sin(2*pi*x)'
-new in 100
-fill in '0.3+sin(2*pi*x)'
-yrange -2 2
-plot rnd '. '
-box
-list ini 1 1 3
-fit res rnd 'a+b*sin(c*x)' 'abc' ini
-plot res 'r'
-plot in 'b'
-text -1 -1.3 'fitted:' 'L:r' -1
-putsfit 0 -1.8 'y = ' 'C:r'
-text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'C:b' -1
-
-\1f
-File: mgl_ru.info, Node: Envelop sample, Next: Sew sample, Prev: Fitting sample, Up: Advanced features
-
-3.7.6 Envelop - пример использования
--------------------------------------------------------
-
-\0\b[image src="../png/envelop.png"\0\b]
-
-new a 1000
-fill a 'exp(-8*x^2)*sin(10*pi*x)'
-plot a 'b'
-envelop a
-plot a 'r'
-axis
-
-\1f
-File: mgl_ru.info, Node: Sew sample, Next: STFA sample, Prev: Envelop sample, Up: Advanced features
-
-3.7.7 Sew - пример использования
----------------------------------------------------
-
-\0\b[image src="../png/sew.png"\0\b]
-
-new a 100 100
-modify a 'mod((y^2-(1-x)^2)/2,0.1)'
-rotate 40 60
-light on
-alpha on
-surf a 'b'
-sew a 'xy' 0.1
-surf a 'r'
-box
-
-\1f
-File: mgl_ru.info, Node: STFA sample, Next: PDE sample, Prev: Sew sample, Up: Advanced features
-
-3.7.8 STFA - пример использования
-----------------------------------------------------
-
-\0\b[image src="../png/stfa.png"\0\b]
-
-new a 2000
-new b 2000
-fill a 'cos(50*pi*x)*(x<-.5)+cos(100*pi*x)*(x<0)*(x>-.5)+
- cos(200*pi*x)*(x<.5)*(x>0)+cos(400*pi*x)*(x>.5)'
-subplot 1 2 0
-plot a
-axis
-xlabel '\i t'
-subplot 1 2 1
-stfa a b 64 ''
-axis
-ylabel '\omega' 0
-xlabel '\i t'
-
-\1f
-File: mgl_ru.info, Node: PDE sample, Next: Beam tracing sample, Prev: STFA sample, Up: Advanced features
-
-3.7.9 PDE - пример использования
----------------------------------------------------
-
-\0\b[image src="../png/pde.png"\0\b]
-
-axis
-xlabel '\i x'
-ylabel '\i z'
-new re 128
-new im 128
-fill re 'exp(-48*(x+0.7)^2)'
-pde a 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)' re im 0.01 30
-transpose a
-crange 0 1
-dens a 'wyrRk'
-fplot '-x' 'k|'
-text 0 0.85 'absorption: (x+z)/2 for x+z>0' '' -1
-title 'Equation: ik_0\partial_zu + \Delta u + x\cdot u + i \frac{x+z}{2}\cdot u = 0' 'iC' -1.5
-
-\1f
-File: mgl_ru.info, Node: Beam tracing sample, Next: Parser sample, Prev: PDE sample, Up: Advanced features
-
-3.7.10 Beam tracing - пример использования
--------------------------------------------------------------
-
-\0\b[image src="../png/qo2d.png"\0\b]
-
-define $1 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
-ray r $1 -0.7 -1 0 0 0.5 0 0.02 2
-plot r(0) r(1) 'k'
-axis
-xlabel '\i x'
-ylabel '\i z'
-new re 128
-new im 128
-new xx
-new yy
-fill re 'exp(-48*x^2)'
-qo2d a $1 re im r 1 30 xx yy
-crange 0 1
-dens xx yy a 'wyrRk'
-fplot '-x' 'k|'
-text -0.8 0.85 'absorption: (x+y)/2 for x+y>0' 'L' -1
-text 0.5 -0.05 'central ray' 'L' -1
-title 'Beam and ray tracing' 'C' -1.5
-
-\1f
-File: mgl_ru.info, Node: Parser sample, Next: Manual ticks sample, Prev: Beam tracing sample, Up: Advanced features
-
-3.7.11 Parser - пример использования
--------------------------------------------------------
-
-\1f
-File: mgl_ru.info, Node: Manual ticks sample, Next: ColumnPlot sample, Prev: Parser sample, Up: Advanced features
-
-3.7.12 Особые метки по осям
---------------------------------------------
-
-\0\b[image src="../png/tval.png"\0\b]
-
-axis -pi 0 pi 2
-xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' 0.886 'x^*' 1.571 '\pi/2' pi '\pi'
-axis
-grid
-fplot '2*cos(x^2)^2' 'r2' nan 300
-
-\1f
-File: mgl_ru.info, Node: ColumnPlot sample, Next: StickPlot sample, Prev: Manual ticks sample, Up: Advanced features
-
-3.7.13 ColumnPlot - пример использования
------------------------------------------------------------
-
-\0\b[image src="../png/column.png"\0\b]
-
-for $1 0 3
-columnplot 4 $1
-box
-text -0.5 0.5 'Plot $1 of 4'
-fplot 'sin(pi*x+pi*$1/2)'
-next
-
-\1f
-File: mgl_ru.info, Node: StickPlot sample, Prev: ColumnPlot sample, Up: Advanced features
-
-3.7.14 StickPlot - пример использования
-----------------------------------------------------------
-
-\0\b[image src="../png/stick.png"\0\b]
-
-ranges -1 1 -1 1 0 1:light on
-stickplot 3 0 40 30 : axis 'xyz_'
-fsurf 'exp(-10*y^2-6*x^2)'
-text 0.2 0 1.2 'z=0' '' -2
-stickplot 3 1 40 30 : axis 'xy_'
-fsurf 'exp(-10*y^2/2-6*x^2)/sqrt(2)'
-text 0.2 0 1.2 'z=1' '' -2
-stickplot 3 2 40 30 : axis 'xy_'
-fsurf 'exp(-10*y^2/5-6*x^2)/sqrt(5)'
-text 0.2 0 1.2 'z=2' '' -2
-xlabel '\tau' 0 : ylabel '\rho'
-
-\1f
-File: mgl_ru.info, Node: Stereo image sample, Prev: StickPlot sample, Up: Advanced features
-
-3.7.15 Пример стерео изображения
--------------------------------------------------------
-
-\0\b[image src="../png/stereo.png"\0\b]
-
-new a 50 40
-modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
-light on
-subplot 2 1 0
-rotate 40 60+3
-box:surf a
-subplot 2 1 1
-rotate 40 60-3
-box:surf a
-
-
-\1f
-Local Variables:
-coding: utf-8
-End: