From 1d7d3cc4afa2205c801ccc2aa71c7ac59359dc5f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lars=20Gullik=20Bj=C3=B8nnes?= Date: Mon, 22 Nov 1999 16:19:48 +0000 Subject: [PATCH] read ChangeLog, a lot of whitespace changes. experimental use of libtool git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@329 a592a061-630c-0410-9148-cb99ea01b6c8 --- .cvsignore | 2 +- ChangeLog | 59 + acinclude.m4 | 433 ++++ config/ltconfig | 3017 +++++++++++++++++++++++++ config/ltmain.sh | 3975 +++++++++++++++++++++++++++++++++ configure.in | 5 +- src/.cvsignore | 3 +- src/FontLoader.h | 3 +- src/LyXAction.C | 1275 +++++------ src/LyXAction.h | 118 +- src/LyXView.C | 8 +- src/LyXView.h | 2 +- src/Makefile.am | 2 +- src/buffer.C | 10 +- src/commandtags.h | 1 - src/error.C | 36 - src/error.h | 79 - src/filedlg.C | 362 ++- src/filedlg.h | 95 +- src/insets/.cvsignore | 3 + src/insets/Makefile.am | 7 +- src/insets/figinset.C | 10 +- src/insets/figinset.h | 2 +- src/insets/insetbib.C | 11 +- src/insets/insetbib.h | 25 +- src/insets/insetcommand.C | 10 +- src/insets/insetcommand.h | 4 +- src/insets/inseterror.C | 5 +- src/insets/inseterror.h | 2 +- src/insets/insetinclude.C | 2 +- src/insets/insetinclude.h | 4 +- src/insets/insetindex.h | 4 +- src/insets/insetinfo.C | 5 +- src/insets/insetinfo.h | 2 +- src/insets/insetlabel.C | 10 +- src/insets/insetlabel.h | 4 +- src/insets/insetlatexaccent.C | 19 +- src/insets/insetlatexaccent.h | 6 +- src/insets/insetloa.h | 4 +- src/insets/insetlof.h | 4 +- src/insets/insetlot.h | 4 +- src/insets/insetparent.h | 2 +- src/insets/insetquotes.C | 3 +- src/insets/insetquotes.h | 2 +- src/insets/insetref.C | 2 +- src/insets/insetref.h | 6 +- src/insets/insetspecialchar.C | 18 +- src/insets/insetspecialchar.h | 6 +- src/insets/insettoc.h | 4 +- src/insets/inseturl.h | 4 +- src/insets/lyxinset.h | 20 +- src/lyx_cb.C | 39 +- src/lyx_gui.C | 6 +- src/lyxfunc.C | 452 ++-- src/lyxfunc.h | 67 +- src/lyxlookup.C | 42 +- src/lyxlookup.h | 9 +- src/lyxparagraph.h | 75 +- src/lyxserver.C | 7 +- src/lyxtext.h | 19 +- src/mathed/.cvsignore | 4 +- src/mathed/Makefile.am | 7 +- src/mathed/formula.C | 18 +- src/mathed/formula.h | 6 +- src/mathed/formulamacro.C | 5 +- src/mathed/formulamacro.h | 2 +- src/mathed/math_defs.h | 195 +- src/mathed/math_inset.C | 12 +- src/mathed/math_symbols.C | 2 +- src/menus.C | 6 +- src/minibuffer.C | 13 +- src/minibuffer.h | 6 +- src/paragraph.C | 162 +- src/spellchecker.h | 11 +- src/support/.cvsignore | 4 +- src/support/LAssert.h | 4 +- src/support/Makefile.am | 7 +- src/support/lstrings.C | 77 +- src/support/lyxstring.C | 17 +- src/support/lyxstring.h | 56 +- src/table.C | 2 +- src/texrow.C | 84 +- src/texrow.h | 25 +- src/text.C | 112 +- src/text2.C | 48 +- src/toolbar.C | 5 +- src/toolbar.h | 2 +- src/undo.C | 10 +- src/undo.h | 10 +- 89 files changed, 9338 insertions(+), 1989 deletions(-) create mode 100755 config/ltconfig create mode 100644 config/ltmain.sh delete mode 100644 src/error.C delete mode 100644 src/error.h diff --git a/.cvsignore b/.cvsignore index 316a291a5f..14a3005557 100644 --- a/.cvsignore +++ b/.cvsignore @@ -6,4 +6,4 @@ Makefile.in configure aclocal.m4 lyx.1 - +libtool diff --git a/ChangeLog b/ChangeLog index c7e7d744ac..d7630786ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,62 @@ +1999-11-22 Lars Gullik Bjønnes + + * src/support/lyxstring.h: made the methods that take iterators + use const_iterator. + + * src/support/lstrings.C (countChar): use std::cound(itr, itr, val) + (regexMatch): made is use the real regex class. + + * src/support/Makefile.am: changed to use libtool + + * src/support/.cvsignore: added *.lo, .libs and libsupport.la + + * src/mathed/math_defs.h: made the mathaligns be in a enum instead + of defines. + (MathIsInset ++): changed several macros to be inline functions + instead. + + * src/mathed/Makefile.am: changed to use libtool + + * src/mathed/.cvsignore: added *.lo, .libs and libmathed.la + + * src/insets/inset* : Clone changed to const and return type is + the true insettype not just Inset*. + + * src/insets/Makefile.am: changed to use libtool + + * src/insets/.cvsignore: added *.lo, .libs and libinsets.la + + * src/undo.[Ch] : added empty() and changed some of the method + names. + + * src/texrow.[Ch]: rewrote to store texrow's in a std::list. + + * src/lyxparagraph.h: use id() and id(...) instead of getID and + setID use block<> for the bullets array, added const several places. + + * src/lyxfunc.C (getStatus): new function + + * src/lyxfunc.[Ch] : small changes to take advantage of the new + LyXAction, added const to several funtions. + + * src/filedlg.[Ch]: rewrote to store userchache and groupchache in + a std::map, and to store the dir items in a vector. + + * src/Makefile.am (lyx_DEPENDENCIES): changed to use libtool files + as dependencies. + + * src/LyXView.[Ch] + other files : changed currentView to view. + + * src/LyXAction.[Ch] : ported from the old devel branch. + + * src/.cvsignore: added .libs and a.out + + * configure.in : changes to use libtool. + + * acinclude.m4 : inserted libtool.m4 + + * .cvsignore: added libtool + 1999-11-19 Jean-Marc Lasgouttes * src/Makefile.am (lyx_DEPENDENCIES): give the explicit object diff --git a/acinclude.m4 b/acinclude.m4 index 2a34181dde..6cfc252efb 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -822,3 +822,436 @@ dnl ========================================================= sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) + +## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- +## Copyright (C) 1996-1999 Free Software Foundation, Inc. +## Originally by Gordon Matzigkeit , 1996 +## +## 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 +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program 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 this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +## +## As a special exception to the GNU General Public License, if you +## distribute this file as part of a program that contains a +## configuration script generated by Autoconf, you may include it under +## the same distribution terms that you use for the rest of that program. + +# serial 40 AC_PROG_LIBTOOL +AC_DEFUN(AC_PROG_LIBTOOL, +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# Save cache, so that ltconfig can load it +AC_CACHE_SAVE + +# Actually configure libtool. ac_aux_dir is where install-sh is found. +CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ +DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ +$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ +|| AC_MSG_ERROR([libtool configure failed]) + +# Reload cache, that may have been modified by ltconfig +AC_CACHE_LOAD + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Redirect the config.log output again, so that the ltconfig log is not +# clobbered by the next message. +exec 5>>./config.log +]) + +AC_DEFUN(AC_LIBTOOL_SETUP, +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_RANLIB])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +dnl + +# Check for any special flags to pass to ltconfig. +# +# the following will cause an existing older ltconfig to fail, so +# we ignore this at the expense of the cache file... Checking this +# will just take longer ... bummer! +#libtool_flags="--cache-file=$cache_file" +# +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" +test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], +[libtool_flags="$libtool_flags --enable-dlopen"]) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[libtool_flags="$libtool_flags --enable-win32-dll"]) +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case "$host" in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + 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_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) + 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 + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +]) +esac +]) + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AC_ENABLE_SHARED, [dnl +define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AC_ENABLE_STATIC, [dnl +define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl +define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN(AC_PROG_LD, +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. +changequote(,)dnl + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' +changequote([,])dnl + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(ac_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + ac_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + ac_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$ac_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_SUBST(LD) +AC_PROG_LD_GNU +]) + +AC_DEFUN(AC_PROG_LD_GNU, +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + ac_cv_prog_gnu_ld=yes +else + ac_cv_prog_gnu_ld=no +fi]) +]) + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN(AC_PROG_NM, +[AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(ac_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + ac_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/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 + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -p" + break + else + ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm +fi]) +NM="$ac_cv_path_NM" +AC_MSG_RESULT([$NM]) +AC_SUBST(NM) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN(AC_CHECK_LIBM, +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case "$host" in +*-*-beos* | *-*-cygwin*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library, adds --enable-ltdl-convenience to +# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor +# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed +# to be `${top_builddir}/libltdl'. Make sure you start DIR with +# '${top_builddir}/' (note the single quotes!) if your package is not +# flat, and, if you're not using automake, define top_builddir as +# appropriate in the Makefiles. +AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case "$enable_ltdl_convenience" in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la + INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library, and adds --enable-ltdl-install to +# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor +# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed +# to be `${top_builddir}/libltdl'. Make sure you start DIR with +# '${top_builddir}/' (note the single quotes!) if your package is not +# flat, and, if you're not using automake, define top_builddir as +# appropriate in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la + INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + INCLTDL= + fi +]) + +dnl old names +AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl +AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl +AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl +AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl +AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl +AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl +AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl + +dnl This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL])dnl diff --git a/config/ltconfig b/config/ltconfig new file mode 100755 index 0000000000..65ec6f65d0 --- /dev/null +++ b/config/ltconfig @@ -0,0 +1,3017 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This file 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. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A lot of this script is taken from autoconf-2.10. + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +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 </dev/null`} + case X$UNAME in + *-DOS) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +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 && + echo_test_string="`eval $cmd`" && + (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' || + test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then + # 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. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$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' && + test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 ltconfig 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' && + test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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 test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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}" "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +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' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.3.3 +TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)" +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +default_ofile=libtool +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +enable_static=yes +enable_fast_install=yes +enable_dlopen=unknown +enable_win32_dll=no +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +ofile="$default_ofile" +verify_host=yes +with_gcc=no +with_gnu_ld=no +need_locks=yes +ac_ext=c +objext=o +libext=a +exeext= +cache_file= + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LDFLAGS="$LDFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_LIBS="$LIBS" +old_NM="$NM" +old_RANLIB="$RANLIB" +old_DLLTOOL="$DLLTOOL" +old_OBJDUMP="$OBJDUMP" +old_AS="$AS" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test ! -f "$ltmain"; then + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; fi + +if test -n "$cache_file" && test -r "$cache_file"; then + echo "loading cache $cache_file within ltconfig" + . $cache_file +fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. + srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$SHELL $ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$SHELL $ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +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 "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# Set a sane default for `OBJDUMP'. +test -z "$OBJDUMP" && OBJDUMP=objdump + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$AS" && AS=as + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for object suffix... $ac_c" 1>&6 +$rm conftest* +echo 'int i = 1;' > conftest.c +echo "$progname:603: checking for object suffix" >& 5 +if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* +echo "$ac_t$objext" 1>&6 + +echo $ac_n "checking for executable suffix... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_exeext="no" + $rm conftest* + echo 'main () { return 0; }' > conftest.c + echo "$progname:629: checking for executable suffix" >& 5 + if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c | *.err | *.$objext ) ;; + *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; + esac + done + else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* +fi +if test "X$ac_cv_exeext" = Xno; then + exeext="" +else + exeext="$ac_cv_exeext" +fi +echo "$ac_t$ac_cv_exeext" 1>&6 + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + + case "$host_os" in + beos* | irix5* | irix6* | osf3* | osf4*) + # PIC is the default for these OSes. + ;; + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + link_static_flag="$link_static_flag ${wl}-lC" + ;; + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + sysv4*MP*) + if test -d /usr/nec; then + pic_flag=-Kconform_pic + fi + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + sysv4*MP*) + if test -d /usr/nec ;then + pic_flag='-Kconform_pic' + link_static_flag='-Bstatic' + fi + ;; + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + case "$host_os" in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + ;; + *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + ;; + esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check to see if options -o and -c are simultaneously supported by compiler +echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +$rm conftest* +echo "int some_variable = 0;" > conftest.c +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.o" +echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 +if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else + echo "$ac_t"yes 1>&6 + compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 +if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else + echo "$ac_t"yes 1>&6 + compiler_o_lo=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_o_lo=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 + 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 + echo "$ac_t$hard_links" 1>&6 + $rm conftest* + if test "$hard_links" = no; then + echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 + need_locks=warn + fi +else + need_locks=no +fi + +if test "$with_gcc" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" + echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_rtti_exceptions=no + else + echo "$ac_t"yes 1>&6 + compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_rtti_exceptions=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi + +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftest.dat + if ln -s X conftest.dat 2>/dev/null; then + $rm conftest.dat + LN_S="ln -s" + else + LN_S=ln + fi + if test "$LN_S" = "ln -s"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not 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 + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression 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'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# 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. + +case "$host_os" in +cygwin* | mingw*) + # 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 "$with_gcc" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in + aix3* | aix4*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + cat <&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. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' + + archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ + _lt_hint=1; + for symbol in `cat $export_symbols`; do + echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; + _lt_hint=`expr 1 + \$_lt_hint`; + done~ + test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' + ;; + + netbsd*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' + # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + + solaris*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&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. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_separator=':' + if test "$with_gcc" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=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 + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + shared_flag='${wl}-bM:SRE' + hardcode_direct=yes + fi + allow_undefined_flag=' ${wl}-berok' + archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' + archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' + case "$host_os" in aix4.[01]|aix4.[01].*) + # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on + always_export_symbols=yes ;; + esac + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw*) + # 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. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs' + fix_srcfile_path='`cygpath -w $srcfile`' + ;; + + freebsd1*) + ld_shlibs=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*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case "$host_os" in + hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF + fi + hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3* | osf4*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$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 $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case "$host_os" in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + # archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs' + archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 +test "$ld_shlibs" = no && can_build_shared=no + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/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 + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + break + else + NM=${NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# 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]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + $rm conftest* + cat > conftest.c <&5 + if { (eval echo $progname:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:1596: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + + cat <> conftest.c +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$objext conftstm.$objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + global_symbol_pipe= + fi +done +if test "$pipe_works" = yes; then + echo "${ac_t}ok" 1>&6 +else + echo "${ac_t}failed" 1>&6 +fi + +if test -z "$global_symbol_pipe"; then + global_symbol_to_cdecl= +fi + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != 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 "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$ac_t$hardcode_action" 1>&6 + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linkers may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" 1>&6 +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +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" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +file_magic_cmd= +file_magic_test_file= +deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [regex]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4*) + version_type=linux + # AIX 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. + # We preserve .a as extension for shared libraries though AIX4.2 + # and later linker supports .so + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + ;; + +amigaos*) + 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' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + deplibs_check_method=pass_all + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + +bsdi4*) + version_type=linux + library_names_spec='${libname}.so$major ${libname}.so' + soname_spec='${libname}.so' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + 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*) + version_type=windows + need_version=no + need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' + deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + file_magic_cmd='${OBJDUMP} -f' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case "$version_type" in + freebsd-elf*) + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + deplibs_check_method=unknown + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + finish_cmds='PATH="\$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + case "$host_os" in + freebsd2* | freebsd3.[01]*) + shlibpath_overrides_runpath=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' + case "$host_os" in + irix5*) + libsuff= shlibsuff= + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case "$LD" in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + 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}" + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib${libsuff}/libc.so*` + deplibs_check_method='pass_all' + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd*) + version_type=sunos + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method='file_magic COFF format alpha shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + deplibs_check_method='pass_all' + 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" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" + file_magic_cmd=/usr/bin/file + file_magic_test_file=/lib/libc.so + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case "$host_vendor" in + ncr) + deplibs_check_method='pass_all' + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + 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]' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" 1>&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in +# configure.in, otherwise build static only libraries. +case "$host_os" in +cygwin* | mingw* | os2*) + if test x$can_build_shared = xyes; then + test x$enable_win32_dll = xno && can_build_shared=no + echo "checking if package supports dlls... $can_build_shared" 1>&6 + fi +;; +esac + +if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then + case "$deplibs_check_method" in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&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 + +EOF + fi ;; + esac +fi + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 +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 + ;; + +aix4*) + test "$enable_shared" = yes && enable_static=no + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&6 + +if test "$hardcode_action" = relink; 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 + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else +if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then + lt_cv_dlopen=no lt_cv_dlopen_libs= +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "$progname:2170: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "$progname:2207: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 +echo "$progname:2251: checking for dld_link in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +echo "$progname:2288: checking for shl_load" >&5 +if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +shl_load(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_shl_load=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "$progname:2333: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + +fi + +fi + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + fi + + case "$lt_cv_dlopen" in + dlopen) +for ac_hdr in dlfcn.h; do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "$progname:2395: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int fnord = 0; +EOF +ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo $progname:2405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +done + + if test "x$ac_cv_header_dlfcn_h" = xyes; then + CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + fi + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2433: checking whether a program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self" 1>&6 + + if test "$lt_cv_dlopen_self" = yes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2506: checking whether a statically linked program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self_static=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self_static=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self_static=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 +fi + ;; + 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 + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" +if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ltecho="$CONFIG_SHELL \$0 --fallback-echo" +fi +LTSHELL="$SHELL" + +LTCONFIG_VERSION="$VERSION" + +# Only quote variables if we're using ltmain.sh. +case "$ltmain" in +*.sh) + # Now quote all the things that may contain metacharacters. + for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ + AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ + file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case "$ltecho" in + *'\$0 --fallback-echo"') + ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + + trap "$rm \"$ofile\"; exit 1" 1 2 15 + echo "creating $ofile" + $rm "$ofile" + cat < "$ofile" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Gordon Matzigkeit , 1996 +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +### BEGIN LIBTOOL CONFIG +EOF + cfgfile="$ofile" + ;; + +*) + # Double-quote the variables that need it (for aesthetics). + for var in old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + + # Just create a config file. + cfgfile="$ofile.cfg" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + echo "creating $cfgfile" + $rm "$cfgfile" + cat < "$cfgfile" +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +EOF + ;; +esac + +cat <> "$cfgfile" +# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ +# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# The version of $progname that generated this script. +LTCONFIG_VERSION=$LTCONFIG_VERSION + +# Shell to use when invoking shell scripts. +SHELL=$LTSHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$ltecho + +# The archiver. +AR=$AR + +# The default C compiler. +CC=$CC + +# The linker used to build libraries. +LD=$LD + +# Whether we need hard or soft links. +LN_S=$LN_S + +# A BSD-compatible nm program. +NM=$NM + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$reload_flag +reload_cmds=$reload_cmds + +# How to pass a linker flag through the compiler. +wl=$wl + +# Object file suffix (normally "o"). +objext="$objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$pic_flag + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$RANLIB +old_archive_cmds=$old_archive_cmds +old_postinstall_cmds=$old_postinstall_cmds +old_postuninstall_cmds=$old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$old_archive_from_new_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$archive_cmds +archive_expsym_cmds=$archive_expsym_cmds +postinstall_cmds=$postinstall_cmds +postuninstall_cmds=$postuninstall_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$include_expsyms + +EOF + +case "$ltmain" in +*.sh) + echo '### END LIBTOOL CONFIG' >> "$ofile" + echo >> "$ofile" + case "$host_os" in + aix3*) + cat <<\EOF >> "$ofile" + +# 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 "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # Append the ltmain.sh script. + sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) + + chmod +x "$ofile" + ;; + +*) + # Compile the libtool program. + echo "FIXME: would compile $ltmain" + ;; +esac + +test -n "$cache_file" || exit 0 + +# AC_CACHE_SAVE +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/config/ltmain.sh b/config/ltmain.sh new file mode 100644 index 0000000000..ae10cad021 --- /dev/null +++ b/config/ltmain.sh @@ -0,0 +1,3975 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun ltconfig. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Check that we have a working $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, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + echo "$modename: not configured to build any kind of library" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case "$arg" in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + execute_dlfiles) + eval "$prev=\"\$$prev \$arg\"" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case "$arg" in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + exit 0 + ;; + + --config) + sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case "$nonopt" in + *cc | *++ | gcc* | *-gcc*) + mode=link + for arg + do + case "$arg" in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case "$mode" in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + lastarg= + srcfile="$nonopt" + suppress_output= + + user_target=no + for arg + do + # Accept any command-line options. + case "$arg" in + -o) + if test "$user_target" != "no"; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit 1 + fi + user_target=next + ;; + + -static) + build_old_libs=yes + continue + ;; + esac + + case "$user_target" in + next) + # The next one is the -o target name + user_target=yes + continue + ;; + yes) + # We got the output file + user_target=set + libobj="$arg" + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly in scan + # sets, so we specify it separately. + case "$lastarg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + case "$user_target" in + set) + ;; + no) + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + *) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSfmso]' + case "$libobj" in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case "$libobj" in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $libobj" + else + removelist="$libobj" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit 1" 1 2 15 + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit 1" 1 2 15 + else + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until ln "$0" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $pic_flag -DPIC $srcfile" + if test "$build_old_libs" = yes; then + lo_libobj="$libobj" + dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$libobj"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + + if test -d "$dir"; then + $show "$rm $libobj" + $run $rm $libobj + else + $show "$mkdir $dir" + $run $mkdir $dir + status=$? + if test $status -ne 0 && test ! -d $dir; then + exit $status + fi + fi + fi + if test "$compiler_o_lo" = yes; then + output_obj="$libobj" + command="$command -o $output_obj" + elif test "$compiler_c_o" = yes; then + output_obj="$obj" + command="$command -o $output_obj" + fi + + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed, then go on to compile the next one + if test x"$output_obj" != x"$libobj"; then + $show "$mv $output_obj $libobj" + if $run $mv $output_obj $libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # If we have no pic_flag, then copy the object into place and finish. + if test -z "$pic_flag" && test "$build_old_libs" = yes; then + # Rename the .lo from within objdir to obj + if test -f $obj; then + $show $rm $obj + $run $rm $obj + fi + + $show "$mv $libobj $obj" + if $run $mv $libobj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + + # Now arrange that obj and lo_libobj become the same file + $show "$LN_S $obj $lo_libobj" + if $run $LN_S $obj $lo_libobj; then + exit 0 + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + command="$base_compile $srcfile" + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + output_obj="$obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed + if test x"$output_obj" != x"$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + else + # Move the .lo from within objdir + $show "$mv $libobj $lo_libobj" + if $run $mv $libobj $lo_libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + fi + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $rm "$lockfile" + fi + + exit 0 + ;; + + # libtool link mode + link) + modename="$modename: link" + C_compiler="$CC" # save it, to compile generated C sources + CC="$nonopt" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invokation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (!dll) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test $# -gt 0; do + arg="$1" + shift + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case "$prev" in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case "$arg" in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case "$arg" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi + + prevarg="$arg" + + case "$arg" in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: not more than one -exported-symbols argument allowed" + exit 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + absdir="$dir" + fi + dir="$absdir" + ;; + esac + case " $deplibs " in + *" $arg "*) ;; + *) deplibs="$deplibs $arg";; + esac + case " $lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir";; + esac + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + dllsearchdir=`cd "$dir" && pwd || echo "$dir"` + case ":$dllsearchpath:" in + ::) dllsearchpath="$dllsearchdir";; + *":$dllsearchdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dllsearchdir";; + esac + ;; + esac + ;; + + -l*) + if test "$arg" = "-lc"; then + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + # These systems don't actually have c library (as such) + continue + ;; + esac + elif test "$arg" = "-lm"; then + case "$host" in + *-*-cygwin* | *-*-beos*) + # These systems don't actually have math library (as such) + continue + ;; + esac + fi + deplibs="$deplibs $arg" + ;; + + -module) + module=yes + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # If we have no pic_flag, then this is the same as -all-static. + if test -z "$pic_flag" && test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + + *.o | *.obj | *.a | *.lib) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A library object. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` + prev= + fi + libobjs="$libobjs $arg" + ;; + + *.la) + # A libtool-controlled library. + + dlname= + libdir= + library_names= + old_library= + + # Check to see that this really is a libtool archive. + if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 + exit 1 + fi + + # If the library was installed with an old release of libtool, + # it will not redefine variable installed. + installed=yes + + # Read the .la file + # If there is no directory component, then add one. + case "$arg" in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 + exit 1 + fi + + # Find the relevant object directory and library name. + name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` + + if test "X$installed" = Xyes; then + dir="$libdir" + else + dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$arg"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + fi + + if test -n "$dependency_libs"; then + # Extract -R and -L from dependency_libs + temp_deplibs= + for deplib in $dependency_libs; do + case "$deplib" in + -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + case " $rpath $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + -L*) case "$compile_command $temp_deplibs " in + *" $deplib "*) ;; + *) temp_deplibs="$temp_deplibs $deplib";; + esac + temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` + case " $lib_search_path " in + *" $temp_dir "*) ;; + *) lib_search_path="$lib_search_path $temp_dir";; + esac + ;; + *) temp_deplibs="$temp_deplibs $deplib";; + esac + done + dependency_libs="$temp_deplibs" + fi + + if test -z "$libdir"; then + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$deplibs$dependency_libs" + compile_command="$compile_command $dir/$old_library$dependency_libs" + finalize_command="$finalize_command $dir/$old_library$dependency_libs" + continue + fi + + # This library was specified with -dlopen. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking statically, + # we need to preload. + prev=dlprefiles + else + # We should not create a dependency on this library, but we + # may need any libraries it requires. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + prev= + continue + fi + fi + + # The library was specified with -dlpreopen. + if test "$prev" = dlprefiles; then + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + dlprefiles="$dlprefiles $dir/$old_library" + else + dlprefiles="$dlprefiles $dir/$linklib" + fi + prev= + fi + + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + link_against_libtool_libs="$link_against_libtool_libs $arg" + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # We need an absolute path. + case "$dir" in + [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + absdir="$dir" + fi + ;; + esac + + # This is the magic to use -rpath. + # Skip directories that are in the system default run-time + # search path, unless they have been requested with -R. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + + lib_linked=yes + case "$hardcode_action" in + immediate | unsupported) + if test "$hardcode_direct" = no; then + compile_command="$compile_command $dir/$linklib" + deplibs="$deplibs $dir/$linklib" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + dllsearchdir=`cd "$dir" && pwd || echo "$dir"` + if test -n "$dllsearchpath"; then + dllsearchpath="$dllsearchpath:$dllsearchdir" + else + dllsearchpath="$dllsearchdir" + fi + ;; + esac + elif test "$hardcode_minus_L" = no; then + case "$host" in + *-*-sunos*) + compile_shlibpath="$compile_shlibpath$dir:" + ;; + esac + case "$compile_command " in + *" -L$dir "*) ;; + *) compile_command="$compile_command -L$dir";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = no; then + case ":$compile_shlibpath:" in + *":$dir:"*) ;; + *) compile_shlibpath="$compile_shlibpath$dir:";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -l$name" + else + lib_linked=no + fi + ;; + + relink) + if test "$hardcode_direct" = yes; then + compile_command="$compile_command $absdir/$linklib" + deplibs="$deplibs $absdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + case "$compile_command " in + *" -L$absdir "*) ;; + *) compile_command="$compile_command -L$absdir";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -L$absdir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case ":$compile_shlibpath:" in + *":$absdir:"*) ;; + *) compile_shlibpath="$compile_shlibpath$absdir:";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -l$name" + else + lib_linked=no + fi + ;; + + *) + lib_linked=no + ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + finalize_command="$finalize_command $libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + case "$finalize_command " in + *" -L$libdir "*) ;; + *) finalize_command="$finalize_command -L$libdir";; + esac + finalize_command="$finalize_command -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case ":$finalize_shlibpath:" in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:";; + esac + finalize_command="$finalize_command -l$name" + else + # We cannot seem to hardcode it, guess we'll fake it. + case "$finalize_command " in + *" -L$dir "*) ;; + *) finalize_command="$finalize_command -L$libdir";; + esac + finalize_command="$finalize_command -l$name" + fi + else + # Transform directly to old archives if we don't build new libraries. + if test -n "$pic_flag" && test -z "$old_library"; then + $echo "$modename: cannot find static library for \`$arg'" 1>&2 + exit 1 + fi + + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_command="$compile_command $dir/$linklib" + finalize_command="$finalize_command $dir/$linklib" + else + case "$compile_command " in + *" -L$dir "*) ;; + *) compile_command="$compile_command -L$dir";; + esac + compile_command="$compile_command -l$name" + case "$finalize_command " in + *" -L$dir "*) ;; + *) finalize_command="$finalize_command -L$dir";; + esac + finalize_command="$finalize_command -l$name" + fi + fi + + # Add in any libraries that this one depends upon. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + esac + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + case "$output" in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *.a | *.lib) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + ;; + + *.la) + # Make sure we only generate libraries of the form `libNAME.la'. + case "$outputname" in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + + if test -n "$objs"; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 + exit 1 + fi + + # How the heck are we supposed to write a wrapper for a shared library? + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 + exit 1 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + libext=al + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + dependency_libs="$deplibs" + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + current="$2" + revision="$3" + age="$4" + + # Check that each of the things are valid numbers. + case "$current" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$revision" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$age" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case "$version_type" in + none) ;; + + irix) + major=`expr $current - $age + 1` + versuffix="$major.$revision" + verstring="sgi$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test $loop != 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="sgi$major.$iface:$verstring" + done + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + windows) + # Like Linux, but with '-' rather than '.', since we only + # want one extension on Windows 95. + major=`expr $current - $age` + versuffix="-$major-$age-$revision" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + verstring="0.0" + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + dependency_libs="$deplibs" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *) + # Add libc to deplibs on all other systems. + deplibs="$deplibs -lc" + ;; + esac + fi + + # Create the output directory, or remove our outputs if we need to. + if test -d $output_objdir; then + $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" + $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* + else + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + if test "$build_libtool_libs" = yes; then + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case "$deplibs_check_method" in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behaviour. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | sed 's/.* -> //'` + case "$potliblink" in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | sed 10q \ + | egrep "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: This library needs some functionality provided by $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | + grep . >/dev/null; then + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + echo "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Ensure that we have .o objects for linkers which dislike .lo + # (e.g. aix) incase we are running --disable-static + for obj in $libobjs; do + oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"` + if test ! -f $oldobj; then + $show "${LN_S} $obj $oldobj" + $run ${LN_S} $obj $oldobj || exit $? + fi + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + eval cmds=\"$export_symbols_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linkopts="$linkopts $flag" + fi + + # Do each of the archive commands. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + eval cmds=\"$archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + *.lo | *.o | *.obj) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case "$output" in + *.lo) + if test -n "$objs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" + + output="$obj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show $rm $libobj + $run $rm $libobj + $show "$LN_S $obj $libobj" + $run $LN_S $obj $libobj || exit $? + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + ;; + + # Anything else should be a program. + *) + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$compile_rpath " in + *" $libdir "*) ;; + *) compile_rpath="$compile_rpath $libdir" ;; + esac + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + + # Create the binary in the object directory, then wrap it. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case "$dlsyms" in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`echo "$arg" | sed -e 's%^.*/%%'` + $run eval 'echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{\ +" + + sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ + -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ + < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr_t) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case "$host" in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case "$0" in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`echo $output|sed 's,.exe$,,'` ;; + esac + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + link_against_libtool_libs='$link_against_libtool_libs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + echo >> $output "\ + program=lt-'$outputname' + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if (cd \"\$thisdir\" && eval \$relink_command); then : + else + $rm \"\$progdir/\$file\" + exit 1 + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + echo >> $output "\ + program='$outputname$exeext' + progdir=\"\$thisdir/$objdir\" +" + fi + + echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + *-*-cygwin* | *-*-mingw | *-*-os2*) + # win32 systems need to use the prog path for dll + # lookup to work + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + *) + $echo >> $output "\ + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + # Ensure that we have .o objects in place incase we decided + # not to build a shared library, and have fallen back to building + # static libs even though --disable-static was passed! + for oldobj in $oldobjs; do + if test ! -f $oldobj; then + obj=`$echo "X$oldobj" | $Xsed -e "$o2lo"` + $show "${LN_S} $obj $oldobj" + $run ${LN_S} $obj $oldobj || exit $? + fi + done + + eval cmds=\"$old_archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case "$output" in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + if test -n "$xrpath"; then + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + done + dependency_libs="$temp_xrpath $dependency_libs" + fi + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + fi + $rm $output + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$dlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Directory that this library needs to be installed in: +libdir='$install_libdir'\ +" + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case "$arg" in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case "$file" in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case "$file" in + *.a | *.lib) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$realname $destdir/$realname" + $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? + + if test $# -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case "$destfile" in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.o | *.obj) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + link_against_libtool_libs= + relink_command= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Check the variables that should have been set. + if test -z "$link_against_libtool_libs"; then + $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $link_against_libtool_libs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case "$lib" in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec $SHELL $0 --finish$current_libdirs + exit 1 + fi + + exit 0 + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit 0 + + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "----------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case "$file" in + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case "$file" in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now actually exec the command. + eval "exec \$cmd$args" + + $echo "$modename: cannot exec \$cmd$args" + exit 1 + else + # Display what would be done. + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + $echo "$cmd$args" + exit 0 + fi + ;; + + # libtool uninstall mode + uninstall) + modename="$modename: uninstall" + rm="$nonopt" + files= + + for arg + do + case "$arg" in + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + rmfiles="$file" + + case "$name" in + *.la) + # Possibly a libtool archive, so verify it. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $dir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" + + $show "$rm $rmfiles" + $run $rm $rmfiles + + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + # FIXME: should reinstall the best remaining shared library. + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` + rmfiles="$rmfiles $dir/$oldobj" + fi + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + + *) + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + esac + done + exit 0 + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 +fi # test -z "$show_help" + +# We need to display help for each of the modes. +case "$mode" in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +MODE must be one of the following: + + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/configure.in b/configure.in index c4959b5e70..671a14e691 100644 --- a/configure.in +++ b/configure.in @@ -32,7 +32,7 @@ done ### Check for programs AC_PROG_MAKE_SET AC_PROG_INSTALL -AC_PROG_RANLIB +#AC_PROG_RANLIB AC_CHECK_PROG(KPSEWHICH, kpsewhich, kpsewhich, :) if test "x$KPSEWHICH" = xkpsewhich ; then AC_DEFINE(HAVE_KPSEWHICH, 1, @@ -56,6 +56,9 @@ AC_EXEEXT AC_LANG_CPLUSPLUS LYX_PROG_CXX AC_PROG_CXXCPP +AC_DISABLE_SHARED +AC_LIBTOOL_WIN32_DLL +AM_PROG_LIBTOOL ### check the size of pointers and ints # the defaults are given for cross compilation. diff --git a/src/.cvsignore b/src/.cvsignore index eb2534ad2d..9c3f8f303f 100644 --- a/src/.cvsignore +++ b/src/.cvsignore @@ -5,4 +5,5 @@ Makefile.in config.h.in stamp-h *.deps - +.libs +a.out diff --git a/src/FontLoader.h b/src/FontLoader.h index f39dec8606..90fab00e6e 100644 --- a/src/FontLoader.h +++ b/src/FontLoader.h @@ -18,7 +18,8 @@ #include FORMS_H_LOCATION #include "lyxfont.h" -class LString; +#include "LString.h" + class FontInfo; /** This class takes care of loading fonts. It uses FontInfo to make diff --git a/src/LyXAction.C b/src/LyXAction.C index acb0edea97..67c710ea26 100644 --- a/src/LyXAction.C +++ b/src/LyXAction.C @@ -1,5 +1,5 @@ /* This file is part of - * ====================================================== + * ====================================================== * * LyX, The Document Processor * @@ -10,11 +10,6 @@ #include -#include -#include -#include -#include - #ifdef __GNUG__ #pragma implementation #endif @@ -45,721 +40,681 @@ // These are globals. LyXAction lyxaction; - -/* This table is sorted alphabetically [asierra 14Jan96] */ -/* This table MUST be sorted alphabetically, incidentally! */ -kb_func_table const lyx_func_table[] = { - { "accent-acute", LFUN_ACUTE }, - { "accent-breve", LFUN_BREVE }, - { "accent-caron", LFUN_CARON }, - { "accent-cedilla", LFUN_CEDILLA }, - { "accent-circle", LFUN_CIRCLE }, - { "accent-circumflex", LFUN_CIRCUMFLEX }, - { "accent-dot", LFUN_DOT }, - { "accent-grave", LFUN_GRAVE }, - { "accent-hungarian-umlaut", LFUN_HUNG_UMLAUT }, - { "accent-macron", LFUN_MACRON }, - { "accent-ogonek", LFUN_OGONEK }, - { "accent-special-caron", LFUN_SPECIAL_CARON }, - { "accent-tie", LFUN_TIE }, - { "accent-tilde", LFUN_TILDE }, - { "accent-umlaut", LFUN_UMLAUT }, - { "accent-underbar", LFUN_UNDERBAR }, - { "accent-underdot", LFUN_UNDERDOT }, - { "accent-vector", LFUN_VECTOR }, - { "appendix", LFUN_APPENDIX }, - { "apropos", LFUN_APROPOS }, - { "backward-select", LFUN_LEFTSEL }, - { "bibtex-database-add", LFUN_BIBDB_ADD }, - { "bibtex-database-del", LFUN_BIBDB_DEL }, - { "bibtex-insert", LFUN_INSERT_BIBTEX }, - { "bibtex-style", LFUN_BIBTEX_STYLE }, - { "break-line", LFUN_BREAKLINE }, - { "break-paragraph", LFUN_BREAKPARAGRAPH }, - { "break-paragraph-keep-layout", LFUN_BREAKPARAGRAPHKEEPLAYOUT }, - { "break-paragraph-skip", LFUN_BREAKPARAGRAPH_SKIP }, - { "buffer-auto-save", LFUN_AUTOSAVE }, - { "buffer-begin", LFUN_BEGINNINGBUF }, - { "buffer-begin-select", LFUN_BEGINNINGBUFSEL }, - { "buffer-child-insert", LFUN_CHILDINSERT }, // ale970521 - { "buffer-child-open", LFUN_CHILDOPEN }, // ale970528 - { "buffer-chktex", LFUN_RUNCHKTEX }, // Asger 971030 - { "buffer-close", LFUN_CLOSEBUFFER }, - { "buffer-end", LFUN_ENDBUF }, - { "buffer-end-select", LFUN_ENDBUFSEL }, - { "buffer-export", LFUN_EXPORT }, - { "buffer-fax", LFUN_FAX }, - { "buffer-float-insert", LFUN_INSERTFOOTNOTE }, - { "buffer-import", LFUN_IMPORT }, - { "buffer-itemize-bullets-select", LFUN_BUFFERBULLETSSELECT }, - { "buffer-new", LFUN_MENUNEW }, - { "buffer-new-template", LFUN_MENUNEWTMPLT }, - { "buffer-open", LFUN_MENUOPEN }, - { "buffer-previous", LFUN_PREVBUFFER }, - { "buffer-print", LFUN_MENUPRINT }, - { "buffer-reload", LFUN_MENURELOAD }, - { "buffer-toggle-read-only", LFUN_READ_ONLY_TOGGLE }, - { "buffer-typeset", LFUN_RUNLATEX }, // Alejandro's proposal - { "buffer-typeset-ps", LFUN_RUNDVIPS }, - { "buffer-view", LFUN_PREVIEW }, - { "buffer-view-ps", LFUN_PREVIEWPS }, - { "buffer-write", LFUN_MENUWRITE }, - { "buffer-write-as", LFUN_MENUWRITEAS }, - { "build-program", LFUN_BUILDPROG }, - { "cancel", LFUN_CANCEL }, - { "char-backward", LFUN_LEFT }, - { "char-forward", LFUN_RIGHT }, - { "citation-insert", LFUN_INSERT_CITATION }, - { "command-execute", LFUN_EXEC_COMMAND }, - { "command-prefix", LFUN_PREFIX }, - { "command-sequence", LFUN_SEQUENCE }, - { "copy", LFUN_COPY }, - { "cut", LFUN_CUT }, - { "delete-backward", LFUN_BACKSPACE }, - { "delete-backward-skip", LFUN_BACKSPACE_SKIP }, - { "delete-forward", LFUN_DELETE }, - { "delete-forward-skip", LFUN_DELETE_SKIP }, - { "depth-decrement", LFUN_DEPTH_MIN }, - { "depth-increment", LFUN_DEPTH_PLUS }, - { "depth-next", LFUN_DEPTH }, - { "dots-insert", LFUN_LDOTS }, - { "down", LFUN_DOWN }, - { "down-select", LFUN_DOWNSEL }, - { "drop-layouts-choice", LFUN_DROP_LAYOUTS_CHOICE }, - { "end-of-sentence-period-insert", LFUN_END_OF_SENTENCE }, - { "error-next", LFUN_GOTOERROR }, - { "error-remove-all", LFUN_REMOVEERRORS }, - { "figure-insert", LFUN_FIGURE }, - { "file-insert", LFUN_FILE_INSERT }, - { "file-insert-ascii", LFUN_FILE_INSERT_ASCII }, - { "file-new", LFUN_FILE_NEW }, - { "file-open", LFUN_FILE_OPEN }, - { "find-replace", LFUN_MENUSEARCH }, - { "font-bold", LFUN_BOLD }, - { "font-code", LFUN_CODE }, - { "font-default", LFUN_DEFAULT }, - { "font-emph", LFUN_EMPH }, - { "font-free", LFUN_FREE }, - { "font-noun", LFUN_NOUN }, - { "font-roman", LFUN_ROMAN }, - { "font-sans", LFUN_SANS }, - { "font-size", LFUN_FONT_SIZE }, - { "font-state", LFUN_FONT_STATE }, - { "font-underline", LFUN_UNDERLINE }, - { "footnote-insert", LFUN_FOOTMELT }, - { "forward-select", LFUN_RIGHTSEL }, - { "hfill-insert", LFUN_HFILL }, - { "html-insert", LFUN_HTMLURL }, - { "hyphenation-point-insert", LFUN_HYPHENATION }, - { "index-insert", LFUN_INDEX_INSERT }, - { "index-insert-last", LFUN_INDEX_INSERT_LAST }, - { "index-print", LFUN_INDEX_PRINT }, -#if 0 - { "inset-latex-insert", LFUN_INSERT_INSET_LATEX }, -#endif - { "keymap-off", LFUN_KMAP_OFF }, - { "keymap-primary", LFUN_KMAP_PRIM }, - { "keymap-secondary", LFUN_KMAP_SEC }, - { "keymap-toggle", LFUN_KMAP_TOGGLE }, - { "label-insert", LFUN_INSERT_LABEL }, - { "latex-view-log", LFUN_LATEX_LOG }, - { "layout", LFUN_LAYOUT }, - { "layout-character", LFUN_LAYOUT_CHARACTER }, - { "layout-copy", LFUN_LAYOUT_COPY }, - { "layout-document", LFUN_LAYOUT_DOCUMENT }, - //{ "layout-number", LFUN_LAYOUTNO }, // internal only - { "layout-paper", LFUN_LAYOUT_PAPER }, - { "layout-paragraph", LFUN_LAYOUT_PARAGRAPH }, - { "layout-paste", LFUN_LAYOUT_PASTE }, - { "layout-preamble", LFUN_LAYOUT_PREAMBLE }, - { "layout-quotes", LFUN_LAYOUT_QUOTES }, - { "layout-save-default", LFUN_LAYOUT_SAVE_DEFAULT }, - { "layout-table", LFUN_LAYOUT_TABLE }, - { "line-begin", LFUN_HOME }, - { "line-begin-select", LFUN_HOMESEL }, - { "line-delete-forward", LFUN_DELETE_LINE_FORWARD }, - { "line-end", LFUN_END }, - { "line-end-select", LFUN_ENDSEL }, - { "loa-insert", LFUN_LOA_INSERT }, - { "lof-insert", LFUN_LOF_INSERT }, - { "lot-insert", LFUN_LOT_INSERT }, - { "lyx-quit", LFUN_QUIT }, - { "marginpar-insert", LFUN_MARGINMELT }, - { "mark-off", LFUN_MARK_OFF }, - { "mark-on", LFUN_MARK_ON }, - { "mark-toggle", LFUN_SETMARK }, - { "math-delim", LFUN_MATH_DELIM }, - { "math-display", LFUN_MATH_DISPLAY }, // Alejandro's proposal - { "math-greek", LFUN_GREEK }, - { "math-greek-toggle", LFUN_GREEK_TOGGLE }, - { "math-insert", LFUN_INSERT_MATH }, - { "math-limits", LFUN_MATH_LIMITS }, - { "math-macro", LFUN_MATH_MACRO }, - { "math-macro-arg", LFUN_MATH_MACROARG }, - { "math-matrix", LFUN_INSERT_MATRIX }, - { "math-mode", LFUN_MATH_MODE }, - { "math-nonumber", LFUN_MATH_NONUMBER }, - { "math-number", LFUN_MATH_NUMBER }, - { "math-size", LFUN_MATH_SIZE }, - { "melt", LFUN_MELT }, // Needs better name. What about "float-disolve" or "float-extract" (Lgb) - { "menu-open", LFUN_MENU_OPEN_BY_NAME }, - { "menu-separator-insert", LFUN_MENU_SEPARATOR }, - { "meta-prefix", LFUN_META_FAKE }, - { "note-insert", LFUN_INSERT_NOTE }, - { "note-next", LFUN_GOTONOTE }, - { "open-stuff", LFUN_OPENSTUFF }, // Needs better name. - { "paragraph-down", LFUN_DOWN_PARAGRAPH }, - { "paragraph-down-select", LFUN_DOWN_PARAGRAPHSEL }, - { "paragraph-up", LFUN_UP_PARAGRAPH }, - { "paragraph-up-select", LFUN_UP_PARAGRAPHSEL }, - { "parent-insert", LFUN_PARENTINSERT }, - { "paste", LFUN_PASTE }, - { "primary-selection-paste", LFUN_PASTESELECTION }, - { "protected-space-insert", LFUN_PROTECTEDSPACE }, - { "quote-insert", LFUN_QUOTE }, - { "reconfigure", LFUN_RECONFIGURE }, - { "redo", LFUN_REDO }, - { "reference-back", LFUN_REFBACK }, - { "reference-goto", LFUN_REFGOTO }, - { "reference-insert", LFUN_INSERT_REF }, - { "reference-toggle", LFUN_REFTOGGLE }, - { "screen-down", LFUN_NEXT }, - { "screen-down-select", LFUN_NEXTSEL }, - { "screen-recenter", LFUN_CENTER }, - { "screen-up", LFUN_PRIOR }, - { "screen-up-select", LFUN_PRIORSEL }, - { "self-insert", LFUN_SELFINSERT }, - { "server-char-after", LFUN_CHARATCURSOR }, - { "server-get-font", LFUN_GETFONT }, - { "server-get-latex", LFUN_GETLATEX }, - { "server-get-layout", LFUN_GETLAYOUT }, - { "server-get-name", LFUN_GETNAME }, - { "server-get-tip", LFUN_GETTIP }, - { "server-get-xy", LFUN_GETXY }, - { "server-goto-file-row", LFUN_GOTOFILEROW }, - { "server-notify", LFUN_NOTIFY }, - { "server-set-xy", LFUN_SETXY }, - { "spellchecker", LFUN_SPELLCHECK }, - { "symbol-insert", LFUN_INSERT_MATH }, - { "tab-forward", LFUN_TAB }, - { "tab-insert", LFUN_TABINSERT }, - { "table-insert", LFUN_TABLE }, - { "tex-mode", LFUN_TEX }, - { "toc-insert", LFUN_TOC_INSERT }, - { "toc-view", LFUN_TOCVIEW }, - { "toggle-cursor-follows-scrollbar", LFUN_TOGGLECURSORFOLLOW }, - { "toolbar-add-to", LFUN_ADD_TO_TOOLBAR }, - { "toolbar-push", LFUN_PUSH_TOOLBAR }, - { "undo", LFUN_UNDO }, - { "up", LFUN_UP }, - { "up-select", LFUN_UPSEL }, - { "url-insert", LFUN_URL }, - { "vc-check-in", LFUN_VC_CHECKIN }, - { "vc-check-out", LFUN_VC_CHECKOUT }, - { "vc-history", LFUN_VC_HISTORY }, - { "vc-register", LFUN_VC_REGISTER }, - { "vc-revert", LFUN_VC_REVERT }, - { "vc-undo-last", LFUN_VC_UNDO }, - { "word-backward", LFUN_WORDLEFT }, - { "word-backward-select", LFUN_WORDLEFTSEL }, - { "word-capitalize", LFUN_CAPITALIZE_WORD }, - { "word-delete-backward", LFUN_DELETE_WORD_BACKWARD }, - { "word-delete-forward", LFUN_DELETE_WORD_FORWARD }, - { "word-find-backward", LFUN_WORDFINDBACKWARD }, - { "word-find-forward", LFUN_WORDFINDFORWARD }, - { "word-forward", LFUN_WORDRIGHT }, - { "word-forward-select", LFUN_WORDRIGHTSEL }, - { "word-lowcase", LFUN_LOWCASE_WORD }, - { "word-upcase", LFUN_UPCASE_WORD } -}; - - -/* - This table contains the actions that modify a buffer and therefore - are not allowed for RO files. Do you think we have too much tables? - Each single integer in this table replaces 5 lines of code in lyxfunc - that include at least 3 function calls (several integers in the - code segment). - - The table could in the near future be expanded adding a second integer - field with attributes using these tags: - -enum FUNC_ATTRIB { - LFAT_NONE= 0, // Nothing special - LFAT_ISRO= 1, // Is readonly (does not modify a buffer) - LFAT_ISIA= 2, // Is interactive (requires a GUI) - LFAT_REQARG= 4, // Requires argument - LFAT_ISMO= 8, // Only math mode - LFAT_ETCETC -}; - -struct { - kb_action action; - unsigned attrib; -}; - -Alejandro-970604 -*/ - -kb_action func_attrib_table[] = { - LFUN_ACUTE, - LFUN_AUTOSAVE, - LFUN_BACKSPACE, - LFUN_BACKSPACE_SKIP, - LFUN_BIBDB_ADD, - LFUN_BIBDB_DEL, - LFUN_BIBTEX_STYLE, - LFUN_BOLD, - LFUN_BREAKLINE, - LFUN_BREAKPARAGRAPH, - LFUN_BREAKPARAGRAPHKEEPLAYOUT, - LFUN_BREAKPARAGRAPH_SKIP, - LFUN_BREVE, - LFUN_BUFFERBULLETSSELECT, - LFUN_CAPITALIZE_WORD, - LFUN_CARON, - LFUN_CEDILLA, - LFUN_CHILDINSERT, - LFUN_CIRCLE, - LFUN_CIRCUMFLEX, - LFUN_CODE, - LFUN_CUT, - LFUN_DEFAULT, - LFUN_DELETE, - LFUN_DELETE_LINE_FORWARD, - LFUN_DELETE_SKIP, - LFUN_DELETE_WORD_BACKWARD, - LFUN_DELETE_WORD_FORWARD, - LFUN_DEPTH, - LFUN_DEPTH_MIN, - LFUN_DEPTH_PLUS, - LFUN_DOT, - LFUN_EMPH, - LFUN_END_OF_SENTENCE, - LFUN_FIGURE, - LFUN_FILE_INSERT, - LFUN_FILE_INSERT_ASCII, - LFUN_FONT_SIZE, - LFUN_FOOTMELT, - LFUN_FREE, - LFUN_GRAVE, - LFUN_HFILL, - LFUN_HTMLURL, - LFUN_HUNG_UMLAUT, - LFUN_HYPHENATION, - LFUN_INDEX_INSERT, - LFUN_INDEX_INSERT_LAST, - LFUN_INDEX_PRINT, - LFUN_INSERTFOOTNOTE, - LFUN_INSERT_BIBTEX, - LFUN_INSERT_CITATION, -#if 0 - LFUN_INSERT_INSET_LATEX, -#endif - LFUN_INSERT_LABEL, - LFUN_INSERT_MATH, - LFUN_INSERT_MATRIX, - LFUN_INSERT_NOTE, - LFUN_INSERT_REF, - LFUN_LAYOUT, - LFUN_LAYOUTNO, - LFUN_LAYOUT_CHARACTER, - LFUN_LAYOUT_PASTE, - LFUN_LAYOUT_QUOTES, - LFUN_LDOTS, - LFUN_LOA_INSERT, - LFUN_LOF_INSERT, - LFUN_LOT_INSERT, - LFUN_LOWCASE_WORD, - LFUN_MACRON, - LFUN_MARGINMELT, - LFUN_MATH_DELIM, - LFUN_MATH_DISPLAY, - LFUN_MATH_MACRO, - LFUN_MATH_MACROARG, - LFUN_MATH_MODE, - LFUN_MATH_NONUMBER, - LFUN_MATH_NUMBER, - LFUN_MATH_SIZE, - LFUN_MELT, - LFUN_MENU_SEPARATOR, - LFUN_NOUN, - LFUN_OGONEK, - LFUN_PARENTINSERT, - LFUN_PASTE, - LFUN_PASTESELECTION, - LFUN_PROTECTEDSPACE, - LFUN_QUOTE, - LFUN_REDO, - LFUN_REFTOGGLE, - LFUN_ROMAN, - LFUN_SANS, - LFUN_SELFINSERT, - LFUN_SPECIAL_CARON, - LFUN_TABINSERT, - LFUN_TABLE, - LFUN_TEX, - LFUN_TIE, - LFUN_TILDE, - LFUN_TOC_INSERT, - LFUN_UMLAUT, - LFUN_UNDERBAR, - LFUN_UNDERDOT, - LFUN_UNDERLINE, - LFUN_UNDO, - LFUN_UNKNOWN_ACTION, - LFUN_UPCASE_WORD, - LFUN_URL, - LFUN_VECTOR, - LFUN_WORDFINDFORWARD, - LFUN_WORDFINDBACKWARD -}; - -int LyXAction::psd_idx = 0; -kb_func_table const * LyXAction::lyx_func_table = &::lyx_func_table[0]; -kb_func_table* LyXAction::lyx_func_args = 0; - -/* === code ============================================================== */ - -/* This routines allow binding actions with argument. - * Provisionally a fixed size array and global functions are used. - * [asierra 20Jan96] - */ -#define MAX_PSEUDO_ACTION 128 +void LyXAction::newFunc(kb_action action, string const & name, + string const & helpText, unsigned int attrib) +{ + lyx_func_map[name] = action; + func_info tmpinfo; + tmpinfo.name = name; + tmpinfo.attrib = attrib; + tmpinfo.helpText = helpText; + lyx_info_map[action] = tmpinfo; +} -LyXAction::LyXAction() +void LyXAction::init() { - lyx_func_args= new kb_func_table[MAX_PSEUDO_ACTION]; - funcCount = sizeof(::lyx_func_table) / sizeof(::kb_func_table); + static bool init = false; + if (init) return; + + newFunc(LFUN_ACUTE, "accent-acute", + "", Noop); + newFunc( LFUN_BREVE, "accent-breve", + "", Noop); + newFunc( LFUN_CARON,"accent-caron", + "", Noop); + newFunc(LFUN_CEDILLA,"accent-cedilla", + "", Noop); + newFunc(LFUN_CIRCLE,"accent-circle", + "", Noop); + newFunc(LFUN_CIRCUMFLEX,"accent-circumflex", + "", Noop); + newFunc(LFUN_DOT,"accent-dot", + "", Noop); + newFunc(LFUN_GRAVE,"accent-grave", + "", Noop); + newFunc(LFUN_HUNG_UMLAUT,"accent-hungarian-umlaut", + "", Noop); + newFunc(LFUN_MACRON,"accent-macron", + "", Noop); + newFunc(LFUN_OGONEK,"accent-ogonek", + "", Noop); + newFunc(LFUN_SPECIAL_CARON,"accent-special-caron", + "", Noop); + newFunc(LFUN_TIE,"accent-tie", + "", Noop); + newFunc(LFUN_TILDE,"accent-tilde", + "", Noop); + newFunc(LFUN_UMLAUT,"accent-umlaut", + "", Noop); + newFunc(LFUN_UNDERBAR,"accent-underbar", + "", Noop); + newFunc(LFUN_UNDERDOT,"accent-underdot", + "", Noop); + newFunc(LFUN_VECTOR,"accent-vector", + "", Noop); + newFunc(LFUN_APPENDIX,"appendix", + _("Insert appendix"), Noop); + newFunc(LFUN_APROPOS,"apropos", + _("Describe command"), NoBuffer|ReadOnly); + newFunc(LFUN_LEFTSEL,"backward-select", + _("Select previous char"), ReadOnly); + newFunc(LFUN_BIBDB_ADD,"bibtex-database-add", + "", Noop); + newFunc(LFUN_BIBDB_DEL,"bibtex-database-del", + "", Noop); + newFunc(LFUN_INSERT_BIBTEX,"bibtex-insert", + _("Insert bibtex"), Noop); + newFunc(LFUN_BIBTEX_STYLE,"bibtex-style", + "", Noop); + newFunc(LFUN_BREAKLINE,"break-line", + "", Noop); + newFunc(LFUN_BREAKPARAGRAPH,"break-paragraph", + "", Noop); + newFunc(LFUN_BREAKPARAGRAPHKEEPLAYOUT,"break-paragraph-keep-layout", + "", Noop); + newFunc(LFUN_BREAKPARAGRAPH_SKIP,"break-paragraph-skip", + "", Noop); + newFunc(LFUN_BUILDPROG, "build-program", _("Build program"), Noop); + newFunc(LFUN_AUTOSAVE,"buffer-auto-save", + _("Autosave"), Noop); + newFunc(LFUN_BEGINNINGBUF,"buffer-begin", + _("Go to beginning of document"), ReadOnly); + newFunc(LFUN_BEGINNINGBUFSEL,"buffer-begin-select", + _("Select to beginning of document"), ReadOnly); + newFunc(LFUN_CHILDINSERT,"buffer-child-insert", + "", Noop); + newFunc(LFUN_CHILDOPEN,"buffer-child-open", + "", ReadOnly); + newFunc(LFUN_RUNCHKTEX,"buffer-chktex", + _("Check TeX"), ReadOnly); + newFunc(LFUN_CLOSEBUFFER,"buffer-close", + _("Close"), ReadOnly); + newFunc(LFUN_ENDBUF,"buffer-end", + _("Go to end of document"), ReadOnly); + newFunc(LFUN_ENDBUFSEL,"buffer-end-select", + _("Select to end of document"), ReadOnly); + newFunc(LFUN_EXPORT,"buffer-export", + _("Export to"), ReadOnly); + newFunc(LFUN_FAX,"buffer-fax", + _("Fax"), ReadOnly); + //newFunc(LFUN_INSERTFLOAT,"float-insert", + // "", Noop); + newFunc(LFUN_INSERTFOOTNOTE, "buffer-float-insert", "", Noop); + newFunc(LFUN_IMPORT,"buffer-import", + _("Import document"), NoBuffer); + newFunc(LFUN_BUFFERBULLETSSELECT, "buffer-itemize-bullets-select", + "", Noop); + newFunc( LFUN_MENUNEW,"buffer-new", + _("New document") , NoBuffer); + newFunc(LFUN_MENUNEWTMPLT,"buffer-new-template", + _("New document from template"), NoBuffer); + newFunc(LFUN_MENUOPEN,"buffer-open", + _("Open"), NoBuffer); + newFunc(LFUN_PREVBUFFER,"buffer-previous", + _("Switch to previous document"), ReadOnly); + //newFunc(LFUN_SWITCHBUFFER,"buffer-switch", + // _("Switch to an open document"), ReadOnly); + newFunc(LFUN_MENUPRINT,"buffer-print", + _("Print"), ReadOnly); + newFunc(LFUN_MENURELOAD,"buffer-reload", + _("Revert to saved"), ReadOnly); + newFunc(LFUN_READ_ONLY_TOGGLE,"buffer-toggle-read-only", + _("Toggle read-only"), ReadOnly); + newFunc(LFUN_RUNLATEX,"buffer-typeset", + _("Update DVI"), ReadOnly); + newFunc(LFUN_RUNDVIPS,"buffer-typeset-ps", + _("Update PostScript"), ReadOnly); + newFunc(LFUN_PREVIEW,"buffer-view", + _("View DVI") , ReadOnly); + newFunc(LFUN_PREVIEWPS,"buffer-view-ps", + _("View PostScript") , ReadOnly); + newFunc(LFUN_MENUWRITE,"buffer-write", + _("Save"), ReadOnly); + newFunc(LFUN_MENUWRITEAS,"buffer-write-as", + _("Save As"), ReadOnly); + newFunc(LFUN_CANCEL,"cancel", + _("Cancel"), NoBuffer); + newFunc(LFUN_LEFT,"char-backward", + _("Go one char back"), ReadOnly); + newFunc(LFUN_RIGHT,"char-forward", + _("Go one char forward"), ReadOnly); + newFunc(LFUN_INSERT_CITATION,"citation-insert", + _("Insert citation"), Noop); + newFunc(LFUN_EXEC_COMMAND,"command-execute", + "", NoBuffer); + newFunc(LFUN_PREFIX,"command-prefix", + _("Execute command"), NoBuffer); + newFunc(LFUN_SEQUENCE, "command-sequence", "", Noop); + newFunc(LFUN_COPY,"copy", + _("Copy"), ReadOnly); + newFunc(LFUN_CUT,"cut", + _("Cut"), Noop); + newFunc(LFUN_BACKSPACE,"delete-backward", + "", Noop); + newFunc(LFUN_BACKSPACE_SKIP,"delete-backward-skip", + "", Noop); + newFunc(LFUN_DELETE,"delete-forward", + "", Noop); + newFunc(LFUN_DELETE_SKIP,"delete-forward-skip", + "", Noop); + newFunc(LFUN_DEPTH_MIN,"depth-decrement", + _("Decrement environment depth"), Noop); + newFunc(LFUN_DEPTH_PLUS,"depth-increment", + _("Increment environment depth"), Noop); + newFunc(LFUN_DEPTH,"depth-next", + _("Change environment depth"), Noop); + newFunc(LFUN_LDOTS,"dots-insert", + _("Insert ... dots"), Noop); + newFunc(LFUN_DOWN,"down", + _("Go down"), ReadOnly); + newFunc(LFUN_DOWNSEL,"down-select", + _("Select next line"), ReadOnly); + newFunc(LFUN_DROP_LAYOUTS_CHOICE,"drop-layouts-choice", + _("Choose Paragraph Environment"), ReadOnly); + newFunc(LFUN_END_OF_SENTENCE,"end-of-sentence-period-insert", + _("Insert end of sentence period"), Noop); + newFunc(LFUN_GOTOERROR,"error-next", + _("Go to next error"), Noop); + newFunc(LFUN_REMOVEERRORS,"error-remove-all", + _("Remove all error boxes"), ReadOnly); + newFunc(LFUN_FIGURE,"figure-insert", + _("Insert Figure"), Noop); + newFunc(LFUN_FILE_INSERT,"file-insert", + "", Noop); + newFunc(LFUN_FILE_INSERT_ASCII,"file-insert-ascii", + "", Noop); + newFunc(LFUN_FILE_NEW,"file-new", + "", NoBuffer); + newFunc(LFUN_FILE_OPEN,"file-open", + "", NoBuffer); + newFunc( LFUN_MENUSEARCH,"find-replace", + _("Find & Replace") , Noop); + newFunc(LFUN_BOLD,"font-bold", + _("Toggle bold"), Noop); + newFunc(LFUN_CODE,"font-code", + _("Toggle code style"), Noop); + newFunc(LFUN_DEFAULT,"font-default", + _("Default font style"), Noop); + newFunc(LFUN_EMPH,"font-emph", + _("Toggle emphasize"), Noop); + newFunc(LFUN_FREE,"font-free", + _("Toggle user defined style"), Noop); + newFunc(LFUN_NOUN,"font-noun", + _("Toggle noun style"), Noop); + newFunc(LFUN_ROMAN,"font-roman", + _("Toggle roman font style"), Noop); + newFunc(LFUN_SANS,"font-sans", + _("Toggle sans font style"), Noop); + newFunc(LFUN_FONT_SIZE,"font-size", + _("Set font size"), Noop); + newFunc(LFUN_FONT_STATE,"font-state", + _("Show font state"), ReadOnly); + newFunc(LFUN_UNDERLINE,"font-underline", + _("Toggle font underline"), Noop); + newFunc(LFUN_FOOTMELT,"footnote-insert", + _("Insert Footnote"), Noop); + newFunc(LFUN_RIGHTSEL,"forward-select", + _("Select next char"), ReadOnly); + newFunc(LFUN_HFILL,"hfill-insert", + _("Insert horizontal fill"), Noop); + newFunc(LFUN_HTMLURL,"html-insert", + "", Noop); + newFunc(LFUN_HYPHENATION,"hyphenation-point-insert", + _("Insert hyphenation point"), Noop); + newFunc(LFUN_INDEX_INSERT,"index-insert", + _("Insert index item"), Noop); + newFunc(LFUN_INDEX_INSERT_LAST, "index-insert-last", + _("Insert last index item"), Noop); + newFunc(LFUN_INDEX_PRINT,"index-print", + _("Insert index list"), Noop); + newFunc(LFUN_KMAP_OFF,"keymap-off", + _("Turn off keymap"), ReadOnly); + newFunc(LFUN_KMAP_PRIM,"keymap-primary", + _("Use primary keymap"), ReadOnly); + newFunc(LFUN_KMAP_SEC,"keymap-secondary", + _("Use secondary keymap"), ReadOnly); + newFunc(LFUN_KMAP_TOGGLE,"keymap-toggle", + _("Toggle keymap"), ReadOnly); + newFunc(LFUN_INSERT_LABEL,"label-insert", + _("Insert Label"), Noop); + newFunc(LFUN_LATEX_LOG,"latex-view-log", + _("View LaTeX log"), ReadOnly); + newFunc(LFUN_LAYOUT,"layout", + "", Noop); + newFunc(LFUN_LAYOUT_CHARACTER,"layout-character", + "", Noop); + newFunc(LFUN_LAYOUT_COPY,"layout-copy", + _("Copy paragraph environment type"), Noop); + newFunc(LFUN_LAYOUT_DOCUMENT,"layout-document", + "", ReadOnly); + newFunc(LFUN_LAYOUTNO,"layout-number", + "", Noop); // internal only + newFunc(LFUN_LAYOUT_PARAGRAPH,"layout-paragraph", + "", ReadOnly); + newFunc(LFUN_LAYOUT_PAPER, "layout-paper", "", ReadOnly); + newFunc(LFUN_LAYOUT_PASTE,"layout-paste", + _("Paste paragraph environment type"), Noop); + newFunc(LFUN_LAYOUT_PREAMBLE,"layout-preamble", + "", ReadOnly); + newFunc(LFUN_LAYOUT_QUOTES, "layout-quotes", "", ReadOnly); + newFunc(LFUN_LAYOUT_SAVE_DEFAULT, "layout-save-default", + "", ReadOnly); + newFunc(LFUN_LAYOUT_TABLE,"layout-table", + "", Noop); + newFunc(LFUN_HOME,"line-begin", + _("Go to beginning of line"), ReadOnly); + newFunc(LFUN_HOMESEL,"line-begin-select", + _("Select to beginning of line"), ReadOnly); + newFunc(LFUN_DELETE_LINE_FORWARD,"line-delete-forward", + "", Noop); + newFunc(LFUN_END,"line-end", + _("Go to end of line"), ReadOnly); + newFunc(LFUN_ENDSEL,"line-end-select", + _("Select to end of line"), ReadOnly); + newFunc(LFUN_LOA_INSERT,"loa-insert", + _("Insert list of algorithms"), Noop); + newFunc(LFUN_LOF_INSERT,"lof-insert", + _("Insert list of figures"), Noop); + newFunc(LFUN_LOT_INSERT,"lot-insert", + _("Insert list of tables"), Noop); + newFunc(LFUN_QUIT,"lyx-quit", + _("Exit"), NoBuffer); + newFunc(LFUN_MARGINMELT,"marginpar-insert", + _("Insert Margin note"), Noop); + newFunc(LFUN_MARK_OFF,"mark-off", + "", ReadOnly); + newFunc(LFUN_MARK_ON,"mark-on", + "", ReadOnly); + newFunc(LFUN_SETMARK,"mark-toggle", + "", ReadOnly); + newFunc(LFUN_MATH_DELIM,"math-delim", + "", Noop); + newFunc(LFUN_MATH_DISPLAY,"math-display", + "", Noop); + newFunc(LFUN_GREEK,"math-greek", + _("Math Greek"), Noop); + newFunc(LFUN_GREEK_TOGGLE,"math-greek-toggle", + "", Noop); + newFunc(LFUN_INSERT_MATH,"math-insert", + _("Insert math symbol"), Noop); + newFunc(LFUN_MATH_LIMITS,"math-limits", + "", Noop); + newFunc(LFUN_MATH_MACRO,"math-macro", + "", Noop); + newFunc(LFUN_MATH_MACROARG,"math-macro-arg", + "", Noop); + newFunc(LFUN_INSERT_MATRIX,"math-matrix", + "", Noop); + newFunc(LFUN_MATH_MODE,"math-mode", + _("Math mode"), Noop); + //newFunc(LFUN_MATH_PANEL,"math-panel", + // _("Math panel"), Noop); + newFunc(LFUN_MATH_NONUMBER,"math-nonumber", + "", Noop); + newFunc(LFUN_MATH_NUMBER,"math-number", + "", Noop); + newFunc(LFUN_MATH_SIZE,"math-size", + "", Noop); + newFunc(LFUN_MELT,"melt", + _("Melt"), Noop); + newFunc(LFUN_MENU_OPEN_BY_NAME,"menu-open", + "", NoBuffer); + newFunc(LFUN_MENU_SEPARATOR, "menu-separator-insert", "", Noop); + newFunc(LFUN_META_FAKE,"meta-prefix", + "", NoBuffer); + newFunc(LFUN_INSERT_NOTE,"note-insert", + "", Noop); + newFunc(LFUN_GOTONOTE,"note-next", + "", ReadOnly); + newFunc(LFUN_OPENSTUFF,"open-stuff", + "", ReadOnly); + newFunc(LFUN_DOWN_PARAGRAPH,"paragraph-down", + _("Go one paragraph down"), ReadOnly); + newFunc(LFUN_DOWN_PARAGRAPHSEL,"paragraph-down-select", + _("Select next paragraph"), ReadOnly); + newFunc(LFUN_UP_PARAGRAPH,"paragraph-up", + _("Go one paragraph up"), ReadOnly); + newFunc(LFUN_UP_PARAGRAPHSEL,"paragraph-up-select", + _("Select previous paragraph"), ReadOnly); + newFunc(LFUN_PARENTINSERT,"parent-insert", + "", Noop); + newFunc( LFUN_PASTE,"paste", + _("Paste") , Noop); + newFunc(LFUN_PASTESELECTION,"primary-selection-paste", + "", Noop); + newFunc(LFUN_PROTECTEDSPACE,"protected-space-insert", + _("Insert protected space"), Noop); + newFunc(LFUN_QUOTE,"quote-insert", + _("Insert quote"), Noop); + newFunc(LFUN_RECONFIGURE,"reconfigure", + _("Reconfigure"), NoBuffer); + newFunc(LFUN_REDO,"redo", + _("Redo"), Noop); + newFunc(LFUN_REFBACK,"reference-back", + "", ReadOnly); + newFunc(LFUN_REFGOTO,"reference-goto", + "", ReadOnly); + newFunc(LFUN_INSERT_REF,"reference-insert", + _("Insert cross reference"), Noop); + newFunc(LFUN_REFTOGGLE,"reference-toggle", + "", Noop); + newFunc(LFUN_NEXT,"screen-down", + "", ReadOnly); + newFunc(LFUN_NEXTSEL,"screen-down-select", + "", ReadOnly); + newFunc(LFUN_CENTER,"screen-recenter", + "", ReadOnly); + newFunc(LFUN_PRIOR,"screen-up", + "", ReadOnly); + newFunc(LFUN_PRIORSEL,"screen-up-select", + "", ReadOnly); + newFunc(LFUN_SELFINSERT,"self-insert", + "", Noop); + newFunc(LFUN_CHARATCURSOR,"server-char-after", + "", ReadOnly); + newFunc(LFUN_GETFONT,"server-get-font", + "", ReadOnly); + newFunc(LFUN_GETLATEX,"server-get-latex", + "", ReadOnly); + newFunc(LFUN_GETLAYOUT,"server-get-layout", + "", ReadOnly); + newFunc(LFUN_GETNAME,"server-get-name", + "", ReadOnly); + newFunc(LFUN_GETTIP,"server-get-tip", + "", ReadOnly); + newFunc(LFUN_GETXY,"server-get-xy", + "", ReadOnly); + newFunc(LFUN_GOTOFILEROW, "server-goto-file-row", "", Noop); + newFunc(LFUN_NOTIFY,"server-notify", + "", ReadOnly); + newFunc(LFUN_SETXY,"server-set-xy", + "", ReadOnly); + newFunc(LFUN_SPELLCHECK,"spellchecker", + "", Noop); + newFunc(LFUN_INSERT_MATH,"symbol-insert", + "", Noop); + newFunc(LFUN_TAB,"tab-forward", + "", Noop); + newFunc(LFUN_TABINSERT,"tab-insert", + "", Noop); + newFunc(LFUN_TABLE,"table-insert", + _("Insert Table"), Noop); + newFunc(LFUN_TEX,"tex-mode", + _("Toggle TeX style"), Noop); + newFunc(LFUN_TOC_INSERT,"toc-insert", + _("Insert table of contents"), Noop); + newFunc(LFUN_TOCVIEW,"toc-view", + _("View table of contents"), ReadOnly); + newFunc(LFUN_TOGGLECURSORFOLLOW,"toggle-cursor-follows-scrollbar", + _("Toggle cursor does/doesn't follow the scrollbar"), + ReadOnly); + newFunc(LFUN_ADD_TO_TOOLBAR,"toolbar-add-to", + "", NoBuffer); + newFunc(LFUN_PUSH_TOOLBAR,"toolbar-push", + "", NoBuffer); + newFunc(LFUN_UNDO,"undo", + _("Undo"), Noop); + newFunc(LFUN_UP,"up", + "", ReadOnly); + newFunc(LFUN_UPSEL,"up-select", + "", ReadOnly); + newFunc(LFUN_URL,"url-insert", + "", Noop); + newFunc(LFUN_VC_CHECKIN,"vc-check-in", + "", ReadOnly); + newFunc(LFUN_VC_CHECKOUT,"vc-check-out", + "", ReadOnly); + newFunc(LFUN_VC_HISTORY,"vc-history", + "", ReadOnly); + newFunc(LFUN_VC_REGISTER,"vc-register", + _("Register document under version control"), ReadOnly); + newFunc(LFUN_VC_REVERT,"vc-revert", + "", ReadOnly); + newFunc(LFUN_VC_UNDO,"vc-undo-last", + "", ReadOnly); + newFunc(LFUN_WORDLEFT,"word-backward", + "", ReadOnly); + newFunc(LFUN_WORDLEFTSEL,"word-backward-select", + "", ReadOnly); + newFunc(LFUN_CAPITALIZE_WORD,"word-capitalize", + "", Noop); + newFunc(LFUN_DELETE_WORD_BACKWARD,"word-delete-backward", + "", Noop); + newFunc(LFUN_DELETE_WORD_FORWARD,"word-delete-forward", + "", Noop); + newFunc(LFUN_WORDFINDBACKWARD,"word-find-backward", + "", ReadOnly); + newFunc(LFUN_WORDFINDFORWARD,"word-find-forward", + "", ReadOnly); + newFunc(LFUN_WORDRIGHT,"word-forward", + "", ReadOnly); + newFunc(LFUN_WORDRIGHTSEL,"word-forward-select", + "", ReadOnly); + newFunc(LFUN_LOWCASE_WORD,"word-lowcase", + "", Noop); + newFunc(LFUN_UPCASE_WORD,"word-upcase", + "", Noop); + + init = true; } -LyXAction::~LyXAction() +LyXAction::LyXAction() { - if (lyx_func_args) { -// This is wrong, so I'll just disable it for now. -// The problem is that we might free memory twice in some situations... -// It's better to leak a bit that to crash. (Asger) -// for (int i= 0; i < psd_idx; i++) { -// free(lyx_func_args[i].name); -// } - delete[] lyx_func_args; - lyx_func_args = 0; - } + init(); } -// Search for an existent pseudoaction, return -1 if it doesn't exist. -int LyXAction::searchActionArg(kb_action action, char const *arg) +// Search for an existent pseudoaction, return LFUN_UNKNOWN_ACTION +// if it doesn't exist. +int LyXAction::searchActionArg(kb_action action, string const & arg) const { - kb_func_table *tb = &lyx_func_args[0]; - for (int i= 0; iaction && !strcmp(tb->name, arg)) { - - lyxerr[Debug::KEY] << "Pseudoaction already exist[" - << action << '|' - << arg << ']' << endl; + arg_map::const_iterator pit = lyx_arg_map.find(action); - return LFUN_LASTACTION+i; - } - tb++; + if (pit == lyx_arg_map.end()) { + // the action does not have any pseudoactions + lyxerr[Debug::INFO] << "Action " << action + << " does not have any pseudo actions.\n"; + return LFUN_UNKNOWN_ACTION; } - return -1; + + arg_item::const_iterator aci = (*pit).second.find(arg); + + if (aci == (*pit).second.end()) { + // the action does not have any pseudoactions with this arg + lyxerr[Debug::INFO] + << "Action " << action + << "does not have any pseudoactions with arg " + << arg << '\n'; + return LFUN_UNKNOWN_ACTION; + } + + // pseudo action exist + lyxerr[Debug::INFO] << "Pseudoaction exist[" + << action << '|' + << arg << "] = " << (*aci).second << '\n'; + + return (*aci).second; } // Returns a pseudo-action given an action and its argument. -int LyXAction::getPseudoAction(kb_action action, char const *arg) +int LyXAction::getPseudoAction(kb_action action, string const & arg) const { - // Check if the pseudo-action already exist. int psdaction = searchActionArg(action, arg); - - if (psdaction >= 0) return psdaction; - if (psd_idx>= MAX_PSEUDO_ACTION) { - lyxerr << "Lyx Error: No more pseudo-actions allowed" - << " Tell the developers." << endl; - return -1; - } - lyx_func_args[psd_idx].name = strdup(arg); - lyx_func_args[psd_idx].action = action; - psd_idx++; - return LFUN_LASTACTION+psd_idx-1; + if (isPseudoAction(psdaction)) return psdaction; + + static unsigned int pseudo_counter = LFUN_LASTACTION; + + // Create new pseudo action. + pseudo_func tmp_p; + tmp_p.action = action; + tmp_p.arg = arg; + lyx_pseudo_map[++pseudo_counter] = tmp_p; + + // First ensure that the action is in lyx_arg_map; + lyx_arg_map[action]; + // get the arg_item map + arg_map::iterator ami = lyx_arg_map.find(action); + // put the new pseudo function in it + (*ami).second[arg] = pseudo_counter; + + lyxerr[Debug::INFO] << "Creating new pseudoaction " + << pseudo_counter << " for [" << action + << '|' << arg << "]\n"; + + return pseudo_counter; } // Retrieves the real action and its argument. -int LyXAction::retrieveActionArg(int i, char const** arg) +// perhaps a pair should be returned? +kb_action LyXAction::retrieveActionArg(int pseudo, string & arg) const { - i -= LFUN_LASTACTION; - if (i >= 0 && i (func), ' '); // const cast to - // help a sun complier, will go away when this func is rewritten - // to use std::containers and std::string. - - if (arg) *(arg++) = '\0'; - - while (l < r) { - last_action_idx = (l+r)/2; - k = strcmp(lyx_func_table[last_action_idx].name, func); - if (k == 0) { - action = lyx_func_table[last_action_idx].action; - break; - } else - if (k<0) l = last_action_idx+1; else r = last_action_idx; - } - if (arg && action >= 0) { - action = getPseudoAction((kb_action)action, arg); - lyxerr[Debug::KEY] << "Pseudo action_arg[" - << action << '|' - << arg << ']' << endl; + if (func.empty()) return LFUN_NOACTION; + + // split action and arg + string actstr; + string argstr = split(func, actstr, ' '); + lyxerr[Debug::INIT] << "Action: " << actstr << '\n'; + lyxerr[Debug::INIT] << "Arg : " << argstr << '\n'; + + func_map::const_iterator fit = lyx_func_map.find(actstr); + + if (!argstr.empty() && fit != lyx_func_map.end()) { + // might be pseudo (or create one) + return getPseudoAction((*fit).second, argstr); } - return action; + + return fit != lyx_func_map.end() ? (*fit).second : LFUN_UNKNOWN_ACTION; } -int LyXAction::getApproxFunc(char const *func) +#warning Not working as it should. +int LyXAction::getApproxFunc(string const & func) const + // This func should perhaps also be able to return a list of all + // actions that has func as a prefix. That should actually be quite + // easy, just let it return a vector or something. { - int action = LookupFunc(func); - if (action<0) { - int k = strncmp(lyx_func_table[last_action_idx].name, - func, strlen(func)); - if (k<0 && last_action_idx0 && last_action_idx>0) - last_action_idx--; + int action = LookupFunc(func); + if (action == LFUN_UNKNOWN_ACTION) { + // func is not an action, but perhaps it is + // part of one...check if it is prefix if one of the + // actions. + // Checking for prefix is not so simple, but + // using a simple bounding function gives + // a similar result. [ale 19981103] + func_map::const_iterator fit = + lyx_func_map.lower_bound(func); + + if (fit != lyx_func_map.end()) { + action = (*fit).second; + } + } else { // Go get the next function + func_map::const_iterator fit = + lyx_func_map.upper_bound(func); + + if (fit != lyx_func_map.end()) { + action = (*fit).second; + } + } - action = lyx_func_table[last_action_idx].action; - } else if (last_action_idx= 0 && action= funcCount) - goto no_desc; - - if (helpTexts[action].action == action) { - return helpTexts[action].name; - } - // + string(' ') + int(is_ro) + string(']')); - no_desc: - // In an ideal world, this never happens: - return _("No description available!"); -} - + if (help.empty()) { + help = _("No description available!"); + } else if (!arg.empty()) { + help += ' '; + help += arg; + } -// Function to compare items from the attrib table. -extern "C" int actioncomp(const void *a, const void *b) -{ - int const *ia= (int const*)a, *ib= (int const*)b; - return (*ia)-(*ib); + return help; } - -bool LyXAction::isFuncRO(kb_action action) const + +bool LyXAction::funcHasFlag(kb_action action, + LyXAction::func_attrib flag) const { - static bool is_sorted = false; - static int fCount = sizeof(::func_attrib_table) / sizeof(kb_action); - - if (!is_sorted) { - qsort(func_attrib_table, fCount, sizeof(kb_action), actioncomp); - is_sorted = true; -// for (int i= 0; i #include "commandtags.h" - -class LString; - -/// Command name - action -struct kb_func_table { - /// - char const * name; - /// - kb_action action; -}; - +#include "LString.h" /** This class encapsulates LyX action and user command operations. */ class LyXAction { +private: + /// + struct func_info { + string name; + unsigned int attrib; + string helpText; + }; + + /// + struct pseudo_func { + kb_action action; + string arg; + }; public: /// - LyXAction(); + typedef map > func_map; + /// + typedef map > info_map; + /// + typedef map > pseudo_map; + /// + typedef map > arg_item; /// - ~LyXAction(); + typedef map > arg_map; + + /// + enum func_attrib { + /// nothing special about this func + Noop = 0, + /// can not be used in RO mode (perhaps this should change) + ReadOnly = 1, // , + /// Can be used when there is no document open + NoBuffer = 2, + //Interactive = 2, // Is interactive (requires a GUI) + Argument=4 // Requires argument + //MathOnly = 8, // Only math mode + //EtcEtc = ... // Or other attributes... + }; + + /// + LyXAction(); /** Returns an action tag from a string. Returns kb_action. Include arguments in func_name ONLY if you want to create new pseudo actions. */ - int LookupFunc(char const * func_name); + int LookupFunc(string const & func_name) const; /** Returns an action tag which name is the most similar to a string. Don't include arguments, they would be ignored. */ - int getApproxFunc(char const * func); + int getApproxFunc(string const & func) const; /** Returns an action name the most similar to a string. Don't include arguments, they would be ignored. */ - char const * getApproxFuncName(char const * func); + string getApproxFuncName(string const & func) const; /// Returns a pseudo-action given an action and its argument. - int getPseudoAction(kb_action action, char const * arg); + int getPseudoAction(kb_action action, string const & arg) const; /// Retrieves the real action and its argument. - int retrieveActionArg(int i, char const ** arg); + kb_action retrieveActionArg(int i, string & arg) const; /// Search for an existent pseudoaction, return -1 if it doesn't exist. - int searchActionArg(kb_action action, char const * arg); + int searchActionArg(kb_action action, string const & arg) const; /// Check if a value is a pseudo-action. - bool isPseudoAction(int); + bool isPseudoAction(int) const; - /// Not sure if this function should be here - int bindKey(char const * seq, int action); - /// Return the name associated with command - char const * getActionName(int action) const; + string getActionName(int action) const; - /// Return one line help text associated with command - char const * helpText(kb_action action) const; + /// Return one line help text associated with (pseudo)action + string helpText(int action) const; - /// True if the command is Read Only (not allowed for RO buffers) - bool isFuncRO(kb_action action) const; + /// True if the command has `flag' set + bool funcHasFlag(kb_action action, func_attrib flag) const; private: - - /// Standard commands - static kb_func_table const * lyx_func_table; - /// Number of commands - int funcCount; - /// Pseudoactions - static kb_func_table * lyx_func_args; - /// Pseudoaction index - static int psd_idx; - /// Last action index found - int last_action_idx; + /// + void init(); + /// + void newFunc(kb_action, string const & name, + string const & helpText, unsigned int attrib); + + /** This is a list of all the LyXFunc names with the + coresponding action number. It is usually only used by the + minibuffer or when assigning commands to keys during init. */ + func_map lyx_func_map; + + /** This is a mapping from action number to an object holding + info about this action. f.ex. helptext, command name (string), + command attributes (ro) */ + info_map lyx_info_map; + + /** A mapping from the automatically created pseudo action number + to the real action and its argument. */ + mutable pseudo_map lyx_pseudo_map; + + /** A (multi) mapping from the lyx action to all the generated + pseudofuncs and the arguments the action should use. */ + mutable arg_map lyx_arg_map; }; @@ -84,9 +120,9 @@ private: inline -bool LyXAction::isPseudoAction(int a) +bool LyXAction::isPseudoAction(int a) const { - return (a >= int(LFUN_LASTACTION)); + return a > int(LFUN_LASTACTION); } diff --git a/src/LyXView.C b/src/LyXView.C index d6af100d47..7124619326 100644 --- a/src/LyXView.C +++ b/src/LyXView.C @@ -80,12 +80,12 @@ void LyXView::redraw() { void LyXView::UpdateTimerCB(FL_OBJECT * ob, long) { LyXView * view = static_cast(ob->u_vdata); - if (!view->currentView()->available()) + if (!view->view()->available()) return; - if (!view->currentView()->getScreen() || !updatetimer) + if (!view->view()->getScreen() || !updatetimer) return; - view->currentView()->getScreen()->HideCursor(); + view->view()->getScreen()->HideCursor(); view->buffer()->update(-2); /* This update can happen, even when the work area has lost * the focus. So suppress the cursor in that case */ @@ -363,7 +363,7 @@ void LyXView::updateWindowTitle() { static string last_title = "LyX"; string title = "LyX"; - if (currentView()->available()) { + if (view()->available()) { string cur_title = buffer()->getFileName(); if (!cur_title.empty()){ title += ": " + OnlyFilename(cur_title); diff --git a/src/LyXView.h b/src/LyXView.h index 7bdc77815a..d7f954b30c 100644 --- a/src/LyXView.h +++ b/src/LyXView.h @@ -73,7 +73,7 @@ public: Buffer * buffer() const { return bufferview->buffer(); } /// - BufferView * currentView() { return bufferview; } + BufferView * view() { return bufferview; } /// returns a pointer to the form. FL_FORM * getForm() { return _form; } diff --git a/src/Makefile.am b/src/Makefile.am index b44c9a7f09..7304712dda 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,7 +3,7 @@ SUBDIRS = mathed insets support DISTCLEANFILES = libintl.h config.h MAINTAINERCLEANFILES = Makefile.in config.h.in bin_PROGRAMS = lyx -lyx_DEPENDENCIES = mathed/mathed.o insets/insets.o support/libsupport.a +lyx_DEPENDENCIES = mathed/libmathed.la insets/libinsets.la support/libsupport.la lyx_LDADD = $(lyx_DEPENDENCIES) @INTLLIBS@ $(LYX_LIBS) EXTRA_DIST = config.h.in stamp-h.in cheaders ETAGS_ARGS = --c++ diff --git a/src/buffer.C b/src/buffer.C index 2cb09c254d..1f4c33e441 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -1201,14 +1201,8 @@ bool Buffer::writeFile(string const & filename, bool flag) string userName(getUserName()) ; // write out a comment in the top of the file -// We do not print this anymore, since it annoys cvs and is useless -// anyway. It could even be seen as including private -// information without telling the user :) -- JMarc -// fprintf(file, -// "#This file was created by <%s> %s", -// userName.c_str(),(char*)date()); fprintf(file, - "#LyX 1.1 (C) 1995-1999 Matthias Ettrich" + "#LyX 1.1 Copyright 1995-1999 Matthias Ettrich" " and the LyX Team\n"); // at the very beginning the used lyx format @@ -3469,7 +3463,7 @@ void Buffer::insertErrors(TeXErrors & terr) if (texrowpar == 0) continue; - InsetError *new_inset = new InsetError(msgtxt); + InsetError * new_inset = new InsetError(msgtxt); text->SetCursorIntern(texrowpar, tmppos); text->InsertInset(new_inset); diff --git a/src/commandtags.h b/src/commandtags.h index cba72f8dc0..271805279b 100644 --- a/src/commandtags.h +++ b/src/commandtags.h @@ -246,4 +246,3 @@ enum kb_action { ostream & operator<<(ostream &, kb_action); #endif - diff --git a/src/error.C b/src/error.C deleted file mode 100644 index 22648ce922..0000000000 --- a/src/error.C +++ /dev/null @@ -1,36 +0,0 @@ -#include - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "error.h" -#include - -Error::Error(int level) // should loglevel also be an argument? -{ - debuglevel = level; - loglevel = 0; -} - - -void Error::setDebugLevel(int level) -{ - debuglevel = level; -} - - -void Error::debug(string const & msg, int level) -{ - if (debuglevel & level) - print(msg); - // should also print to the logfile -} - -void Error::print(string const & msg) -{ - if (!msg.empty()) - fprintf(stderr, "%s\n", msg.c_str()); -} - - diff --git a/src/error.h b/src/error.h deleted file mode 100644 index c82c6becb6..0000000000 --- a/src/error.h +++ /dev/null @@ -1,79 +0,0 @@ -// -*- C++ -*- - -#ifndef _ERROR_H_ -#define _ERROR_H_ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "LString.h" - -/// -class Error -{ -public: - /// - enum DEBUG_LEVELS { - /// - INFO = (1), // 1 - /// - INIT = (1 << 1), // 2 - /// - KEY = (1 << 2), // 4 - /// - TOOLBAR = (1 << 3), // 8 - /// - LEX_PARSER = (1 << 4), // 16 - /// - LYXRC = (1 << 5), // 32 - /// - KBMAP = (1 << 6), // 64 - /// - LATEX = (1 << 7), // 128 - /// - MATHED = (1 << 8), // 256 // Alejandro, please use this. - /// - FONT = (1 << 9), // 512 - /// - TCLASS = (1 << 10), // 1024 - /// - LYXVC = (1 << 11), // 2048 - /// - ROFF = (1 << 12), // 4096 - /// - LYXSERVER = (1 << 13), // 8192 - /// - ALL = (65535), // 2^16-1 - /// - ANY = ALL - }; - /// - Error(int level = 0); - /// - void setDebugLevel(int level); - /// Not implemented yet. - void setLogLevel(int level); - /// Not implemented yet. - void setLogFile(string const & filename); - /// - void debug(string const & msg, int level = INFO); // or ANY? - /// - bool debugging(int level = INFO) // or ANY? - { - return (bool)(debuglevel & level); - } - /// - void print(string const & msg); -protected: -private: - /// - int debuglevel; - /// - int loglevel; -}; - -/// The global instance of the Error class. -extern Error lyxerr; - -#endif diff --git a/src/filedlg.C b/src/filedlg.C index 63d2fbd960..388318e3c3 100644 --- a/src/filedlg.C +++ b/src/filedlg.C @@ -17,6 +17,10 @@ #include #include #include +#include +#include +using std::map; +using std::sort; #include "lyx_gui_misc.h" // CancelCloseCB #include "support/FileInfo.h" @@ -66,147 +70,101 @@ extern "C" int gettimeofday(struct timeval *, struct timezone *); #include "support/filetools.h" #include "filedlg.h" -static const long SIX_MONTH_SEC = 6L * 30L * 24L * 60L * 60L; // six months, in seconds +// six months, in seconds +static const long SIX_MONTH_SEC = 6L * 30L * 24L * 60L * 60L; static const long ONE_HOUR_SEC = 60L * 60L; // *** User cache class implementation +/// User cache class definition +class UserCache { +public: + /// seeks user name from group ID + string const & find(uid_t ID) const { + Users::const_iterator cit = users.find(ID); + if (cit == users.end()) { + add(ID); + return users[ID]; + } + return (*cit).second; + } +private: + /// + void add(uid_t ID) const { + string pszNewName; + struct passwd * pEntry; + + // gets user name + if ((pEntry = getpwuid(ID))) + pszNewName = pEntry->pw_name; + else { + pszNewName = tostr(ID); + } + + // adds new node + users[ID] = pszNewName; + } + /// + typedef map Users; + /// + mutable Users users; +}; + + +/// Group cache class definition +class GroupCache { +public: + /// seeks group name from group ID + string const & find(gid_t ID) const { + Groups::const_iterator cit = groups.find(ID); + if (cit == groups.end()) { + add(ID); + return groups[ID]; + } + return (*cit).second; + } +private: + /// + void add(gid_t ID) const { + string pszNewName; + struct group * pEntry; + + // gets user name + if ((pEntry = getgrgid(ID))) pszNewName = pEntry->gr_name; + else { + pszNewName = tostr(ID); + } + // adds new node + groups[ID] = pszNewName; + } + /// + typedef map Groups; + /// + mutable Groups groups; +}; -// global instance (user cache root) -UserCache lyxUserCache = UserCache(string(), 0, 0); +// static instances +static UserCache lyxUserCache; +static GroupCache lyxGroupCache; // some "C" wrappers around callbacks extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *, long lArgument); extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *, long); extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *, void *); -extern "C" int C_LyXDirEntryC_ldeCompProc(const void * r1, - const void * r2); - -// Add: creates a new user entry -UserCache * UserCache::Add(uid_t ID) -{ - string pszNewName; - struct passwd * pEntry; - - // gets user name - if ((pEntry = getpwuid(ID))) - pszNewName = pEntry->pw_name; - else { - pszNewName = tostr(ID); - } - - // adds new node - return new UserCache(pszNewName, ID, pRoot); -} -UserCache::UserCache(string const & pszName, uid_t ID, UserCache * pRoot) -{ - // links node - if (pRoot) { - this->pRoot = pRoot; - pNext = pRoot->pNext; - pRoot->pNext = this; - } else { - this->pRoot = this; - pNext = 0; +// compares two LyXDirEntry objects content (used for sort) +class comp_direntry { +public: + int operator()(LyXDirEntry const & r1, + LyXDirEntry const & r2) const { + bool r1d = suffixIs(r1.pszName, '/'); + bool r2d = suffixIs(r2.pszName, '/'); + if (r1d && !r2d) return 1; + if (!r1d && r2d) return 0; + return r1.pszName < r2.pszName; } +}; - // stores data - this->pszName = pszName; - this->ID = ID; -} - - -UserCache::~UserCache() -{ - if (pNext) delete pNext; -} - - -// Find: seeks user name from user ID -string UserCache::Find(uid_t ID) -{ - if ((!pszName.empty()) && (this->ID == ID)) return pszName; - if (pNext) return pNext->Find(ID); - - return pRoot->Add(ID)->pszName; -} - - -// *** Group cache class implementation - -// global instance (group cache root) -GroupCache lyxGroupCache = GroupCache(string(), 0, 0); - -// Add: creates a new group entry -GroupCache * GroupCache::Add(gid_t ID) -{ - string pszNewName; - struct group * pEntry; - - // gets user name - if ((pEntry = getgrgid(ID))) pszNewName = pEntry->gr_name; - else { - pszNewName = tostr(ID); - } - - // adds new node - return new GroupCache(pszNewName, ID, pRoot); -} - - -GroupCache::GroupCache(string const & pszName, gid_t ID, GroupCache * pRoot) -{ - // links node - if (pRoot) { - this->pRoot = pRoot; - pNext = pRoot->pNext; - pRoot->pNext = this; - } else { - this->pRoot = this; - pNext = 0; - } - - // stores data - this->pszName = pszName; - this->ID = ID; -} - - -GroupCache::~GroupCache() -{ - if (pNext) delete pNext; -} - - -// Find: seeks group name from group ID -string GroupCache::Find(gid_t ID) -{ - if ((!pszName.empty()) && (this->ID == ID)) return pszName; - if (pNext) return pNext->Find(ID); - - return pRoot->Add(ID)->pszName; -} - -// *** LyXDirEntry internal structure implementation - -// ldeCompProc: compares two LyXDirEntry objects content (used for qsort) -int LyXDirEntry::ldeCompProc(const LyXDirEntry * r1, - const LyXDirEntry * r2) -{ - bool r1d = suffixIs(r1->pszName, '/'); - bool r2d = suffixIs(r2->pszName, '/'); - if (r1d && !r2d) return -1; - if (!r1d && r2d) return 1; - return r1->pszName.compare(r2->pszName); -} - -extern "C" int C_LyXDirEntry_ldeCompProc(const void * r1, - const void * r2) -{ - return LyXDirEntry::ldeCompProc((const LyXDirEntry *)r1, - (const LyXDirEntry *)r2); -} // *** LyXFileDlg class implementation @@ -218,17 +176,8 @@ LyXFileDlg * LyXFileDlg::pCurrentDlg = 0; // Reread: updates dialog list to match class directory void LyXFileDlg::Reread() { - int i; - DIR * pDirectory; - struct dirent * pDirEntry; - string File; - string Buffer; - string Time; - char szMode[15]; - FileInfo fileInfo; - // Opens directory - pDirectory = opendir(pszDirectory.c_str()); + DIR * pDirectory = opendir(pszDirectory.c_str()); if (!pDirectory) { WriteFSAlert(_("Warning! Couldn't open directory."), pszDirectory); @@ -237,10 +186,7 @@ void LyXFileDlg::Reread() } // Clear the present namelist - if (pCurrentNames) { - delete [] pCurrentNames; - pCurrentNames = 0; - } + direntries.clear(); // Updates display fl_hide_object(pFileDlgForm->List); @@ -250,7 +196,9 @@ void LyXFileDlg::Reread() // Splits complete directory name into directories and compute depth iDepth = 0; string line, Temp; - File = pszDirectory; + char szMode[15]; + FileInfo fileInfo; + string File = pszDirectory; if (File != "/") { File = split(File, Temp, '/'); } @@ -262,18 +210,11 @@ void LyXFileDlg::Reread() ++iDepth; } - // Allocate names array - iNumNames = 0; - rewinddir(pDirectory); - while ((readdir(pDirectory))) ++iNumNames; - pCurrentNames = new LyXDirEntry[iNumNames]; - // Parses all entries of the given subdirectory - iNumNames = 0; time_t curTime = time(0); rewinddir(pDirectory); + struct dirent * pDirEntry; while ((pDirEntry = readdir(pDirectory))) { - bool isLink = false, isDir = false; // If the pattern doesn't start with a dot, skip hidden files @@ -294,11 +235,11 @@ void LyXFileDlg::Reread() fileInfo.newFile(File, true); fileInfo.modeString(szMode); unsigned int nlink = fileInfo.getNumberOfLinks(); - string user = lyxUserCache.Find(fileInfo.getUid()); - string group = lyxGroupCache.Find(fileInfo.getGid()); + string user = lyxUserCache.find(fileInfo.getUid()); + string group = lyxGroupCache.find(fileInfo.getGid()); time_t modtime = fileInfo.getModificationTime(); - Time = ctime(&modtime); + string Time = ctime(&modtime); if (curTime > fileInfo.getModificationTime() + SIX_MONTH_SEC || curTime < fileInfo.getModificationTime() @@ -314,7 +255,7 @@ void LyXFileDlg::Reread() Time.erase(16, string::npos); } - Buffer = string(szMode) + ' ' + + string Buffer = string(szMode) + ' ' + tostr(nlink) + ' ' + user + ' ' + group + ' ' + @@ -324,21 +265,21 @@ void LyXFileDlg::Reread() Buffer += fileInfo.typeIndicator(); if ((isLink = fileInfo.isLink())) { - string Link; - - if (LyXReadLink(File, Link)) { - Buffer += " -> "; - Buffer += Link; - - // This gives the FileType of the file that - // is really pointed too after resolving all - // symlinks. This is not necessarily the same - // as the type of Link (which could again be a - // link). Is that intended? - // JV 199902 - fileInfo.newFile(File); - Buffer += fileInfo.typeIndicator(); - } + string Link; + + if (LyXReadLink(File, Link)) { + Buffer += " -> "; + Buffer += Link; + + // This gives the FileType of the file that + // is really pointed too after resolving all + // symlinks. This is not necessarily the same + // as the type of Link (which could again be a + // link). Is that intended? + // JV 199902 + fileInfo.newFile(File); + Buffer += fileInfo.typeIndicator(); + } } // filters files according to pattern and type @@ -351,33 +292,35 @@ void LyXFileDlg::Reread() } else if (!(isDir = fileInfo.isDir())) continue; - // Note pszLsEntry is an string! - pCurrentNames[iNumNames].pszLsEntry = Buffer; + LyXDirEntry tmp; + // Note pszLsEntry is an string! + tmp.pszLsEntry = Buffer; // creates used name string temp = fname; if (isDir) temp += '/'; - pCurrentNames[iNumNames].pszName = temp; + tmp.pszName = temp; // creates displayed name temp = pDirEntry->d_name; if (isLink) temp += '@'; else temp += fileInfo.typeIndicator(); - - pCurrentNames[iNumNames++].pszDisplayed = temp; + tmp.pszDisplayed = temp; + + direntries.push_back(tmp); } closedir(pDirectory); // Sort the names - qsort(pCurrentNames, iNumNames, sizeof(LyXDirEntry), - C_LyXDirEntry_ldeCompProc); - + sort(direntries.begin(), direntries.end(), comp_direntry()); + // Add them to directory box - for (i = 0; i < iNumNames; ++i) { - string temp = line + pCurrentNames[i].pszDisplayed; + for (DirEntries::const_iterator cit = direntries.begin(); + cit != direntries.end(); ++cit) { + string temp = line + (*cit).pszDisplayed; fl_add_browser_line(pFileDlgForm->List, temp.c_str()); } fl_set_browser_topline(pFileDlgForm->List, iDepth); @@ -415,7 +358,6 @@ void LyXFileDlg::SetInfoLine(string const & Line) LyXFileDlg::LyXFileDlg() { - pCurrentNames = 0; pszDirectory = MakeAbsPath(string(".")); pszMask = '*'; @@ -445,28 +387,20 @@ LyXFileDlg::LyXFileDlg() C_LyXFileDlg_CancelCB, 0); // Register doubleclick callback fl_set_browser_dblclick_callback(pFileDlgForm->List, - C_LyXFileDlg_DoubleClickCB, 0); + C_LyXFileDlg_DoubleClickCB, + 0); } fl_hide_object(pFileDlgForm->User1); fl_hide_object(pFileDlgForm->User2); } -LyXFileDlg::~LyXFileDlg() -{ - // frees directory entries - if (pCurrentNames) { - delete [] pCurrentNames; - } -} - - // SetButton: sets file selector user button action void LyXFileDlg::SetButton(int iIndex, string const & pszName, string const & pszPath) { - FL_OBJECT *pObject; - string *pTemp; + FL_OBJECT * pObject; + string * pTemp; if (iIndex == 0) { pObject = pFileDlgForm->User1; @@ -488,7 +422,7 @@ void LyXFileDlg::SetButton(int iIndex, string const & pszName, // GetDirectory: gets last dialog directory -string LyXFileDlg::GetDirectory() +string LyXFileDlg::GetDirectory() const { if (!pszDirectory.empty()) return pszDirectory; @@ -556,7 +490,8 @@ void LyXFileDlg::FileDlgCB(FL_OBJECT *, long lArgument) case 12: // user button 1 if (!pCurrentDlg->pszUserPath1.empty()) { pCurrentDlg->SetDirectory(pCurrentDlg->pszUserPath1); - pCurrentDlg->SetMask(fl_get_input(pFileDlgForm->PatBox)); + pCurrentDlg->SetMask(fl_get_input(pFileDlgForm + ->PatBox)); pCurrentDlg->Reread(); } break; @@ -564,7 +499,8 @@ void LyXFileDlg::FileDlgCB(FL_OBJECT *, long lArgument) case 13: // user button 2 if (!pCurrentDlg->pszUserPath2.empty()) { pCurrentDlg->SetDirectory(pCurrentDlg->pszUserPath2); - pCurrentDlg->SetMask(fl_get_input(pFileDlgForm->PatBox)); + pCurrentDlg->SetMask(fl_get_input(pFileDlgForm + ->PatBox)); pCurrentDlg->Reread(); } break; @@ -572,7 +508,7 @@ void LyXFileDlg::FileDlgCB(FL_OBJECT *, long lArgument) } } -extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *ob, long data) +extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT * ob, long data) { LyXFileDlg::FileDlgCB(ob, data); } @@ -584,7 +520,7 @@ void LyXFileDlg::HandleListHit() // set info line int iSelect = fl_get_browser(pFileDlgForm->List); if (iSelect > iDepth) { - SetInfoLine(pCurrentNames[iSelect - iDepth - 1].pszLsEntry); + SetInfoLine(direntries[iSelect - iDepth - 1].pszLsEntry); } else { SetInfoLine(string()); } @@ -599,7 +535,7 @@ void LyXFileDlg::DoubleClickCB(FL_OBJECT *, long) pCurrentDlg->Force(false); } -extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *ob, long data) +extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT * ob, long data) { LyXFileDlg::DoubleClickCB(ob, data); } @@ -607,16 +543,14 @@ extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *ob, long data) // Handle double click from list bool LyXFileDlg::HandleDoubleClick() { - bool isDir; string pszTemp; - int iSelect; // set info line - isDir = true; - iSelect = fl_get_browser(pFileDlgForm->List); + bool isDir = true; + int iSelect = fl_get_browser(pFileDlgForm->List); if (iSelect > iDepth) { - pszTemp = pCurrentNames[iSelect - iDepth - 1].pszName; - SetInfoLine(pCurrentNames[iSelect - iDepth - 1].pszLsEntry); + pszTemp = direntries[iSelect - iDepth - 1].pszName; + SetInfoLine(direntries[iSelect - iDepth - 1].pszLsEntry); if (!suffixIs(pszTemp, '/')) { isDir = false; fl_set_input(pFileDlgForm->Filename, pszTemp.c_str()); @@ -628,8 +562,6 @@ bool LyXFileDlg::HandleDoubleClick() // executes action if (isDir) { - - int i; string Temp; // builds new directory name @@ -643,7 +575,7 @@ bool LyXFileDlg::HandleDoubleClick() } else { // Directory higher up Temp.clear(); - for (i = 0; i < iSelect; ++i) { + for (int i = 0; i < iSelect; ++i) { string piece = fl_get_browser_line(pFileDlgForm->List, i+1); // The '+2' is here to count the '@b' (JMarc) Temp += piece.substr(i + 2); @@ -662,10 +594,8 @@ bool LyXFileDlg::HandleDoubleClick() // Handle OK button call bool LyXFileDlg::HandleOK() { - string pszTemp; - // mask was changed - pszTemp = fl_get_input(pFileDlgForm->PatBox); + string pszTemp = fl_get_input(pFileDlgForm->PatBox); if (pszTemp!= pszMask) { SetMask(pszTemp); Reread(); @@ -683,7 +613,7 @@ bool LyXFileDlg::HandleOK() // Handle return from list int select = fl_get_browser(pFileDlgForm->List); if (select > iDepth) { - string temp = pCurrentNames[select - iDepth - 1].pszName; + string temp = direntries[select - iDepth - 1].pszName; if (!suffixIs(temp, '/')) { // If user didn't type anything, use browser string name = fl_get_input(pFileDlgForm->Filename); @@ -707,11 +637,13 @@ int LyXFileDlg::CancelCB(FL_FORM *, void *) return FL_IGNORE; } + extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *fl, void *xev) { return LyXFileDlg::CancelCB(fl, xev); } + // Simulates a click on OK/Cancel void LyXFileDlg::Force(bool cancel) { @@ -729,12 +661,10 @@ void LyXFileDlg::Force(bool cancel) // Select: launches dialog and returns selected file string LyXFileDlg::Select(string const & title, string const & path, - string const & mask, string const & suggested) + string const & mask, string const & suggested) { - bool isOk; - // handles new mask and path - isOk = true; + bool isOk = true; if (!mask.empty()) { SetMask(mask); isOk = false; diff --git a/src/filedlg.h b/src/filedlg.h index 02e4c66c67..79a9058a4a 100644 --- a/src/filedlg.h +++ b/src/filedlg.h @@ -16,78 +16,22 @@ #pragma interface #endif -#include "LString.h" +#include -// necessary for xForms related stuff +#include "LString.h" #include FORMS_H_LOCATION #include "form1.h" - -/// User cache class definition -class UserCache -{ -public: - /// - UserCache(string const & pszName = string(), uid_t ID = 0, - UserCache *pRoot = 0); - /// - ~UserCache(); - // interface - /// seeks user name from user ID - string Find(uid_t ID); -private: - /// - uid_t ID; - /// - string pszName; - /// - UserCache *pNext, *pRoot; - // internal methods - /// creates a new user entry - UserCache *Add(uid_t ID); -}; -extern UserCache lyxUserCache; - - -/// Group cache class definition -class GroupCache -{ -public: - /// - GroupCache(string const & pszName = string(), gid_t ID = 0, - GroupCache *pRoot = 0); - /// - ~GroupCache(); - // interface - /// seeks group name from group ID - string Find(gid_t ID); - -private: - /// - gid_t ID; - /// - string pszName; - /// - GroupCache *pNext, *pRoot; - // internal methods - /// creates a new group entry - GroupCache *Add(gid_t ID); -}; -extern GroupCache lyxGroupCache; +using std::vector; /// LyXDirEntry internal structure definition class LyXDirEntry { -private: - friend class LyXFileDlg; +public: string pszName; string pszDisplayed; string pszLsEntry; - LyXDirEntry() {}; -public: - /// compares two LyXDirEntry objects content (used by qsort) - static int ldeCompProc(const LyXDirEntry *r1, const LyXDirEntry *r2); }; @@ -97,13 +41,12 @@ class LyXFileDlg public: /// LyXFileDlg(); - /// - ~LyXFileDlg(); + /// sets file selector user button action void SetButton(int iIndex, string const & pszName = string(), string const & pszPath = string()); /// gets last dialog directory - string GetDirectory(); + string GetDirectory() const; /// launches dialog and returns selected file string Select(string const & pszTitle = string(), string const & pszPath = string(), @@ -116,25 +59,37 @@ public: /// Handle Cancel CB from WM close static int CancelCB(FL_FORM *, void *); private: - // data - static FD_FileDlg *pFileDlgForm; - static LyXFileDlg *pCurrentDlg; + /// data + static FD_FileDlg * pFileDlgForm; + /// + static LyXFileDlg * pCurrentDlg; + /// string pszUserPath1; + /// string pszUserPath2; + /// string pszDirectory; + /// string pszMask; + /// string pszFileName; + /// int iDepth; + /// int iLastSel; + /// long lLastTime; + /// string pszInfoLine; - LyXDirEntry *pCurrentNames; - int iNumNames; - + /// + typedef vector DirEntries; + /// + DirEntries direntries; + /// bool force_cancel; + /// bool force_ok; - // internal functions /// updates dialog list to match class directory void Reread(); /// sets dialog current directory diff --git a/src/insets/.cvsignore b/src/insets/.cvsignore index 95f01f7ca3..baf597e20b 100644 --- a/src/insets/.cvsignore +++ b/src/insets/.cvsignore @@ -1,3 +1,6 @@ Makefile.in Makefile *.deps +*.lo +.libs +libinsets.la diff --git a/src/insets/Makefile.am b/src/insets/Makefile.am index 4a89d9164f..6a3bc9e43c 100644 --- a/src/insets/Makefile.am +++ b/src/insets/Makefile.am @@ -1,12 +1,11 @@ AUTOMAKE_OPTIONS = foreign MAINTAINERCLEANFILES = Makefile.in -noinst_PROGRAMS = insets.o -LIBS= +pkglib_LTLIBRARIES = libinsets.la +LIBS = ETAGS_ARGS = --c++ INCLUDES = -I${srcdir}/../ -CXXLINK = $(LD) $(LDFLAGS)-r -o $(noinst_PROGRAMS) -insets_o_SOURCES = \ +libinsets_la_SOURCES = \ figinset.C \ figinset.h \ form_url.C \ diff --git a/src/insets/figinset.C b/src/insets/figinset.C index 92d1544938..13302f197a 100644 --- a/src/insets/figinset.C +++ b/src/insets/figinset.C @@ -438,7 +438,7 @@ int FindBmpIndex(figdata *tmpdata) static void chpixmap(Pixmap, int, int) { - Display* tempdisp = XOpenDisplay(XDisplayName(0)); + Display * tempdisp = XOpenDisplay(XDisplayName(0)); // here read the pixmap and change all colors to those we // have allocated @@ -520,9 +520,9 @@ static void runqueue() return; } if (pid == 0) { // child - char **env, rbuf[80], gbuf[40]; + char ** env, rbuf[80], gbuf[40]; int ne = 0; - Display* tempdisp = XOpenDisplay(XDisplayName(0)); + Display * tempdisp = XOpenDisplay(XDisplayName(0)); // create translation file sprintf(tbuf, "%s/~lyxgs%d.ps", system_tempdir.c_str(), @@ -1296,9 +1296,9 @@ void InsetFig::Edit(int, int) } -Inset *InsetFig::Clone() +InsetFig * InsetFig::Clone() const { - InsetFig *tmp = new InsetFig(100, 100, owner); + InsetFig * tmp = new InsetFig(100, 100, owner); if (lyxerr.debugging()) { lyxerr << "Clone Figure: buffer:[" diff --git a/src/insets/figinset.h b/src/insets/figinset.h index eb3fddaef8..7245dc1405 100644 --- a/src/insets/figinset.h +++ b/src/insets/figinset.h @@ -57,7 +57,7 @@ public: /// Inset::Code LyxCode() const; /// - Inset* Clone(); + InsetFig * Clone() const; /// void CallbackFig(long arg); /// diff --git a/src/insets/insetbib.C b/src/insets/insetbib.C index 811941a7a3..e88f23831c 100644 --- a/src/insets/insetbib.C +++ b/src/insets/insetbib.C @@ -199,6 +199,7 @@ InsetBibKey::InsetBibKey(InsetBibKey const *b): counter = b->counter; } + InsetBibKey::~InsetBibKey() { if(bibitem_form && bibitem_form->bibitem_form @@ -219,7 +220,7 @@ void InsetBibKey::setCounter(int c) // as a LyX 2.x command, and lyxlex is not enough smart to understand // real LaTeX commands. Yes, that could be fixed, but would be a waste // of time cause LyX3 won't use lyxlex anyway. (ale) -void InsetBibKey::Write(FILE *file) +void InsetBibKey::Write(FILE * file) { string s; if (!options.empty()) { @@ -243,7 +244,8 @@ string InsetBibKey::getScreenLabel() const /* The value in "Key:" isn't allways set right after a few bibkey insets have - been added/removed. Perhaps the wrong object is deleted/used somewhere upwards? + been added/removed. Perhaps the wrong object is deleted/used somewhere + upwards? (Joacim 1998-03-04) */ void InsetBibKey::Edit(int, int) @@ -282,11 +284,6 @@ InsetBibtex::InsetBibtex(string const & dbase, string const & style, } -InsetBibtex::~InsetBibtex() -{ -} - - string InsetBibtex::getScreenLabel() const { return _("BibTeX Generated References"); diff --git a/src/insets/insetbib.h b/src/insets/insetbib.h index 54ec1df173..4c5fc0157c 100644 --- a/src/insets/insetbib.h +++ b/src/insets/insetbib.h @@ -26,13 +26,15 @@ class InsetCitation: public InsetCommand { public: /// - InsetCitation(): InsetCommand("cite") { } + InsetCitation(): InsetCommand("cite") {} /// InsetCitation(string const & key, string const & note = string()); /// ~InsetCitation(); /// - Inset * Clone() { return new InsetCitation(contents, options); } + InsetCitation * Clone() const { + return new InsetCitation(contents, options); + } /// string getScreenLabel()const; /// @@ -52,7 +54,7 @@ public: class InsetBibKey: public InsetCommand { public: /// - InsetBibKey(): InsetCommand("bibitem") { counter = 1; } + InsetBibKey() : InsetCommand("bibitem") { counter = 1; } /// InsetBibKey(string const & key, string const & label = string()); /// @@ -60,7 +62,7 @@ public: /// ~InsetBibKey(); /// - Inset * Clone() { return new InsetBibKey(this); } + InsetBibKey * Clone() const { return new InsetBibKey(this); } /// Currently \bibitem is used as a LyX2.x command, so we need this method. void Write(FILE *); /// @@ -96,9 +98,9 @@ public: InsetBibtex(string const & dbase, string const & style, Buffer *); /// - ~InsetBibtex(); - /// - Inset * Clone() { return new InsetBibtex(contents, options, 0); } + InsetBibtex * Clone() const { + return new InsetBibtex(contents, options, 0); + } /// Inset::Code LyxCode() const { @@ -119,15 +121,14 @@ public: return 1; } /// - bool addDatabase(string const&); + bool addDatabase(string const &); /// - bool delDatabase(string const&); + bool delDatabase(string const &); /// - bool Display() const { return true; } + bool display() const { return true; } private: /// - Buffer *owner; + Buffer * owner; }; - #endif diff --git a/src/insets/insetcommand.C b/src/insets/insetcommand.C index 7b2582d579..595e644fbc 100644 --- a/src/insets/insetcommand.C +++ b/src/insets/insetcommand.C @@ -30,11 +30,6 @@ InsetCommand::InsetCommand(string const & cmd, string const & arg, } -InsetCommand::~InsetCommand() -{ -} - - int InsetCommand::Ascent(LyXFont const & font) const { LyXFont f = font; @@ -200,10 +195,9 @@ int InsetCommand::DocBook(string &/*file*/) } -Inset * InsetCommand::Clone() +InsetCommand * InsetCommand::Clone() const { - InsetCommand * result = new InsetCommand(command, contents, options); - return result; + return new InsetCommand(command, contents, options); } diff --git a/src/insets/insetcommand.h b/src/insets/insetcommand.h index 27ceea85db..f715cdd35a 100644 --- a/src/insets/insetcommand.h +++ b/src/insets/insetcommand.h @@ -33,8 +33,6 @@ public: InsetCommand(string const & name, string const & arg = string(), string const & opt = string()); /// - ~InsetCommand(); - /// int Ascent(LyXFont const & font) const; /// int Descent(LyXFont const & font) const; @@ -57,7 +55,7 @@ public: /// virtual int DocBook(string & file); /// - Inset * Clone(); + InsetCommand * Clone() const; /// Inset::Code LyxCode() const { diff --git a/src/insets/inseterror.C b/src/insets/inseterror.C index 61afb4717a..261536fbf7 100644 --- a/src/insets/inseterror.C +++ b/src/insets/inseterror.C @@ -181,8 +181,7 @@ void InsetError::Edit(int, int) } -Inset * InsetError::Clone() +InsetError * InsetError::Clone() const { - InsetError * result = new InsetError(contents); - return result; + return new InsetError(contents); } diff --git a/src/insets/inseterror.h b/src/insets/inseterror.h index 346e11d042..c9b3500edb 100644 --- a/src/insets/inseterror.h +++ b/src/insets/inseterror.h @@ -62,7 +62,7 @@ public: /// unsigned char Editable() const; /// - Inset * Clone(); + InsetError * Clone() const; /// Inset::Code LyxCode() const { return Inset::NO_CODE; } /// We don't want "begin" and "end inset" in lyx-file diff --git a/src/insets/insetinclude.C b/src/insets/insetinclude.C index f34bae7b7a..cafba467dd 100644 --- a/src/insets/insetinclude.C +++ b/src/insets/insetinclude.C @@ -210,7 +210,7 @@ InsetInclude::~InsetInclude() } } -Inset * InsetInclude::Clone() +InsetInclude * InsetInclude::Clone() const { InsetInclude * ii = new InsetInclude (contents, master); ii->setNoLoad(isNoLoad()); diff --git a/src/insets/insetinclude.h b/src/insets/insetinclude.h index 0373eeb631..28c6036145 100644 --- a/src/insets/insetinclude.h +++ b/src/insets/insetinclude.h @@ -37,7 +37,7 @@ public: /// ~InsetInclude(); /// - Inset * Clone(); + InsetInclude * Clone() const; /// Inset::Code LyxCode() const { return Inset::INCLUDE_CODE; } /// This is 1 if the childs have labels, 0 otherwise @@ -66,7 +66,7 @@ public: void Validate(LaTeXFeatures &) const; /// Input inserts anything inside a paragraph, Display can give some visual feedback - bool Display() const { return !(isInput()); } + bool display() const { return !(isInput()); } /// string getScreenLabel() const; /// diff --git a/src/insets/insetindex.h b/src/insets/insetindex.h index bdad6b47c1..bf1d327c8f 100644 --- a/src/insets/insetindex.h +++ b/src/insets/insetindex.h @@ -35,7 +35,7 @@ public: /// ~InsetIndex(); /// - Inset * Clone() { return new InsetIndex(contents);} + InsetIndex * Clone() const { return new InsetIndex(contents);} /// void Edit(int, int); /// @@ -65,7 +65,7 @@ public: return 1; } /// - bool Display() const { return true; } + bool display() const { return true; } /// Inset::Code LyxCode() const; /// diff --git a/src/insets/insetinfo.C b/src/insets/insetinfo.C index 189730b742..8427b9ba8f 100644 --- a/src/insets/insetinfo.C +++ b/src/insets/insetinfo.C @@ -215,10 +215,9 @@ void InsetInfo::Edit(int, int) } -Inset* InsetInfo::Clone() +InsetInfo * InsetInfo::Clone() const { - InsetInfo * result = new InsetInfo(contents); - return result; + return new InsetInfo(contents); } diff --git a/src/insets/insetinfo.h b/src/insets/insetinfo.h index b2f3f5b57b..d134c1117f 100644 --- a/src/insets/insetinfo.h +++ b/src/insets/insetinfo.h @@ -65,7 +65,7 @@ public: /// Inset::Code LyxCode() const; /// - Inset * Clone(); + InsetInfo * Clone() const; /// static void CloseInfoCB(FL_OBJECT *, long data); private: diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index 665485d3ee..fc2b54719f 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -25,15 +25,9 @@ InsetLabel::InsetLabel(string const & cmd) } -InsetLabel::~InsetLabel() +InsetLabel * InsetLabel::Clone() const { -} - - -Inset * InsetLabel::Clone() -{ - InsetLabel * result = new InsetLabel(getCommand()); - return result; + return new InsetLabel(getCommand()); } diff --git a/src/insets/insetlabel.h b/src/insets/insetlabel.h index bf7245493c..b83d98a803 100644 --- a/src/insets/insetlabel.h +++ b/src/insets/insetlabel.h @@ -27,9 +27,7 @@ public: /// InsetLabel() : InsetCommand("label") {} /// - ~InsetLabel(); - /// - Inset * Clone(); + InsetLabel * Clone() const; /// Inset::Code LyxCode() const { return Inset::LABEL_CODE; } /// diff --git a/src/insets/insetlatexaccent.C b/src/insets/insetlatexaccent.C index 489ce5da83..730325bf73 100644 --- a/src/insets/insetlatexaccent.C +++ b/src/insets/insetlatexaccent.C @@ -50,11 +50,6 @@ InsetLatexAccent::InsetLatexAccent(string const & string) } -InsetLatexAccent::~InsetLatexAccent() -{ -} - - void InsetLatexAccent::checkContents() // check, if we know the modifier and can display it ok on screen { @@ -635,10 +630,9 @@ bool InsetLatexAccent::DirectWrite() const } -Inset* InsetLatexAccent::Clone() +InsetLatexAccent * InsetLatexAccent::Clone() const { - InsetLatexAccent * result = new InsetLatexAccent(contents); - return result; + return new InsetLatexAccent(contents); } @@ -648,15 +642,6 @@ Inset::Code InsetLatexAccent::LyxCode() const } -bool InsetLatexAccent::IsEqual(Inset * other) -{ - if (other && other->LyxCode() == Inset::ACCENT_CODE){ - InsetLatexAccent* otheraccent = (InsetLatexAccent*) other; - return (contents == otheraccent->contents); - } - return false; -} - ostream & operator<<(ostream & o, InsetLatexAccent::ACCENT_TYPES at) { return o << int(at); diff --git a/src/insets/insetlatexaccent.h b/src/insets/insetlatexaccent.h index 0548009af5..da33b0ac64 100644 --- a/src/insets/insetlatexaccent.h +++ b/src/insets/insetlatexaccent.h @@ -36,8 +36,6 @@ public: /// InsetLatexAccent(InsetLatexAccent const &); /// - ~InsetLatexAccent(); - /// int Ascent(LyXFont const & font) const; /// int Descent(LyXFont const & font) const; @@ -65,12 +63,10 @@ public: /// bool DirectWrite() const; /// - Inset * Clone(); + InsetLatexAccent * Clone() const; /// Inset::Code LyxCode()const; /// - bool IsEqual(Inset * other); - /// inline bool CanDisplay(); private: /// all the accent types diff --git a/src/insets/insetloa.h b/src/insets/insetloa.h index 3655d3ac1c..c82a6d7f40 100644 --- a/src/insets/insetloa.h +++ b/src/insets/insetloa.h @@ -32,7 +32,7 @@ public: /// void Validate(LaTeXFeatures & features) const; /// - Inset * Clone() { return new InsetLOA(owner); } + InsetLOA * Clone() const { return new InsetLOA(owner); } /// string getScreenLabel() const { return _("List of Algorithms"); } @@ -43,7 +43,7 @@ public: return 0; // not yet } /// - bool Display() const { return true; } + bool display() const { return true; } /// Inset::Code LyxCode() const { return Inset::LOA_CODE; } private: diff --git a/src/insets/insetlof.h b/src/insets/insetlof.h index f091565bc5..377acecbc6 100644 --- a/src/insets/insetlof.h +++ b/src/insets/insetlof.h @@ -30,7 +30,7 @@ public: /// InsetLOF(Buffer * b): InsetCommand("listoffigures"), owner(b) {} /// - Inset * Clone() { return new InsetLOF(owner); } + InsetLOF * Clone() const { return new InsetLOF(owner); } /// string getScreenLabel() const { return _("List of Figures"); } @@ -40,7 +40,7 @@ public: return 0; // not yet } /// - bool Display() const { return true; } + bool display() const { return true; } /// Inset::Code LyxCode() const { return Inset::LOF_CODE; } private: diff --git a/src/insets/insetlot.h b/src/insets/insetlot.h index e3fae9308e..fc627b41ac 100644 --- a/src/insets/insetlot.h +++ b/src/insets/insetlot.h @@ -30,7 +30,7 @@ public: /// InsetLOT(Buffer * b): InsetCommand("listoftables"), owner(b) {} /// - Inset * Clone() { return new InsetLOT(owner); } + InsetLOT * Clone() const { return new InsetLOT(owner); } /// string getScreenLabel() const { return _("List of Tables"); } @@ -40,7 +40,7 @@ public: return 0; // not yet } /// - bool Display() const { return true; } + bool display() const { return true; } /// Inset::Code LyxCode() const { return Inset::LOT_CODE; } private: diff --git a/src/insets/insetparent.h b/src/insets/insetparent.h index cfc8e3e53a..1cac6a661d 100644 --- a/src/insets/insetparent.h +++ b/src/insets/insetparent.h @@ -37,7 +37,7 @@ public: /// int Latex(string & file, signed char fragile); /// - Inset * Clone() { return new InsetParent(getContents()); } + InsetParent * Clone() const { return new InsetParent(getContents()); } /// string getScreenLabel() const { return string(_("Parent:"))+getContents(); } /// diff --git a/src/insets/insetquotes.C b/src/insets/insetquotes.C index 4ec6d5805c..2c363b9ded 100644 --- a/src/insets/insetquotes.C +++ b/src/insets/insetquotes.C @@ -308,7 +308,8 @@ void InsetQuotes::Validate(LaTeXFeatures & features) const } } -Inset * InsetQuotes::Clone() + +InsetQuotes * InsetQuotes::Clone() const { return new InsetQuotes(language, side, times); } diff --git a/src/insets/insetquotes.h b/src/insets/insetquotes.h index 49dae58aeb..981bab708b 100644 --- a/src/insets/insetquotes.h +++ b/src/insets/insetquotes.h @@ -97,7 +97,7 @@ public: /// void Validate(LaTeXFeatures &) const; /// - Inset* Clone(); + InsetQuotes * Clone() const; /// Inset::Code LyxCode() const; private: diff --git a/src/insets/insetref.C b/src/insets/insetref.C index b10dcd2c03..fc639e9547 100644 --- a/src/insets/insetref.C +++ b/src/insets/insetref.C @@ -78,7 +78,7 @@ int InsetRef::Latex(FILE * file, signed char /*fragile*/) fprintf(file, "%s", escape(getCommand()).c_str()); else { string ns; - InsetCommand clone= InsetCommand(getCmdName(), getContents(), ns); + InsetCommand clone = InsetCommand(getCmdName(), getContents(), ns); fprintf(file, "%s", escape(clone.getCommand()).c_str()); } return 0; diff --git a/src/insets/insetref.h b/src/insets/insetref.h index af85500a30..f436e60908 100644 --- a/src/insets/insetref.h +++ b/src/insets/insetref.h @@ -41,7 +41,9 @@ public: /// ~InsetRef(); /// - Inset * Clone() { return new InsetRef (getCommand(), master); } + InsetRef * Clone() const { + return new InsetRef (getCommand(), master); + } /// Inset::Code LyxCode() const { return Inset::REF_CODE; } /// @@ -51,7 +53,7 @@ public: return 1; } /// - bool Display() const { return false; } + bool display() const { return false; } /// string getScreenLabel() const; /// diff --git a/src/insets/insetspecialchar.C b/src/insets/insetspecialchar.C index 111b55218a..b11071e5dd 100644 --- a/src/insets/insetspecialchar.C +++ b/src/insets/insetspecialchar.C @@ -18,20 +18,9 @@ #include "debug.h" #include "LaTeXFeatures.h" -InsetSpecialChar::InsetSpecialChar() -{ -} - - InsetSpecialChar::InsetSpecialChar(Kind k) : kind(k) -{ -} - - -InsetSpecialChar::~InsetSpecialChar() -{ -} +{} int InsetSpecialChar::Ascent(LyXFont const & font) const @@ -195,10 +184,9 @@ int InsetSpecialChar::DocBook(string & file) } -Inset * InsetSpecialChar::Clone() +InsetSpecialChar * InsetSpecialChar::Clone() const { - InsetSpecialChar * result = new InsetSpecialChar(kind); - return result; + return new InsetSpecialChar(kind); } diff --git a/src/insets/insetspecialchar.h b/src/insets/insetspecialchar.h index 354b5a2441..7eed007e61 100644 --- a/src/insets/insetspecialchar.h +++ b/src/insets/insetspecialchar.h @@ -37,12 +37,10 @@ public: }; /// - InsetSpecialChar(); + InsetSpecialChar() {} /// InsetSpecialChar(Kind k); /// - ~InsetSpecialChar(); - /// int Ascent(LyXFont const & font) const; /// int Descent(LyXFont const & font) const; @@ -63,7 +61,7 @@ public: /// int DocBook(string & file); /// - Inset * Clone(); + InsetSpecialChar * Clone() const; /// Inset::Code LyxCode() const { diff --git a/src/insets/insettoc.h b/src/insets/insettoc.h index 34e1dbc0ed..103f795673 100644 --- a/src/insets/insettoc.h +++ b/src/insets/insettoc.h @@ -30,7 +30,7 @@ public: /// InsetTOC(Buffer * b): InsetCommand("tableofcontents"), owner(b) {} /// - Inset * Clone() { return new InsetTOC(owner); } + InsetTOC * Clone() const { return new InsetTOC(owner); } /// string getScreenLabel() const { return _("Table of Contents"); } /// On edit, we open the TOC pop-up @@ -40,7 +40,7 @@ public: return 1; } /// - bool Display() const { return true; } + bool display() const { return true; } /// Inset::Code LyxCode() const { return Inset::TOC_CODE; } /// diff --git a/src/insets/inseturl.h b/src/insets/inseturl.h index b73c96930a..5191ab088c 100644 --- a/src/insets/inseturl.h +++ b/src/insets/inseturl.h @@ -46,7 +46,7 @@ public: /// ~InsetUrl(); /// - Inset * Clone() { return new InsetUrl(getCommand()); } + InsetUrl * Clone() const { return new InsetUrl(getCommand()); } /// Inset::Code LyxCode() const { return Inset::URL_CODE; } /// @@ -60,7 +60,7 @@ public: /// char const * EditMessage() {return "Opened Url";} /// - bool Display() const { return false; } + bool display() const { return false; } /// string getScreenLabel() const; /// diff --git a/src/insets/lyxinset.h b/src/insets/lyxinset.h index 7a1b9ed3b4..17b26b0464 100644 --- a/src/insets/lyxinset.h +++ b/src/insets/lyxinset.h @@ -91,7 +91,7 @@ public: virtual void Draw(LyXFont font, LyXScreen & scr, int baseline, float & x) = 0; /// what appears in the minibuffer when opening - virtual char const * EditMessage() {return _("Opened inset");} + virtual char const * EditMessage() const {return _("Opened inset");} /// virtual void Edit(int, int); /// @@ -99,9 +99,9 @@ public: /// virtual bool AutoDelete() const; /// - virtual void Write(FILE * file)= 0; + virtual void Write(FILE * file) = 0; /// - virtual void Read(LyXLex & lex)= 0; + virtual void Read(LyXLex & lex) = 0; /** returns the number of rows (\n's) of generated tex code. fragile != 0 means, that the inset should take care about fragile commands by adding a \protect before. @@ -125,22 +125,16 @@ public: return string(); } - /// used for autocorrection - virtual bool IsEqual(Inset * /*other*/){ - return false; - } - /// - virtual Inset * Clone() = 0; + virtual Inset * Clone() const = 0; /// returns true to override begin and end inset in file virtual bool DirectWrite() const; /// Returns true if the inset should be centered alone - virtual bool Display() const { return false; } - + virtual bool display() const { return false; } /// Changes the display state of the inset - virtual void SetDisplay(bool) { } + virtual void display(bool) {} /// virtual int GetNumberOfLabels() const { return 0; @@ -185,7 +179,7 @@ public: /// may call ToggleLockedInsetCursor virtual void ToggleInsetCursor(); /// - virtual void GetCursorPos(int &, int &) {} + virtual void GetCursorPos(int &, int &) const {} /// virtual void InsetButtonPress(int x, int y, int button); /// diff --git a/src/lyx_cb.C b/src/lyx_cb.C index 0ff5937418..1a988facdd 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -1159,7 +1159,7 @@ void MenuInsertLabel(char const *arg) if (label.empty()) label = frontStrip(strip(askForText(_("Enter new label to insert:")))); if (!label.empty()) { - InsetLabel *new_inset = new InsetLabel; + InsetLabel * new_inset = new InsetLabel; new_inset->setContents(label); current_view->buffer()->insertInset(new_inset); } @@ -1259,8 +1259,12 @@ int RunLinuxDoc(int flag, string const & filename) #endif BufferParams::PAPER_SIZE ps = static_cast(current_view->buffer()->params.papersize); switch (ps) { - case BufferParams::PAPER_A4PAPER: add_flags = "-p a4"; break; - case BufferParams::PAPER_USLETTER: add_flags = "-p letter"; break; + case BufferParams::PAPER_A4PAPER: + add_flags = "-p a4"; + break; + case BufferParams::PAPER_USLETTER: + add_flags = "-p letter"; + break; default: /* nothing to be done yet ;-) */ break; } } @@ -2036,10 +2040,9 @@ void MenuLayoutSave() void NoteCB() { - InsetInfo *new_inset = new InsetInfo(); + InsetInfo * new_inset = new InsetInfo(); current_view->buffer()->insertInset(new_inset); new_inset->Edit(0, 0); - //current_view->buffer()->update(-1); } @@ -2113,10 +2116,9 @@ void HyphenationPoint() if (current_view->available()) { current_view->getScreen()->HideCursor(); current_view->buffer()->update(-2); - InsetSpecialChar *new_inset = + InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::HYPHENATION); current_view->buffer()->insertInset(new_inset); - //current_view->buffer()->update(-1); } } @@ -2126,7 +2128,7 @@ void Ldots() if (current_view->available()) { current_view->getScreen()->HideCursor(); current_view->buffer()->update(-2); - InsetSpecialChar *new_inset = + InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::LDOTS); current_view->buffer()->insertInset(new_inset); } @@ -2138,7 +2140,7 @@ void EndOfSentenceDot() if (current_view->available()) { current_view->getScreen()->HideCursor(); current_view->buffer()->update(-2); - InsetSpecialChar *new_inset = + InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::END_OF_SENTENCE); current_view->buffer()->insertInset(new_inset); } @@ -2150,10 +2152,9 @@ void MenuSeparator() if (current_view->available()) { current_view->getScreen()->HideCursor(); current_view->buffer()->update(-2); - InsetSpecialChar *new_inset = + InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::MENU_SEPARATOR); current_view->buffer()->insertInset(new_inset); - //current_view->buffer()->update(-1); } } @@ -3056,7 +3057,7 @@ void GotoNote() void InsertCorrectQuote() { - Buffer *cbuffer = current_view->buffer(); + Buffer * cbuffer = current_view->buffer(); char c; if (cbuffer->text->cursor.pos ) @@ -3487,9 +3488,7 @@ extern "C" void FigureApplyCB(FL_OBJECT *, long) buffer->update(-1); - Inset *new_inset = 0; - - new_inset = new InsetFig(100, 100, buffer); + Inset * new_inset = new InsetFig(100, 100, buffer); buffer->insertInset(new_inset); new_inset->Edit(0, 0); buffer->update(0); @@ -3838,7 +3837,7 @@ extern "C" void RefSelectCB(FL_OBJECT *, long data) else t += "{" + s + "}"; - Inset *new_inset = + Inset * new_inset = new InsetRef(t, current_view->buffer()); current_view->buffer()->insertInset(new_inset); } @@ -4002,7 +4001,7 @@ void FitLockedInsetCursor(long x, long y, int asc, int desc) } -int UnlockInset(UpdatableInset* inset) +int UnlockInset(UpdatableInset * inset) { if (inset && current_view->buffer()->the_locking_inset == inset){ @@ -4029,10 +4028,10 @@ void LockedInsetStoreUndo(Undo::undo_kind kind) } -void PutInsetIntoInsetUpdateList(Inset* inset) +void PutInsetIntoInsetUpdateList(Inset * inset) { if (inset) { - InsetUpdateStruct* tmp = new InsetUpdateStruct(); + InsetUpdateStruct * tmp = new InsetUpdateStruct(); tmp->inset = inset; tmp->next = InsetUpdateList; InsetUpdateList = tmp; @@ -4042,7 +4041,7 @@ void PutInsetIntoInsetUpdateList(Inset* inset) void UpdateInsetUpdateList() { - InsetUpdateStruct *tmp = InsetUpdateList; + InsetUpdateStruct * tmp = InsetUpdateList; while (tmp) { UpdateInset(tmp->inset, false); // "false" because no document change tmp = tmp->next; diff --git a/src/lyx_gui.C b/src/lyx_gui.C index c7d3fe9810..e498bc056d 100644 --- a/src/lyx_gui.C +++ b/src/lyx_gui.C @@ -144,7 +144,7 @@ FL_resource res[] = }; -extern "C" int LyX_XErrHandler(Display *display, XErrorEvent *xeev) +extern "C" int LyX_XErrHandler(Display * display, XErrorEvent * xeev) { //#warning Please see if you can trigger this! // emergency save @@ -173,7 +173,7 @@ LyXGUI::LyXGUI(LyX *owner, int *argc, char *argv[], bool GUI) static const int num_res = sizeof(res)/sizeof(FL_resource); fl_initialize(argc, argv, "LyX", cmdopt, num_res); fl_get_app_resources(res, num_res); - Display *display = fl_get_display(); + Display * display = fl_get_display(); if (!display) { lyxerr << "LyX: unable to access X display, exiting" << endl; exit(1); @@ -641,5 +641,5 @@ void LyXGUI::runTime() void LyXGUI::regBuf(Buffer *b) { - lyxViews->currentView()->buffer(b); + lyxViews->view()->buffer(b); } diff --git a/src/lyxfunc.C b/src/lyxfunc.C index a5b8cfa3e6..eec8edf10e 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -27,6 +27,7 @@ #include "intl.h" #include "lyx_main.h" #include "lyx_cb.h" +#include "LyXAction.h" #if 0 #include "insets/insetlatex.h" #endif @@ -148,7 +149,7 @@ extern void UpdateInset(Inset* inset, bool mark_dirty = true); bool LyXFunc::show_sc = true; -LyXFunc::LyXFunc(LyXView *o) +LyXFunc::LyXFunc(LyXView * o) :owner(o) { meta_fake_bit = 0; @@ -158,11 +159,6 @@ LyXFunc::LyXFunc(LyXView *o) } -LyXFunc::~LyXFunc() -{ -} - - // I changed this func slightly. I commented out the ...FinishUndo(), // this means that all places that used to have a moveCursorUpdate, now // have a ...FinishUndo() as the preceeding statement. I have also added @@ -173,13 +169,13 @@ void LyXFunc::moveCursorUpdate(bool selecting) { if (selecting || owner->buffer()->text->mark_set) { owner->buffer()->text->SetSelection(); - owner->currentView()->getScreen()->ToggleToggle(); + owner->view()->getScreen()->ToggleToggle(); owner->buffer()->update(0); } else { owner->buffer()->update(-2); // this IS necessary // (Matthias) } - owner->currentView()->getScreen()->ShowCursor(); + owner->view()->getScreen()->ShowCursor(); /* ---> Everytime the cursor is moved, show the current font state. */ // should this too me moved out of this func? @@ -187,14 +183,14 @@ void LyXFunc::moveCursorUpdate(bool selecting) } -int LyXFunc::processKeyEvent(XEvent *ev) +int LyXFunc::processKeyEvent(XEvent * ev) { char s_r[10]; s_r[9] = '\0'; int num_bytes; int action; string argument; - XKeyEvent *keyevent = &ev->xkey; + XKeyEvent * keyevent = &ev->xkey; KeySym keysym_return; num_bytes = LyXLookupString(ev, s_r, 10, &keysym_return); @@ -217,7 +213,7 @@ int LyXFunc::processKeyEvent(XEvent *ev) } // this function should be used always [asierra060396] - if (owner->currentView()->available() && + if (owner->view()->available() && owner->buffer()->the_locking_inset && keysym_return == XK_Escape) { UnlockInset(owner->buffer()->the_locking_inset); @@ -311,9 +307,130 @@ int LyXFunc::processKeyEvent(XEvent *ev) } -string LyXFunc::Dispatch(string const& s) +LyXFunc::func_status LyXFunc::getStatus(int ac) const { - // Split command string into command and argument + kb_action action; + func_status flag = LyXFunc::OK; + string argument; + Buffer * buf = owner->buffer(); + + if (lyxaction.isPseudoAction(ac)) + action = lyxaction.retrieveActionArg(ac, argument); + else + action = static_cast(ac); + + if (action == LFUN_UNKNOWN_ACTION) { + setErrorMessage(N_("Unknown action")); + return LyXFunc::Unknown; + } + + // Check whether we need a buffer + if (!lyxaction.funcHasFlag(action, LyXAction::NoBuffer)) { + // Yes we need a buffer, do we have one? + if (buf) { + // yes + // Can we use a readonly buffer? + if (buf->isReadonly() && + !lyxaction.funcHasFlag(action, + LyXAction::ReadOnly)) { + // no + setErrorMessage(N_("Document is read-only")); + flag = func_status(flag | LyXFunc::Disabled); + } + } else { + // no + setErrorMessage(N_("Command not allowed with" + "out any document open")); + flag = func_status(flag | LyXFunc::Disabled); + } + } + + if (flag & LyXFunc::Disabled) + return flag; + + static bool noLaTeX = lyxrc->latex_command == "none"; + bool disable = false; + switch (action) { + case LFUN_PREVIEW: + disable = noLaTeX || lyxrc->view_dvi_command == "none"; + break; + case LFUN_PREVIEWPS: + disable = noLaTeX || lyxrc->view_ps_command == "none"; + break; + case LFUN_RUNLATEX: + case LFUN_RUNDVIPS: + disable = noLaTeX; + break; + case LFUN_MENUPRINT: + disable = noLaTeX || lyxrc->print_command == "none"; + break; + case LFUN_FAX: + disable = noLaTeX || lyxrc->fax_command == "none"; + break; + case LFUN_IMPORT: + if (argument == "latex") + disable = lyxrc->relyx_command == "none"; + break; + case LFUN_EXPORT: + if (argument == "dvi" || argument == "postscript") + disable = noLaTeX; + break; + case LFUN_UNDO: + disable = buf->undostack.empty(); + break; + case LFUN_REDO: + disable = buf->redostack.empty(); + break; + case LFUN_SPELLCHECK: + disable = lyxrc->isp_command == "none"; + break; + case LFUN_RUNCHKTEX: + disable = lyxrc->chktex_command == "none"; + break; + case LFUN_LAYOUT_TABLE: +#warning change this and font code once it is possible to get to cursor + // disable = ! buf->text->cursor.par->table; + break; + default: + break; + } + if (disable) + flag = func_status(flag | LyXFunc::Disabled); + + func_status box = LyXFunc::ToggleOff; + // LyXFont font = buf->text->real_current_font; + LyXFont font; + switch (action) { + case LFUN_EMPH: + if (font.emph() == LyXFont::ON) + box = LyXFunc::ToggleOn; + break; + case LFUN_NOUN: + if (font.noun() == LyXFont::ON) + box = LyXFunc::ToggleOn; + break; + case LFUN_BOLD: + if (font.series() == LyXFont::BOLD_SERIES) + box = LyXFunc::ToggleOn; + break; + case LFUN_TEX: + if (font.latex() == LyXFont::ON) + box = LyXFunc::ToggleOn; + break; + default: + box = LyXFunc::OK; + break; + } + flag = func_status(flag | box); + + + return flag; +} + + +string LyXFunc::Dispatch(string const & s) +{ + // Split command string into command and argument string cmd, line = frontStrip(s); string arg = strip(frontStrip(split(line, cmd, ' '))); @@ -322,70 +439,41 @@ string LyXFunc::Dispatch(string const& s) string LyXFunc::Dispatch(int ac, - char const *do_not_use_this_arg) + char const * do_not_use_this_arg) { string argument; kb_action action; - - FL_OBJECT *ob = 0; // This will disapear soon + FL_OBJECT * ob = 0; // This will disapear soon // we have not done anything wrong yet. errorstat = false; - dispatch_buffer = string(); + dispatch_buffer.clear(); // if action is a pseudo-action, we need the real action if (lyxaction.isPseudoAction(ac)) { - char const *tmparg = 0; - action = (kb_action)lyxaction.retrieveActionArg(ac, &tmparg); - if (tmparg) + string tmparg; + action = static_cast + (lyxaction.retrieveActionArg(ac, tmparg)); + if (!tmparg.empty()) argument = tmparg; } else { - action = (kb_action)ac; + action = static_cast(ac); if (do_not_use_this_arg) argument = do_not_use_this_arg; // except here } selection_possible = false; - if (owner->currentView()->available() - && owner->currentView()->getScreen()) - owner->currentView()->getScreen()->HideCursor(); - - if(!owner->currentView()->available()) { - // This lists the allowed funcs when we have no - // buffer loaded - switch(action){ - case LFUN_MENU_OPEN_BY_NAME: - case LFUN_PREFIX: - case LFUN_MENUNEW: - case LFUN_MENUNEWTMPLT: - case LFUN_MENUOPEN: - case LFUN_QUIT: - case LFUN_PUSH_TOOLBAR: - case LFUN_ADD_TO_TOOLBAR: - case LFUN_EXEC_COMMAND: - case LFUN_DROP_LAYOUTS_CHOICE: - case LFUN_FILE_NEW: - case LFUN_FILE_OPEN: - case LFUN_IMPORT: - case LFUN_RECONFIGURE: - case LFUN_CANCEL: - case LFUN_APROPOS: - case LFUN_META_FAKE: + if (owner->view()->available() + && owner->view()->getScreen()) + owner->view()->getScreen()->HideCursor(); - break; - case LFUN_UNKNOWN_ACTION: - setErrorMessage(N_("Unknown action")); - goto exit_with_message; - default: - setErrorMessage(N_("Command not allowed with" - "out any document open")); - goto exit_with_message; // action not allowed - } - } - - commandshortcut = string(); + // We cannot use this function here + if (getStatus(action) & Disabled) + goto exit_with_message; + + commandshortcut.clear(); if (lyxrc->display_shortcuts && show_sc) { if (action != LFUN_SELFINSERT) { @@ -433,44 +521,35 @@ string LyXFunc::Dispatch(int ac, } } - // Now that we know which action, if the buffer is RO let's check - // whether the action is legal. Alejandro 970603 - if (owner->currentView()->available() && - owner->buffer()->isReadonly() && - lyxaction.isFuncRO(action)) { - setErrorMessage(N_("Document is read-only")); - lyxerr.debug() << "Error: Document is read-only." << endl; - goto exit_with_message; - } - // If in math mode pass the control to // the math inset [asierra060396] - if (owner->currentView()->available() && + if (owner->view()->available() && owner->buffer()->the_locking_inset) { - if (action>1 || (action == LFUN_UNKNOWN_ACTION && keyseq.length>= -1)) { + if (action > 1 + || (action == LFUN_UNKNOWN_ACTION && keyseq.length>= -1)) { if (action == LFUN_UNKNOWN_ACTION && argument.empty()) { argument = keyseq.getiso(); } - // Undo/Redo pre 0.13 is a bit tricky for insets. + // Undo/Redo pre 0.13 is a bit tricky for insets. if (action == LFUN_UNDO) { int slx, sly; - UpdatableInset* inset = + UpdatableInset * inset = owner->buffer()->the_locking_inset; inset->GetCursorPos(slx, sly); UnlockInset(inset); MenuUndo(); - inset = (UpdatableInset*)owner->buffer()->text->cursor.par->GetInset(owner->buffer()->text->cursor.pos); + inset = static_cast(owner->buffer()->text->cursor.par->GetInset(owner->buffer()->text->cursor.pos)); if (inset) inset->Edit(slx, sly); return string(); } else if (action == LFUN_REDO) { int slx, sly; - UpdatableInset* inset = owner->buffer()->the_locking_inset; + UpdatableInset * inset = owner->buffer()->the_locking_inset; inset->GetCursorPos(slx, sly); UnlockInset(inset); MenuRedo(); - inset = (UpdatableInset*)owner->buffer()->text->cursor.par->GetInset(owner->buffer()->text->cursor.pos); + inset = static_cast(owner->buffer()->text->cursor.par->GetInset(owner->buffer()->text->cursor.pos)); if (inset) inset->Edit(slx, sly); return string(); @@ -501,21 +580,20 @@ string LyXFunc::Dispatch(int ac, searched_string = last_search; } - LyXText * ltCur = owner->currentView()->buffer()->text ; + LyXText * ltCur = owner->view()->buffer()->text ; if (!searched_string.empty() && - ( (action == LFUN_WORDFINDBACKWARD) ? - ltCur->SearchBackward( searched_string.c_str() ) : - ltCur->SearchForward( searched_string.c_str() ) - )){ + ((action == LFUN_WORDFINDBACKWARD) ? + ltCur->SearchBackward(searched_string.c_str()) : + ltCur->SearchForward(searched_string.c_str()))) { // ??? What is that ??? - owner->currentView()->buffer()->update(-2); + owner->view()->buffer()->update(-2); // ??? Needed ??? // clear the selection (if there is any) - owner->currentView()->getScreen()->ToggleSelection(); - owner->currentView()->buffer()->text->ClearSelection(); + owner->view()->getScreen()->ToggleSelection(); + owner->view()->buffer()->text->ClearSelection(); // Move cursor so that successive C-s 's will not stand in place. if( action == LFUN_WORDFINDFORWARD ) @@ -525,20 +603,20 @@ string LyXFunc::Dispatch(int ac, // ??? Needed ??? // set the new selection - // SetSelectionOverLenChars(owner->currentView()->currentBuffer()->text, iLenSelected); - owner->currentView()->getScreen()->ToggleSelection(false); + // SetSelectionOverLenChars(owner->view()->currentBuffer()->text, iLenSelected); + owner->view()->getScreen()->ToggleSelection(false); } else LyXBell(); - // REMOVED : if (owner->currentView()->getWorkArea()->focus) - owner->currentView()->getScreen()->ShowCursor(); + // REMOVED : if (owner->view()->getWorkArea()->focus) + owner->view()->getScreen()->ShowCursor(); } break; case LFUN_PREFIX: { - if (owner->currentView()->available() - && owner->currentView()->getScreen()) { + if (owner->view()->available() + && owner->view()->getScreen()) { owner->buffer()->update(-2); } char buf[100]; @@ -555,9 +633,9 @@ string LyXFunc::Dispatch(int ac, case LFUN_CANCEL: // RVDK_PATCH_5 keyseq.reset(); meta_fake_bit = 0; - if(owner->currentView()->available()) + if(owner->view()->available()) // cancel any selection - Dispatch(int(LFUN_MARK_OFF), 0); + Dispatch(LFUN_MARK_OFF, 0); setMessage(N_("Cancel")); break; @@ -583,20 +661,20 @@ string LyXFunc::Dispatch(int ac, case LFUN_CENTER: // this is center and redraw. BeforeChange(); if (owner->buffer()->text->cursor.y > - owner->currentView()->getWorkArea()->h / 2) { - owner->currentView()->getScreen()-> + owner->view()->getWorkArea()->h / 2) { + owner->view()->getScreen()-> Draw(owner->buffer()->text->cursor.y - - owner->currentView()->getWorkArea()->h/2); + owner->view()->getWorkArea()->h/2); } else { // <= - owner->currentView()->getScreen()-> + owner->view()->getScreen()-> Draw(0); } owner->buffer()->update(0); - owner->currentView()->redraw(); + owner->view()->redraw(); break; case LFUN_APPENDIX: - if (owner->currentView()->available()) { + if (owner->view()->available()) { owner->buffer()->text->toggleAppendix(); owner->buffer()->update(1); } @@ -666,7 +744,7 @@ string LyXFunc::Dispatch(int ac, case LFUN_EXPORT: { //needs argument as string - string extyp= argument; + string extyp = argument; // latex if (extyp == "latex") { @@ -730,16 +808,16 @@ string LyXFunc::Dispatch(int ac, Systemcalls one; int res = one.startscript(Systemcalls::System, tmp); if (res == 0) { - setMessage(_("Document exported as HTML to file `") + setMessage(N_("Document exported as HTML to file `") + MakeDisplayPath(result) +'\''); } else { - setErrorMessage(_("Unable to convert to HTML the file `") + setErrorMessage(N_("Unable to convert to HTML the file `") + MakeDisplayPath(file) + '\''); } } else { - setErrorMessage(_("Unknown export type: ") + setErrorMessage(N_("Unknown export type: ") + extyp); } } @@ -748,7 +826,7 @@ string LyXFunc::Dispatch(int ac, case LFUN_IMPORT: { //needs argument as string - string imtyp= argument; + string imtyp = argument; // latex if (imtyp == "latex") { @@ -793,37 +871,29 @@ string LyXFunc::Dispatch(int ac, case LFUN_TOC_INSERT: { - Inset *new_inset = - new InsetTOC(owner->buffer()); - owner->buffer()->insertInset(new_inset, - "Standard", true); + Inset * new_inset = new InsetTOC(owner->buffer()); + owner->buffer()->insertInset(new_inset, "Standard", true); break; } case LFUN_LOF_INSERT: { - Inset *new_inset = - new InsetLOF(owner->buffer()); - owner->buffer()->insertInset(new_inset, - "Standard", true); + Inset * new_inset = new InsetLOF(owner->buffer()); + owner->buffer()->insertInset(new_inset, "Standard", true); break; } case LFUN_LOA_INSERT: { - Inset *new_inset = - new InsetLOA(owner->buffer()); - owner->buffer()->insertInset(new_inset, - "Standard", true); + Inset * new_inset = new InsetLOA(owner->buffer()); + owner->buffer()->insertInset(new_inset, "Standard", true); break; } case LFUN_LOT_INSERT: { - Inset *new_inset = - new InsetLOT(owner->buffer()); - owner->buffer()->insertInset(new_inset, - "Standard", true); + Inset * new_inset = new InsetLOT(owner->buffer()); + owner->buffer()->insertInset(new_inset, "Standard", true); break; } @@ -858,7 +928,7 @@ string LyXFunc::Dispatch(int ac, case LFUN_PASTESELECTION: { bool asPara = false; - if (string(argument) == "paragraph") asPara = true; + if (argument == "paragraph") asPara = true; MenuPasteSelection(asPara); break; } @@ -880,14 +950,14 @@ string LyXFunc::Dispatch(int ac, break; case LFUN_GOTOERROR: - owner->currentView()->gotoError(); + owner->view()->gotoError(); break; case LFUN_REMOVEERRORS: if (owner->buffer()->removeAutoInsets()) { - owner->currentView()->redraw(); - owner->currentView()->fitCursor(); - owner->currentView()->updateScrollbar(); + owner->view()->redraw(); + owner->view()->fitCursor(); + owner->view()->updateScrollbar(); } break; @@ -948,7 +1018,7 @@ string LyXFunc::Dispatch(int ac, break; case LFUN_FOOTMELT: - if (owner->currentView()->available() + if (owner->view()->available() && !owner->buffer()->text->selection && owner->buffer()->text->cursor.par->footnoteflag != LyXParagraph::NO_FOOTNOTE) @@ -961,13 +1031,13 @@ string LyXFunc::Dispatch(int ac, break; case LFUN_MARGINMELT: - if (owner->currentView()->available() + if (owner->view()->available() && !owner->buffer()->text->selection && owner->buffer()->text->cursor.par->footnoteflag - != LyXParagraph::NO_FOOTNOTE) - { // only melt margins - if(owner->buffer()->text->cursor.par->footnotekind == LyXParagraph::MARGIN) - MeltCB(ob, 0); + != LyXParagraph::NO_FOOTNOTE) { + // only melt margins + if(owner->buffer()->text->cursor.par->footnotekind == LyXParagraph::MARGIN) + MeltCB(ob, 0); } else MarginCB(ob, 0); @@ -1022,13 +1092,13 @@ string LyXFunc::Dispatch(int ac, #endif // it is the LyXView or the BufferView that should // remember the previous buffer, not bufferlist. -// if (owner->currentView()->available()){ +// if (owner->view()->available()){ // BeforeChange(); // owner->buffer()->update(-2); // } -// owner->currentView()->setBuffer(bufferlist.prev()); +// owner->view()->setBuffer(bufferlist.prev()); -// owner->currentView()-> +// owner->view()-> // resizeCurrentBufferPseudoExpose(); break; @@ -1040,8 +1110,7 @@ string LyXFunc::Dispatch(int ac, case LFUN_FILE_INSERT_ASCII: { - bool asPara = false; - asPara = (string(argument) == "paragraph"); + bool asPara = (argument == "paragraph"); InsertAsciiFile(string(), asPara); } break; @@ -1049,15 +1118,14 @@ string LyXFunc::Dispatch(int ac, case LFUN_FILE_NEW: { // servercmd: argument must be :