From 79dcec08b5e58c93ecc32fba69bc8e7b45e33531 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Sun, 12 Dec 2010 21:14:57 +0200 Subject: [PATCH] Correct debian/copyright file --- debian/changelog | 3 +- debian/copyright | 24 +- debian/patches/debian-changes-1.11.0.1-1 | 15251 --------------------- 3 files changed, 22 insertions(+), 15256 deletions(-) delete mode 100644 debian/patches/debian-changes-1.11.0.1-1 diff --git a/debian/changelog b/debian/changelog index 20f9bac..9f4a9a3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ mathgl (1.11.0.1-1) experimental; urgency=low + * Correct debian/copyright file. * Create proper patches for the changes in the source tree. * Add new package for Russian documentation. * New upstream release (Closes: #603004). @@ -7,7 +8,7 @@ mathgl (1.11.0.1-1) experimental; urgency=low * Create symbols files for libraries. * Register documentation to doc-base. - -- Dimitrios Eftaxiopoulos Sat, 27 Nov 2010 18:50:00 +0200 + -- Dimitrios Eftaxiopoulos Sun, 12 Dec 2010 19:13:00 +0200 mathgl (1.10.2.1-2) unstable; urgency=low diff --git a/debian/copyright b/debian/copyright index 28364b3..6ed5635 100644 --- a/debian/copyright +++ b/debian/copyright @@ -7,7 +7,7 @@ Copyright: (C) 2008 Dmitry Kulagin (C) 2008 Michail Vidiassov (C) 2007-2008 Sergey Plis -License: LGPL +License: GPL-2+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation @@ -17,8 +17,24 @@ License: LGPL or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +Files: texinfo/* +Copyright: (C) 2008 Alexey Balakin +Licanse: GFDL-1.2+ + 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.'' + Files: debian/* -Copyright: (C) 2008 Bradley Smith +Copyright: + (C) 2008 Bradley Smith + (C) 2010 Dimitrios Eftaxiopoulos License: GPL-2+. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +46,8 @@ License: GPL-2+. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -On Debian GNU/Linux systems, the complete text of the GNU Lesser General -Public License can be found in `/usr/share/common-licenses/LGPL-2'. +On Debian GNU/Linux systems, the complete text of the GNU Free Documentation +License can be found in `/usr/share/common-licenses/GFDL-1.2'. On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. diff --git a/debian/patches/debian-changes-1.11.0.1-1 b/debian/patches/debian-changes-1.11.0.1-1 deleted file mode 100644 index e2e5d61..0000000 --- a/debian/patches/debian-changes-1.11.0.1-1 +++ /dev/null @@ -1,15251 +0,0 @@ -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 -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: , -Bug: -Bug-Debian: http://bugs.debian.org/ -Bug-Ubuntu: https://launchpad.net/bugs/ -Forwarded: -Reviewed-By: -Last-Update: - ---- 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: --# --# ='`$ECHO "X$" | $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 ." -- --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 --#endif -- --#include -- --#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.so -- # instead of lib.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 &1 /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 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 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) - библиотеки классов и -+функций для построения научной графики. Пожалуйста сообщайте о любых -+ошибках в этом руководстве на . -+ -+ 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 -+ -+ -+File: mgl_ru.info, Node: Top, Next: MGL interface, Up: (dir) -+ -+Язык MGL -+************ -+ -+Это документация для языка MGL (версии 1.11). Пожалуйста сообщайте о -+любых ошибках в этом руководстве на . -+Дополнительную информацию о 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:: -+ -+ -+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:: -+ -+ -+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:: -+ -+ -+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()'. -+ -+ -+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' - косой крест в квадрате, -+`#.' - точка в окружности. Если в строке присутствует символ `#', то -+используются символы с заполнением. -+ -+[image src="../png/sample5.png"] -+ -+Стили линий и маркеров. -+ -+ На конце и в начале линии можно выводить специальный символ -+(стрелку), если в строке указать один из символов: `A' - стрелка -+наружу, `V' - стрелка внутрь, `I' - поперечная черта, `K' - стрелка с -+чертой, `T' - треугольник, `S' - квадрат, `D' - ромб, `O' - круг, `_' - -+нет стрелки (по умолчанию). При этом действует следующее правило: -+первый символ определяет стрелку на конце линии, второй символ - -+стрелку в начале линии. Например, `r-A' - красная сплошная линия со -+стрелкой на конце, `b|AI' - синий пунктир со стрелкой на конце и чертой -+вначале, `_O' - линия с текущим стилем и кружком вначале. Эти стили -+действуют и при построении графиков (например, *note 1D plotting::). -+ -+[image src="../png/sampled.png"] -+ -+Стили стрелок. -+ -+ -+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'. -+ -+[image src="../png/colors.png"] -+ -+Цвета и их идентификаторы. -+ -+ При определении цвета по _амплитуде_ (наиболее часто используется) -+окончательный цвет определяется путем линейной интерполяции массива -+цветов. Массив цветов формируется из цветов, указанных в строке -+спецификации. Аргумент - амплитуда, нормированная между CMIN - CMAX -+(*note Axis settings::). Например, строка из 4 символов `bcyr' -+соответствует изменению цвета от синего (минимальное значение) через -+голубой и желтый (промежуточные значения) к красному (максимальное -+значение). Строка `kw' соответствует изменению цвета от черного -+(минимальное значение) к белому (максимальное значение). Строка из -+одного символа (например, `g') соответствует однотонному цвету (в -+данному случае зеленому). -+ -+ Есть несколько полезных цветовых схем. Строка `kw' дает обычную -+серую (черно-белую) схему, когда большие значения светлее. Строка `wk' -+представляет обратную серую схему, когда большие значения темнее. -+Строки `kRryw', `kGgw', `kBbcw' представляют собой хорошо известные -+схемы _hot_, _summer_ и _winter_. Строки `BbwrR' и `bBkRr' позволяют -+рисовать двухцветные фигуры на белом или черном фоне, когда -+отрицательные значения показаны синим цветом, а положительные - -+красным. Строка `BbcyrR' дает цветовую схему, близкую к хорошо -+известной схеме _jet_. -+ -+[image src="../png/color_schemes.png"] -+ -+Наиболее популярные цветовые схемы. -+ -+ При определении цвета по _положению точки в пространстве_ -+окончательный цвет определяется по формуле c=x*c[1] + y*c[2] + z*c[3]. -+Здесь c[1], c[2], c[3] - первые три цвета в цветовом массиве; x, y, z - -+координаты точки, нормированные на MINxMAX. Такой тип определения цвета -+полезен, например, при построении поверхностей уровня, когда цвет дает -+представление о положении точки в пространстве. -+ -+ -+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()' -+позволяют задавать его в более "привычных" единицах. -+ -+ -+File: mgl_ru.info, Node: Textual formulas, Prev: Font styles, Up: General concepts -+ -+1.1.5 Текстовые формулы -+--------------------------------------- -+ -+MathGL имеет быстрый парсер текстовых формул , понимающий большое число -+функций и операций. Базовые операции: `+' - сложение, `-' - вычитание, -+`*' - умножение, `/' - деление, `^' - возведение в целосичленную -+степень. Также есть логические операции: `<' - истина если if x' -+- истина если 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’(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. -+ -+ -+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 :: -+ -+ -+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::. -+ -+ -+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]. -+ -+ -+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::, для -+ примеров кода и графика. -+ -+ -+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). -+ -+ -+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' для перехода в масштаб по умолчанию. -+ -+ -+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::, для примеров кода и графика. -+ -+ -+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'. -+ -+ -+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 в виде наиболее удобном для -+ человека. -+ -+ -+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') перспектива отключена. -+ -+ -+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' -+ Изменяет размер картинки в пикселях. Функция должна вызываться -+ *перед* любыми функциями построения потому что полностью очищает -+ содержимое рисунка. В некоторых программах исполнение этой команды -+ может запрещено. -+ -+ -+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'). Грань будет нарисована даже если часть ее лежит -+ вне диапазона осей координат. -+ -+ -+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. -+ -+ -+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::. -+ -+ -+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 -+ маркер. -+ -+ -+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' закрашивается только область y12. Размеры массивов по 2-му -+ индексу TR, G1, G2 и размер по 3-му индексу массива ADAT должны -+ быть одинаковы. См. также *note surf3::. -+ -+ -+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::, -+ для примеров кода и графика. -+ -+ -+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::, для примеров кода и графика. -+ -+ -+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::. -+ -+ -+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::. -+ -+ -+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 как информацию (предупреждение). -+ -+ -+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 выполнено. -+ -+ -+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' -+ Обрезает границы данных при IN2 (при 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 и -+ заполняет их нулями. -+ -+ -+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 определяются автоматически как -+ минимальное и максимальное значение данных. -+ -+ -+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}. -+ -+ -+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. -+ -+ -+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' -+ Вычитает число из каждого элемента. -+ -+ -+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 -+ Останавливает выполнение скрипта. -+ -+ -+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:: -+ -+ -+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 соответственно или элементов массива. -+ -+ -+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 -+''' в конце скрипта. -+ -+ -+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:: -+ -+ -+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. -+ -+ -+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:: -+ -+ -+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. -+ -+[image src="../png/sample1.png"] -+ -+Example of several subplots on the single picture. -+ -+ -+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. -+ -+[image src="../png/sample2.png"] -+ -+Example of setting up axis range and axis ticks. -+ -+ -+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' -+ -+[image src="../png/sample3.png"] -+ -+Example of curvilinear coordinates -+ -+ -+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' -+ -+[image src="../png/sample4.png"] -+ -+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 -+ -+[image src="../png/samplee.png"] -+ -+Example of TeX formula parsing -+ -+ -+File: mgl_ru.info, Node: Data handling, Next: Data plotting, Prev: Advanced usage, Up: Examples -+ -+2.3 Data handling -+================= -+ -+* Menu: -+ -+* Array creation:: -+* Data changing:: -+ -+ -+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. -+ -+ -+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' -+ -+[image src="../png/sample6.png"] -+ -+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 -+ -+[image src="../png/sample7.png"] -+ -+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. -+ -+ -+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:: -+ -+ -+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 -+ -+[image src="../png/sample8.png"] -+ -+Example of 1D data plot -+ -+ -+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. -+ -+[image src="../png/sample9.png"] -+ -+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 -+ -+[image src="../png/samplea.png"] -+ -+Example of 2D data plot with color scheme contained `#' symbol -+ -+ -+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 -+ -+[image src="../png/sampleb.png"] -+ -+Example of Gaussian beam diffraction (3D data) -+ -+ -+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. -+[image src="../png/type0.png"] -+ -+Example of `TranspType=0'. -+ -+[image src="../png/type1.png"] -+ -+Example of `TranspType=1'. -+ -+[image src="../png/type2.png"] -+ -+Example of `TranspType=2'. -+ -+ -+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:: -+ -+ -+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. -+ -+ -+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. -+ -+ -+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. -+ -+ -+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 -+ -+ -+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? -+ -+ -+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. -+ -+ -+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::). -+ -+ -+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". -+ -+ -+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 -+:). -+ -+ -+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::. -+ -+ -+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. -+ -+ -+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' -+ -+ -+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 -+ -+ -+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:: -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: Plot sample, Next: Radar sample, Up: 1D plotting samples -+ -+3.1.1 Plot - пример использования -+---------------------------------------------------- -+ -+[image src="../png/plot.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Radar sample, Next: Tens sample, Prev: Plot sample, Up: 1D plotting samples -+ -+3.1.2 Radar - пример использования -+----------------------------------------------------- -+ -+[image src="../png/radar.png"] -+ -+new y 10 3 -+modify y '0.4*sin(pi*(2*x+y/2))+0.1*rnd' -+radar y '#' -+ -+ -+File: mgl_ru.info, Node: Tens sample, Next: Area sample, Prev: Radar sample, Up: 1D plotting samples -+ -+3.1.3 Tens - пример использования -+---------------------------------------------------- -+ -+[image src="../png/tens.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Area sample, Next: Area gradient sample, Prev: Tens sample, Up: 1D plotting samples -+ -+3.1.4 Area - пример использования -+---------------------------------------------------- -+ -+[image src="../png/area.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Area gradient sample, Next: Bars sample, Prev: Tens sample, Up: 1D plotting samples -+ -+3.1.5 Area с градиентной заливкой - пример использования -+----------------------------------------------------------------------------------------------- -+ -+[image src="../png/area_2.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Bars sample, Next: Bars 2 colors sample, Prev: Area gradient sample, Up: 1D plotting samples -+ -+3.1.6 Bars - пример использования -+---------------------------------------------------- -+ -+[image src="../png/bars.png"] -+ -+new y 10 3 -+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd' -+origin 0 0 -+box -+bars y -+ -+ -+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 цвета) - пример использования -+------------------------------------------------------------------- -+ -+[image src="../png/bars_2.png"] -+ -+new y 10 3 -+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd' -+origin 0 0 -+box -+bars y 'cbgGyr' -+ -+ -+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 (один над другим) - пример использования -+----------------------------------------------------------------------------------- -+ -+[image src="../png/bars_a.png"] -+ -+new y 10 3 -+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd' -+origin 0 0 -+box -+bars y 'a' -+ -+ -+File: mgl_ru.info, Node: Bars fall sample, Next: Bars above sample, Prev: Bars above sample, Up: 1D plotting samples -+ -+3.1.9 Bars "водопад" - пример использования -+--------------------------------------------------------------------- -+ -+[image src="../png/bars_f.png"] -+ -+new y 10 3 -+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd' -+origin 0 0 -+box -+bars y 'f' -+ -+ -+File: mgl_ru.info, Node: Barh sample, Next: Step sample, Prev: Bars fall sample, Up: 1D plotting samples -+ -+3.1.10 Barh - пример использования -+----------------------------------------------------- -+ -+[image src="../png/barh.png"] -+ -+new y 10 3 -+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd' -+origin 0 0 -+box -+barh y -+ -+ -+File: mgl_ru.info, Node: Step sample, Next: Stem sample, Prev: Barh sample, Up: 1D plotting samples -+ -+3.1.11 Step - пример использования -+----------------------------------------------------- -+ -+[image src="../png/step.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Stem sample, Next: Region sample, Prev: Step sample, Up: 1D plotting samples -+ -+3.1.12 Stem - пример использования -+----------------------------------------------------- -+ -+[image src="../png/stem.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Region sample, Next: Region gradient sample, Prev: Stem sample, Up: 1D plotting samples -+ -+3.1.13 Region - пример использования -+------------------------------------------------------- -+ -+[image src="../png/region.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Region gradient sample, Next: Error sample, Prev: Region sample, Up: 1D plotting samples -+ -+3.1.14 Region с градиентной заливкой - пример использования -+-------------------------------------------------------------------------------------------------- -+ -+[image src="../png/region_2.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Error sample, Next: BoxPlot sample, Prev: Region gradient sample, Up: 1D plotting samples -+ -+3.1.15 Error - пример использования -+------------------------------------------------------ -+ -+[image src="../png/error.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: BoxPlot sample, Next: Mark sample, Prev: Error sample, Up: 1D plotting samples -+ -+3.1.16 BoxPlot - пример использования -+-------------------------------------------------------- -+ -+[image src="../png/boxplot.png"] -+ -+new a 10 7 -+modify a '(2*rnd-1)^3/2' -+box -+boxplot a -+plot a ' ko' -+ -+ -+File: mgl_ru.info, Node: Mark sample, Next: TextMark sample, Prev: BoxPlot sample, Up: 1D plotting samples -+ -+3.1.17 Mark - пример использования -+----------------------------------------------------- -+ -+[image src="../png/mark.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: TextMark sample, Next: Tube sample, Prev: Mark sample, Up: 1D plotting samples -+ -+3.1.18 TextMark - пример использования -+--------------------------------------------------------- -+ -+[image src="../png/textmark.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Tube sample, Next: Text sample, Prev: TextMark sample, Up: 1D plotting samples -+ -+3.1.19 Tube - пример использования -+----------------------------------------------------- -+ -+[image src="../png/tube.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Text sample, Next: Torus sample, Prev: Tube sample, Up: 1D plotting samples -+ -+3.1.20 Text - пример использования -+----------------------------------------------------- -+ -+[image src="../png/text.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Torus sample, Next: Chart sample, Prev: Text sample, Up: 1D plotting samples -+ -+3.1.21 Torus - пример использования -+------------------------------------------------------ -+ -+[image src="../png/torus.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Chart sample, Next: Pie chart sample, Prev: Torus sample, Up: 1D plotting samples -+ -+3.1.22 Chart - пример использования -+------------------------------------------------------ -+ -+[image src="../png/chart.png"] -+ -+new ch 7 2 -+modify ch 'rnd+0.1' -+rotate 40 60 -+light on -+box -+chart ch -+ -+ -+File: mgl_ru.info, Node: Pie chart sample, Next: Ring chart sample, Prev: Chart sample, Up: 1D plotting samples -+ -+3.1.23 Pie chart - пример использования -+---------------------------------------------------------- -+ -+[image src="../png/pie_chart.png"] -+ -+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#' -+ -+ -+File: mgl_ru.info, Node: Ring chart sample, Prev: Pie chart sample, Up: 1D plotting samples -+ -+3.1.24 Ring chart - пример использования -+----------------------------------------------------------- -+ -+[image src="../png/ring_chart.png"] -+ -+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#' -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: Surf sample, Next: Transparent surface sample, Up: 2D plotting samples -+ -+3.2.1 Surf - пример использования -+---------------------------------------------------- -+ -+[image src="../png/surf.png"] -+ -+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 -+ -+ -+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 - пример использования -+------------------------------------------------------------------- -+ -+[image src="../png/surf_alpha.png"] -+ -+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 -+ -+ -+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 - пример использования -+-------------------------------------------------------------- -+ -+[image src="../png/surf_fog.png"] -+ -+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 -+ -+ -+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 - пример использования -+------------------------------------------------------------ -+ -+[image src="../png/surf_sl.png"] -+ -+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|' -+ -+ -+File: mgl_ru.info, Node: Mesh sample, Next: Fall sample, Prev: Sharp colors sample, Up: 2D plotting samples -+ -+3.2.5 Mesh - пример использования -+---------------------------------------------------- -+ -+[image src="../png/mesh.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Fall sample, Next: Belt sample, Prev: Mesh sample, Up: 2D plotting samples -+ -+3.2.6 Fall - пример использования -+---------------------------------------------------- -+ -+[image src="../png/fall.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Belt sample, Next: Tile sample, Prev: Fall sample, Up: 2D plotting samples -+ -+3.2.7 Belt - пример использования -+---------------------------------------------------- -+ -+[image src="../png/belt.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Tile sample, Next: Boxs sample, Prev: Belt sample, Up: 2D plotting samples -+ -+3.2.8 Tile - пример использования -+---------------------------------------------------- -+ -+[image src="../png/tile.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Boxs sample, Next: Dens sample, Prev: Tile sample, Up: 2D plotting samples -+ -+3.2.9 Boxs - пример использования -+---------------------------------------------------- -+ -+[image src="../png/boxs.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Dens sample, Next: Cont sample, Prev: Boxs sample, Up: 2D plotting samples -+ -+3.2.10 Dens - пример использования -+----------------------------------------------------- -+ -+[image src="../png/dens.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Cont sample, Next: ContF sample, Prev: Dens sample, Up: 2D plotting samples -+ -+3.2.11 Cont - пример использования -+----------------------------------------------------- -+ -+[image src="../png/cont.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: ContF sample, Next: ContD sample, Prev: Cont sample, Up: 2D plotting samples -+ -+3.2.12 ContF - пример использования -+------------------------------------------------------ -+ -+[image src="../png/contf.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: ContD sample, Next: Axial sample, Prev: ContF sample, Up: 2D plotting samples -+ -+3.2.13 ContD - пример использования -+------------------------------------------------------ -+ -+[image src="../png/contd.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Axial sample, Next: Grad sample, Prev: ContD sample, Up: 2D plotting samples -+ -+3.2.14 Axial - пример использования -+------------------------------------------------------ -+ -+[image src="../png/axial.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Grad sample, Prev: Axial sample, Up: 2D plotting samples -+ -+3.2.15 Grad - пример использования -+----------------------------------------------------- -+ -+[image src="../png/grad.png"] -+ -+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 -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: Surf3 sample, Next: Cloud sample, Up: 3D plotting samples -+ -+3.3.1 Surf3 - пример использования -+----------------------------------------------------- -+ -+[image src="../png/surf3.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Cloud sample, Next: CloudP sample, Prev: Surf3 sample, Up: 3D plotting samples -+ -+3.3.2 Cloud - пример использования -+----------------------------------------------------- -+ -+[image src="../png/cloud.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: CloudP sample, Next: Dens3 sample, Prev: Cloud sample, Up: 3D plotting samples -+ -+3.3.3 CloudP - пример использования -+------------------------------------------------------ -+ -+[image src="../png/cloudp.png"] -+ -+Not available. -+ -+ -+File: mgl_ru.info, Node: Dens3 sample, Next: Cont3 sample, Prev: CloudP sample, Up: 3D plotting samples -+ -+3.3.4 Dens3 - пример использования -+----------------------------------------------------- -+ -+[image src="../png/densa.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Cont3 sample, Next: ContF3 sample, Prev: Dens3 sample, Up: 3D plotting samples -+ -+3.3.5 Cont3 - пример использования -+----------------------------------------------------- -+ -+[image src="../png/conta.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: ContF3 sample, Next: Cont projection sample, Prev: Cont3 sample, Up: 3D plotting samples -+ -+3.3.6 ContF3 - пример использования -+------------------------------------------------------ -+ -+[image src="../png/contfa.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Cont projection sample, Next: Dens projection sample, Prev: ContF3 sample, Up: 3D plotting samples -+ -+3.3.7 Cont projection - пример использования -+--------------------------------------------------------------- -+ -+[image src="../png/cont_xyz.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Dens projection sample, Next: CutMinMax sample, Prev: Cont projection sample, Up: 3D plotting samples -+ -+3.3.8 Dens projection - пример использования -+--------------------------------------------------------------- -+ -+[image src="../png/dens_xyz.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: CutMinMax sample, Next: Isocaps sample, Prev: Dens projection sample, Up: 3D plotting samples -+ -+3.3.9 CutMinMax - пример использования -+--------------------------------------------------------- -+ -+[image src="../png/cutminmax.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Isocaps sample, Next: CutOff sample, Prev: CutMinMax sample, Up: 3D plotting samples -+ -+3.3.10 "Isocaps" - пример использования -+---------------------------------------------------------- -+ -+[image src="../png/cutminmax2.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: CutOff sample, Prev: Isocaps sample, Up: 3D plotting samples -+ -+3.3.11 CutOff - пример использования -+------------------------------------------------------- -+ -+[image src="../png/surf3_cutoff.png"] -+ -+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 -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: SurfC sample, Next: SurfA sample, Up: Dual plotting samples -+ -+3.4.1 SurfC - пример использования -+----------------------------------------------------- -+ -+[image src="../png/surfc.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: SurfA sample, Next: TileS sample, Prev: SurfC sample, Up: Dual plotting samples -+ -+3.4.2 SurfA - пример использования -+----------------------------------------------------- -+ -+[image src="../png/surfa.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: TileS sample, Next: Map sample, Prev: SurfA sample, Up: Dual plotting samples -+ -+3.4.3 TileS - пример использования -+----------------------------------------------------- -+ -+[image src="../png/tiles.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Map sample, Next: Traj sample, Prev: TileS sample, Up: Dual plotting samples -+ -+3.4.4 Map - пример использования -+--------------------------------------------------- -+ -+[image src="../png/map.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Traj sample, Next: Vect sample, Prev: Map sample, Up: Dual plotting samples -+ -+3.4.5 Traj - пример использования -+---------------------------------------------------- -+ -+[image src="../png/traj.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Vect sample, Next: VectL sample, Prev: Traj sample, Up: Dual plotting samples -+ -+3.4.6 Vect - пример использования -+---------------------------------------------------- -+ -+[image src="../png/vect.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: VectL sample, Next: VectC sample, Prev: Vect sample, Up: Dual plotting samples -+ -+3.4.7 VectL - пример использования -+----------------------------------------------------- -+ -+[image src="../png/vectl.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: VectC sample, Next: Flow sample, Prev: VectL sample, Up: Dual plotting samples -+ -+3.4.8 VectC - пример использования -+----------------------------------------------------- -+ -+[image src="../png/vectc.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Flow sample, Next: Pipe sample, Prev: VectC sample, Up: Dual plotting samples -+ -+3.4.9 Flow - пример использования -+---------------------------------------------------- -+ -+[image src="../png/flow.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Pipe sample, Next: Dew sample, Prev: Flow sample, Up: Dual plotting samples -+ -+3.4.10 Pipe - пример использования -+----------------------------------------------------- -+ -+[image src="../png/pipe.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Dew sample, Next: Surf3C sample, Prev: Pipe sample, Up: Dual plotting samples -+ -+3.4.11 Dew - пример использования -+---------------------------------------------------- -+ -+[image src="../png/dew.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Surf3C sample, Next: Surf3A sample, Prev: Dew sample, Up: Dual plotting samples -+ -+3.4.12 Surf3C - пример использования -+------------------------------------------------------- -+ -+[image src="../png/surf3c.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Surf3A sample, Next: Vect 3D sample, Prev: Surf3C sample, Up: Dual plotting samples -+ -+3.4.13 Surf3A - пример использования -+------------------------------------------------------- -+ -+[image src="../png/surf3a.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Vect 3D sample, Next: VectL 3D sample, Prev: Surf3A sample, Up: Dual plotting samples -+ -+3.4.14 Vect 3D - пример использования -+-------------------------------------------------------- -+ -+[image src="../png/vect3.png"] -+ -+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' -+ -+ -+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 - пример использования -+--------------------------------------------------------- -+ -+[image src="../png/vectl3.png"] -+ -+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' -+ -+ -+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 - пример использования -+--------------------------------------------------------- -+ -+[image src="../png/vectc3.png"] -+ -+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' -+ -+ -+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 - пример использования -+-------------------------------------------------------- -+ -+[image src="../png/flow3.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Pipe 3D sample, Next: Crust sample, Prev: Flow 3D sample, Up: Dual plotting samples -+ -+3.4.18 Pipe 3D - пример использования -+-------------------------------------------------------- -+ -+[image src="../png/pipe3.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Crust sample, Next: Dots sample, Prev: Pipe 3D sample, Up: Dual plotting samples -+ -+3.4.19 Crust - пример использования -+------------------------------------------------------ -+ -+[image src="../png/crust.png"] -+ -+read a 'hotdogs.pts' -+norm a -1 1 on -+rotate 40 60 -+light on -+box -+crust a 'p' -+ -+ -+File: mgl_ru.info, Node: Dots sample, Prev: Crust sample, Up: Dual plotting samples -+ -+3.4.20 Dots - пример использования -+----------------------------------------------------- -+ -+[image src="../png/dots.png"] -+ -+read a 'hotdogs.pts' -+norm a -1 1 on -+rotate 40 60 -+box -+dots a 'p' -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: 1D plot sample, Next: 2D plot sample, Up: Basic features -+ -+3.5.1 Пример графиков 1D данных -+--------------------------------------------------- -+ -+[image src="../png/sample8.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: 2D plot sample, Next: 3D plot sample, Prev: 1D plot sample, Up: Basic features -+ -+3.5.2 Пример графиков 2D данных -+--------------------------------------------------- -+ -+[image src="../png/sample9.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: 3D plot sample, Next: Line styles sample, Prev: 2D plot sample, Up: Basic features -+ -+3.5.3 Пример графиков 3D данных -+--------------------------------------------------- -+ -+[image src="../png/sampleb.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Line styles sample, Next: Arrow styles sample, Prev: 3D plot sample, Up: Basic features -+ -+3.5.4 Пример стилей линий и маркеров -+-------------------------------------------------------------- -+ -+[image src="../png/sample5.png"] -+ -+NOT AVAILABLE -+ -+ -+File: mgl_ru.info, Node: Arrow styles sample, Next: Text styles sample, Prev: Line styles sample, Up: Basic features -+ -+3.5.5 Пример стилей стрелок -+---------------------------------------------- -+ -+[image src="../png/sampled.png"] -+ -+NOT AVAILABLE -+ -+ -+File: mgl_ru.info, Node: Text styles sample, Next: TeX parsing sample, Prev: Arrow styles sample, Up: Basic features -+ -+3.5.6 Пример стилей текста -+-------------------------------------------- -+ -+[image src="../png/sample4.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: TeX parsing sample, Next: Font faces sample, Prev: Text styles sample, Up: Basic features -+ -+3.5.7 Пример TeX формулы -+------------------------------------- -+ -+[image src="../png/samplee.png"] -+ -+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}' '' -4 -+ -+ -+File: mgl_ru.info, Node: Font faces sample, Next: Colors sample, Prev: TeX parsing sample, Up: Basic features -+ -+3.5.8 Примеры начертаний шрифта -+------------------------------------------------------ -+ -+[image src="../png/fonts.png"] -+ -+NOT AVAILABLE -+ -+ -+File: mgl_ru.info, Node: Colors sample, Next: Color schemes sample, Prev: Font faces sample, Up: Basic features -+ -+3.5.9 Примеры цветов -+--------------------------------- -+ -+[image src="../png/colors.png"] -+ -+#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' -+ -+ -+File: mgl_ru.info, Node: Color schemes sample, Next: Normal transparency, Prev: Colors sample, Up: Basic features -+ -+3.5.10 Примеры цветовых схем -+----------------------------------------------- -+ -+[image src="../png/color_schemes.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Normal transparency, Next: Glass-like transparency, Prev: Color schemes sample, Up: Basic features -+ -+3.5.11 Обычная прозрачность -+---------------------------------------------- -+ -+[image src="../png/type0.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Glass-like transparency, Next: Lamp-like transparency, Prev: Normal transparency, Up: Basic features -+ -+3.5.12 "Стеклянная" прозрачность -+------------------------------------------------------ -+ -+[image src="../png/type1.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Lamp-like transparency, Prev: Glass-like transparency, Up: Basic features -+ -+3.5.13 "Ламповая" прозрачность -+-------------------------------------------------- -+ -+[image src="../png/type2.png"] -+ -+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 -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: Legend sample, Next: Adding mesh sample, Up: Additional features -+ -+3.6.1 Legend - пример использования -+------------------------------------------------------ -+ -+[image src="../png/legend.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Adding mesh sample, Next: Surf & Cont sample, Prev: Legend sample, Up: Additional features -+ -+3.6.2 Добавляем сетку -+----------------------------------- -+ -+[image src="../png/samplea.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Surf & Cont sample, Next: Flow & Dens sample, Prev: Adding mesh sample, Up: Additional features -+ -+3.6.3 Surf & Cont - пример использования -+----------------------------------------------------------- -+ -+[image src="../png/surf_cont_y.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Flow & Dens sample, Next: Several light sample, Prev: Surf & Cont sample, Up: Additional features -+ -+3.6.4 Flow & Dens - пример использования -+----------------------------------------------------------- -+ -+[image src="../png/flow_dens.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Several light sample, Next: Mirrored surface sample, Prev: Flow & Dens sample, Up: Additional features -+ -+3.6.5 Несколько источников света -+-------------------------------------------------------- -+ -+[image src="../png/several_light.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Mirrored surface sample, Next: Cont with labels sample, Prev: Several light sample, Up: Additional features -+ -+3.6.6 Отражение поверхности -+----------------------------------------------- -+ -+[image src="../png/mirror.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Cont with labels sample, Next: Ternary plot sample, Prev: Mirrored surface sample, Up: Additional features -+ -+3.6.7 Cont и подписи - пример использования -+---------------------------------------------------------------------- -+ -+[image src="../png/contt.png"] -+ -+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' -+ -+ -+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 - пример использования -+------------------------------------------------------------ -+ -+[image src="../png/ternary.png"] -+ -+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.' -+ -+ -+File: mgl_ru.info, Node: Coloring by coordinates sample, Next: Drops sample, Prev: Ternary plot sample, Up: Additional features -+ -+3.6.9 Окрашивание по положению грани -+--------------------------------------------------------------- -+ -+[image src="../png/surf3_rgbd.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Drops sample, Next: Molecules drawing sample, Prev: Coloring by coordinates sample, Up: Additional features -+ -+3.6.10 Drops - пример использования -+------------------------------------------------------ -+ -+[image src="../png/drops.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Molecules drawing sample, Prev: Drops sample, Up: Additional features -+ -+3.6.11 Рисование молекул -+---------------------------------------- -+ -+[image src="../png/molecule.png"] -+ -+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' -+ -+ -+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:: -+ -+ -+File: mgl_ru.info, Node: Curvelinear coorinates sample, Next: 2-axes sample, Up: Advanced features -+ -+3.7.1 Криволинейные координаты -+----------------------------------------------------- -+ -+[image src="../png/sample3.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: 2-axes sample, Next: Semi-log sample, Prev: Curvelinear coorinates sample, Up: Advanced features -+ -+3.7.2 Несколько осей на одном графике -+---------------------------------------------------------------- -+ -+[image src="../png/2_axis.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Semi-log sample, Next: Log-log sample, Prev: 2-axes sample, Up: Advanced features -+ -+3.7.3 Semi-log - пример использования -+-------------------------------------------------------- -+ -+[image src="../png/semilog.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Log-log sample, Next: Fitting sample, Prev: Semi-log sample, Up: Advanced features -+ -+3.7.4 Log-log - пример использования -+------------------------------------------------------- -+ -+[image src="../png/loglog.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Fitting sample, Next: Envelop sample, Prev: Log-log sample, Up: Advanced features -+ -+3.7.5 Fitting - пример использования -+------------------------------------------------------- -+ -+[image src="../png/fit.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Envelop sample, Next: Sew sample, Prev: Fitting sample, Up: Advanced features -+ -+3.7.6 Envelop - пример использования -+------------------------------------------------------- -+ -+[image src="../png/envelop.png"] -+ -+new a 1000 -+fill a 'exp(-8*x^2)*sin(10*pi*x)' -+plot a 'b' -+envelop a -+plot a 'r' -+axis -+ -+ -+File: mgl_ru.info, Node: Sew sample, Next: STFA sample, Prev: Envelop sample, Up: Advanced features -+ -+3.7.7 Sew - пример использования -+--------------------------------------------------- -+ -+[image src="../png/sew.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: STFA sample, Next: PDE sample, Prev: Sew sample, Up: Advanced features -+ -+3.7.8 STFA - пример использования -+---------------------------------------------------- -+ -+[image src="../png/stfa.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: PDE sample, Next: Beam tracing sample, Prev: STFA sample, Up: Advanced features -+ -+3.7.9 PDE - пример использования -+--------------------------------------------------- -+ -+[image src="../png/pde.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Beam tracing sample, Next: Parser sample, Prev: PDE sample, Up: Advanced features -+ -+3.7.10 Beam tracing - пример использования -+------------------------------------------------------------- -+ -+[image src="../png/qo2d.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: Parser sample, Next: Manual ticks sample, Prev: Beam tracing sample, Up: Advanced features -+ -+3.7.11 Parser - пример использования -+------------------------------------------------------- -+ -+ -+File: mgl_ru.info, Node: Manual ticks sample, Next: ColumnPlot sample, Prev: Parser sample, Up: Advanced features -+ -+3.7.12 Особые метки по осям -+-------------------------------------------- -+ -+[image src="../png/tval.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: ColumnPlot sample, Next: StickPlot sample, Prev: Manual ticks sample, Up: Advanced features -+ -+3.7.13 ColumnPlot - пример использования -+----------------------------------------------------------- -+ -+[image src="../png/column.png"] -+ -+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 -+ -+ -+File: mgl_ru.info, Node: StickPlot sample, Prev: ColumnPlot sample, Up: Advanced features -+ -+3.7.14 StickPlot - пример использования -+---------------------------------------------------------- -+ -+[image src="../png/stick.png"] -+ -+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' -+ -+ -+File: mgl_ru.info, Node: Stereo image sample, Prev: StickPlot sample, Up: Advanced features -+ -+3.7.15 Пример стерео изображения -+------------------------------------------------------- -+ -+[image src="../png/stereo.png"] -+ -+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 -+ -+ -+ -+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) - библиотеки классов и -+функций для построения научной графики. Пожалуйста сообщайте о любых -+ошибках в этом руководстве на . -+ -+ 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 -+ -+ -+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. -+ -+ -+File: mgl_ru.info, Node: Index, Prev: Copying This Manual, Up: Top -+ -+Индекс -+************ -+ -+[index] -+* 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) -+ -+ -+ -+ -+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 -- 2.30.2