libtool-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Libtool branch, pr-msvc-support, updated. v2.2.6-182-gdd42e63


From: Peter Rosin
Subject: [SCM] GNU Libtool branch, pr-msvc-support, updated. v2.2.6-182-gdd42e63
Date: Thu, 10 Sep 2009 08:06:32 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Libtool".

The branch, pr-msvc-support has been updated
       via  dd42e63ce688302500f349606c55bf173feda3a4 (commit)
       via  b03736353b6d478a68bfc19c017605eb21a3edce (commit)
       via  1e4e1984b07e4ce21f421b45854b846a93a12128 (commit)
       via  91697c2092ad24aab5b926abd7b9247f14d2d9b9 (commit)
       via  4ad8b63bd1069246c540ba2973da967fe7b68c9c (commit)
       via  2eb8c3e51fde5f3a220eaad5c9e31a215aab330d (commit)
       via  0805518173d95032e22c2832e73724c08ac2d9c7 (commit)
       via  8c35d797572d3ccef6d1ed6ebc59e679b5b80aa6 (commit)
       via  c9bbeef468f64064e1d50e39c945df929cbc21d8 (commit)
       via  d1de1d4adaadf5b709c646862e7f649bb9179aea (commit)
       via  db160ae47c151fe037ba686d925652cd4b34fe9f (commit)
       via  04329d83555b5f8d2fd02428418a79ea392b2d91 (commit)
       via  00558363daebeb41c02ab8eaa9cb5218caf97867 (commit)
       via  f0f99955cb283ead0817744921621d66c049709f (commit)
       via  a228f07a8ffb9610c070203de04ea2242755a71e (commit)
       via  7244857f7bc0e90f52ca5b6be37652911653e654 (commit)
       via  75765d58c38c55ef069ef100732c1e978f4151a6 (commit)
       via  82f62c98de38974cb63e39dbfeb2b45c614b4be7 (commit)
       via  2772d14559c584d142e44fdea69124ce62285b40 (commit)
       via  6769a76d6bbcc55b70b1c7279b7226aaa33d65b5 (commit)
       via  8a08afac5d4f560a0fdd53611e9db680a3a5145c (commit)
       via  b04fe8e6da2b5bed914911bfd8567ba9e93da40b (commit)
       via  efe1cfec710dbd06987fed02ec4d70d5c6630322 (commit)
       via  f578833bb8bd54092ce74f48ab07a26fdad28727 (commit)
       via  d812c6326b9f1206715f1125970805a05a856e32 (commit)
       via  740565c4fdd69be05a0a5d118bf6c77a51498bcf (commit)
       via  1f4a1d723744feddc05a77bc687366c286950651 (commit)
       via  e3095b37d09aa637c465b3099781bf5d69f9f059 (commit)
       via  2af6f65468e1890da42b32baeac3054a756c0e72 (commit)
       via  19880129dd60fb0aaefa03ee764951af38b0451e (commit)
       via  57013d8e689ed32f0a4fb8d3b0549ed5e793e2d6 (commit)
       via  94537d111dcd64b0937ffe36dda485f794b47fbb (commit)
       via  f4c14adc49a89beccbecb6177c8fae4d13040b9d (commit)
       via  848215b440b53cae6979dd5a65ea41e9d5ab5b3d (commit)
       via  26d36541aded9124add202e288a79f3c08242687 (commit)
       via  5ef9367f2a030124e7b5ed4a4194a12c545d6fce (commit)
       via  7f0ba74e84f5dd7e72908835a5a8335c9ecb3eba (commit)
       via  5d560c68d815824d284661354e525d1936c823b9 (commit)
       via  81a734cdda29f4ba61ee1f3bbbb2513ed4ed6323 (commit)
       via  2ff7159eb45c8ae9ca1588e65d198a2aeea3eed6 (commit)
       via  a2fa12747f531979b946cc4d3c9a9c0e07b460cf (commit)
       via  5f2bbb494a2753afb2878c399cfd8316b7403a5b (commit)
       via  8965cb5fa339aa4f63d0e77fcc91e0e46929348d (commit)
      from  a128e6d5f8a57c0f3cfb85a28d8d843f504a3cdf (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit dd42e63ce688302500f349606c55bf173feda3a4
Merge: a128e6d5f8a57c0f3cfb85a28d8d843f504a3cdf 
b03736353b6d478a68bfc19c017605eb21a3edce
Author: Peter Rosin <address@hidden>
Date:   Wed Sep 9 12:36:23 2009 +0200

    Merge branch 'master' into pr-msvc-support

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                  |  346 ++++++++++++++++++++++++++++++++++++++++++++
 Makefile.am                |   25 +++-
 NEWS                       |   16 ++
 THANKS                     |   12 ++
 bootstrap                  |    4 +-
 doc/libtool.texi           |   77 ++++++++++-
 libltdl/config/ltmain.m4sh |  186 +++---------------------
 libltdl/m4/libtool.m4      |  272 ++++++++++++++++++++--------------
 libltdl/m4/lt~obsolete.m4  |    6 +-
 libtoolize.m4sh            |    1 +
 tests/configure-iface.at   |   21 +++
 tests/darwin.at            |  108 ++++++++++++++-
 tests/execute-mode.at      |    3 +-
 tests/fail.at              |   15 ++-
 tests/flags.at             |  103 +++++++++++++
 tests/link-order2.at       |    1 +
 tests/localization.at      |   10 ++
 tests/lt_dladvise.at       |    9 +-
 tests/nonrecursive.at      |    4 +-
 tests/old-m4-iface.at      |    8 +-
 tests/static.at            |    1 +
 tests/versioning.at        |  239 ++++++++++++++++++++++++++++++
 22 files changed, 1167 insertions(+), 300 deletions(-)
 create mode 100644 tests/flags.at
 create mode 100644 tests/versioning.at

diff --git a/ChangeLog b/ChangeLog
index b7c37f8..d88355d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,349 @@
+2009-09-07  Ralf Wildenhues  <address@hidden>
+
+       Allow dlopen self test to work with gcc's -fvisibility=hidden.
+       * libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Declare default
+       visibility for the symbol we are going to test dlopen (NULL)
+       when a GCC version is used that understands the visibility
+       attribute, under the assumption that if -fvisibility=hidden
+       will be used, the user code will be sufficiently annotated
+       for visibility of needed symbols from the main executable.
+       * THANKS: Update.
+       Report by Josh Hursey against OpenMPI.
+
+       Fix and split recent testsuite addition for compile/link flags.
+       * tests/flags.at (passing flags through libtool): Split into ...
+       (passing CC flags through libtool)
+       (passing CXX flags through libtool)
+       (passing F77 flags through libtool)
+       (passing FC flags through libtool)
+       (passing GCJ flags through libtool): ... these five tests,
+       factorized with m4_foreach.  Fix F77 and FC compile and link
+       commands; add GCJ tag.  Use LT_AT_TAG to correctly skip tags
+       for which no compiler exists.  Use $EXEEXT where appropriate.
+       Drop unneeded use of reload_cmds.
+       Reports by Peter Rosin and Peter O'Gorman.
+
+2009-09-07  Peter O'Gorman  <address@hidden
+
+       Fix redirect in test case.
+       * tests/darwin.at: Fix stderr redirect.
+
+       Use darwin's -force_load flag if available for whole_archive_flag_spec
+       * libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Check for
+       -force_load and use it if there.
+       * tests/darwin.at: Add a simple test.
+
+2009-09-06  Ralf Wildenhues  <address@hidden>
+
+       Testsuite keyword 'interactive' and check-* rules.
+       * Makefile.am (testsuite_deps, testsuite_deps_uninstalled):
+       New variables.
+       (check-local, installcheck-local): Use them.
+       (check-interactive, check-noninteractive): New rules.
+       * tests/link-order2.at (Link order of deplibs),
+       tests/static.at (static linking flags for programs): Add keyword
+       `interactive'.
+       * doc/libtool.texi (Test descriptions): Document all keywords
+       used in the Libtool test suite.
+       * NEWS: Update.
+
+       Fix failure test in the presence of --with-pic or -prefer-pic.
+       * tests/fail.at (Failure tests): Run non-PIC failure test only
+       if pic_mode is 'default' or 'no', rather than 'default' or 'yes'
+       and also -prefer-pic has not been passed in $CFLAGS.
+       * THANKS: Update.
+       Report by Donn Washburn.
+
+       Add testsuite exposure for passing of compiler and linker flags.
+       * tests/flags.at (passing flags through libtool): New file, new
+       test, for bug fixed in previous commit.
+       * Makefile.am (TESTSUITE_AT): Add tests/flags.at.
+
+2009-09-04  Peter Rosin  <address@hidden>
+
+       Make -Wc,FLAG behave like -Xcompiler FLAG in link mode.
+       * libltdl/config/ltmain.m4sh (func_mode_link): Remove "-Wc,"
+       instead of replacing it with "$wl" when linking programs
+       through the compiler driver, just as is the case when linking
+       libraries.
+       * NEWS: Update.
+
+2009-08-23  Lennart Poettering  <address@hidden>  (tiny change)
+
+       Shut up prototype warnings with recent GCC and -Wstrict-prototypes.
+       * libltdl/config/ltmain.m4sh (func_generate_dlsyms): Use recent
+       GCC's diagnostic pragma to override a -Wstrict-prototypes
+       setting for the symbol list code.
+       * THANKS: Update.
+
+2009-08-23  Ralf Wildenhues  <address@hidden>
+
+       Remove __oline__ from macros, for less spurious configure diffs.
+       * libltdl/m4/libtool.m4 (_LT_ENABLE_LOCK, _LT_COMPILER_OPTION)
+       (_LT_COMPILER_C_O, LT_PATH_NM): Replace __oline__ instances with
+       $LINENO.
+       * NEWS: Update.
+
+2009-07-24  Roumen Petrov  <address@hidden>  (tiny change)
+
+       Fixup 'execute mode' test for w32.
+       * tests/execute-mode.at (execute mode): Add missing $EXEEXT.
+       (LDFLAGS): Add -no-undefined.
+
+2009-07-01  Yaakov Selkowitz  <address@hidden> (tiny change)
+           Charles Wilson  <address@hidden>
+
+       [CXX] Use correct export_dynamic_flag_spec for PE-COFF $hosts
+       * libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) 
[cygwin*|mingw*|pw32*|cegcc*]:
+       Define export_dynamic_flag_spec as -Wl,--export-all-symbols here as well
+       (see commit 5f2bbb494a2753afb2878c399cfd8316b7403a5b).
+
+2009-06-29  Charles Wilson  <address@hidden>
+
+       [mingw] Improve sys_lib_search_path_spec detection.
+       * libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Fix handling
+       of dos-style paths when parsing $CC -print-search-dirs output.
+
+2009-06-28  Charles Wilson  <address@hidden>
+
+       Finish adding alias for obsoleted AC_LIBTOOL_RC macro.
+       * libltdl/m4/libtool.m4: Add reminder comment concerning
+       aclocal-1.4 backwards compatibility.
+       * libltdl/m4/lt~obsolete.m4: Remove unnecessary AC_DEFUN.
+
+2009-06-27  Charles Wilson  <address@hidden>
+
+       Add alias for obsoleted AC_LIBTOOL_RC macro.
+       * libltdl/m4/libtool.m4: Add alias for obsoleted
+       macro AC_LIBTOOL_RC.
+
+2009-06-21  Charles Wilson  <address@hidden>
+
+       Remove unneeded functions and options from cwrapper
+       * libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
+       [lt_opt_process_env_set]: Remove.
+       [lt_opt_process_env_prepend]: Remove.
+       [lt_opt_process_env_append]: Remove.
+       [lt_split_name_value]: Remove.
+       [file scope]: Don't declare removed functions. Remove
+       constants and defines related to eliminated commandline
+       options.
+       [main]: Remove code related to eliminated commandline
+       options --lt-env-set, --lt-env-prepend, --lt-env-append.
+
+2009-06-19  Yaakov Selkowitz  <address@hidden> (tiny change)
+           Charles Wilson  <address@hidden>
+
+       Ensure LT_PATH_LD works when called before LT_INIT
+       * libltdl/m4/libtool.m4 (LT_PATH_LD): AC_REQUIRE 
_LT_PROG_ECHO_BACKSLASH.
+
+2009-06-14  Ralf Wildenhues  <address@hidden>
+
+       Add versioning tests.
+       * tests/versioning.at (versioning): New file, new test.
+       * Makefile.am (TESTSUITE_AT): Adjust.
+       Prompted by bug report from Mike Gorchak.
+
+2009-06-14  Mike Gorchak  <address@hidden>  (tiny change)
+           Ralf Wildenhues  <address@hidden>
+
+       Fix versioning computation for QNX.
+       * libltdl/config/ltmain.m4sh (func_mode_link): Set `$current'
+       and `$age' properly for version_type `qnx'.
+
+2009-06-14  Ralf Wildenhues  <address@hidden>
+
+       Avoid spurious localization testsuite failure on HP-UX/ia64.
+       * tests/localization.at (localized compiler messages): Skip test
+       if the compiler warning output contains `locale', for HP-UX.
+
+2009-06-10  Ralf Wildenhues  <address@hidden>
+
+       Fix concurrent extraction of convenience libraries on Darwin.
+       * libltdl/m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE): New libtool
+       variable `lock_old_archive_extraction', set to `yes' on darwin.
+       * doc/libtool.texi (libtool script contents): Document it.
+       * libltdl/config/ltmain.m4sh (func_extract_an_archive): Lock
+       `ar x' invocation if `lock_old_archive_extraction' is yes.
+       * tests/darwin.at (darwin concurrent library extraction): New
+       test.
+       * NEWS: Update.
+       Report by Akim Demaille.
+
+2009-06-07  Ralf Wildenhues  <address@hidden>
+
+       Fix testsuite failure of lt_dlopenadvise test on FreeMiNT.
+       * tests/lt_dladvise.at (lt_dlopenadvise library loading): Do not
+       build moddepend for systems without shared libraries.
+       Report by Alan Hourihane.
+
+       testsuite: avoid failures due to old Automake.
+       * tests/configure-iface.at (installable libltdl)
+       (--with-ltdl-include/lib, --with-included-ltdl):
+       Speficy libmodule_la_SOURCES in Makefile.am as the default
+       source file naming scheme changed in Automake 1.8.
+       * tests/nonrecursive.at (_LT_AT_LTDL_SETUP): Require Automake
+       1.9.6.
+       * THANKS: Update.
+       Report by Robert Garron.
+
+       testsuite: add missing @LIBS@ in a link command line.
+       * tests/old-m4-iface.at (AC_WITH_LTDL): Use @LIBS@ when linking.
+       Report by Patrice Fromy.
+
+       testsuite: cope when some installed libltdl.la has been removed.
+       * tests/old-m4-iface.at (AC_WITH_LTDL): Pass --with-included-ltdl
+       to configure, to ensure we do not accidentally link against a
+       previously installed libltdl.so where the corresponding .la
+       file has been removed, thus we do not add a run path, and the
+       runtime linker then fails to find libltdl.so.7.
+       * tests/configure-iface.at (--with-ltdl-include/lib): Remove -L
+       flags from LDFLAGS to avoid picking up an installed libltdl
+       outside of the default locations.
+       * THANKS: Update.
+       Prompted by report from Patrice Fromy.
+
+2009-06-07  Vincent Torri  <address@hidden>  (tiny change)
+
+       Fix C wrapper invocation for ceGCC hosts (cegcc and mingw32ce).
+       * libltdl/config/ltmain.m4sh (func_mode_link): do not generate
+       C wrapper for cegcc and mingw32ce hosts.
+       (func_emit_cwrapperexe_src): remove useless check on
+       __MINGW32CE__.
+
+2009-06-07  Ralf Wildenhues  <address@hidden>
+
+       Don't pick up double-quotes from /etc/ld.so.conf on Ubuntu.
+       * libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]
+       <sys_lib_dlsearch_path_spec>: Remove embedded double quotes from
+       paths picked up from /etc/ld.so.conf.  Fixes libltdl compile
+       failure on Ubuntu 7.10.
+       * THANKS: Update.
+       Report by Camilo La Rota.
+
+2009-06-06  Richard Sandiford  <address@hidden>
+
+       Fix GNU nm invocation for AIX.
+       * libldtl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
+       <export_symbols_cmds>: Modify the GNU-nm-on-AIX version so that
+       it adds weak defined symbols to the export list.
+
+       Build AIX shared libraries with binutils 2.19.50+.
+       * libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
+       <lt_use_gnu_ld_interface>: New variable to control whether the
+       GNU ld or native ld interface is used.  Set to "no" for GNU ld
+       2.19.50+ on AIX, otherwise mirror $with_gnu_ld.  Update the
+       warning message that is printed when using GNU ld on AIX.
+       Adjust the whole_archive_flag_spec value for GNU ld on AIX.
+       * NEWS, THANKS: Update.
+
+2009-05-27  Peter O'Gorman  <address@hidden>
+
+       Don't run compiler checks twice.
+       libltdl/m4/libtool.m4 (_LT_PROG_FC, _LT_PROG_F77,
+       _LT_PROG_CXX): Remove these macros.
+       libltdl/m4/lt~obsolete.m4: Add removed macros here.
+       libltdl/m4/libtool.m4 (_LT_LANG_FC_CONFIG, _LT_LANG_F77_CONFIG,
+       _LT_LANG_CXX_CONFIG): Remove references to removed macros, and
+       move functionality here.
+       NEWS: Update.
+
+2009-05-05  Rainer Emrich  <address@hidden>  (tiny change)
+           Peter Rosin  <address@hidden>
+           Ralf Wildenhues  <address@hidden>
+
+       Fix cross compilation for HPPA/64 with a BSD file command.
+       * libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD)
+       [hpux10.20*, hpux11*, !ia64] <lt_cv_deplibs_check_method>:
+       Match the dot in `PA-RISC 2.0' literally.  Adjust hppa*64*
+       pattern to also match BSD `file' output, used in cross
+       compilation setups.
+       * THANKS: Update.
+       Report and initial patch by Rainer Emrich, refined by Peter
+       Rosin.
+
+2009-05-05  Ralf Wildenhues  <address@hidden>
+
+       libtoolize: ignore trailing junk on scriptversion line.
+       * libtoolize.m4sh (func_install_update): Ignore semi-colon or
+       comment-sign and all following characters when parsing a
+       `scriptversion' line in one of the auxiliary scripts; recent
+       Automake-provided script have a stylized comment to induce
+       Emacs to use UTC.
+       Exposed by the `libtoolize config files serial update' test.
+
+2009-05-02  Ralf Wildenhues  <address@hidden>
+
+       Skip localization test when setlocale is not functional.
+       * tests/localization.at (localized compiler messages): Skip
+       test when there is a warning about `LC_ALL'.
+       * THANKS: Update.
+       Report by Maciej Helminiak.
+
+2009-05-02  Alan Hourihane  <address@hidden>  (tiny change)
+
+       Improved support for FreeMiNT.
+       * libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN) [mint]: Hard-code
+       command line length limit to 8192, to avoid long test.
+       * NEWS, THANKS: Update.
+
+2009-05-02  Ralf Wildenhues  <address@hidden>
+
+       Initial port for BlueGene BG/L.
+       * libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
+       (_LT_LANG_CXX_CONFIG) [linux]: Detect bgxl*, bgf*, mpixl*
+       compilers.
+       * NEWS, THANKS: Update.
+       Report, feedback and testing by John R. Cary and Christian
+       Rössel.
+
+       manual: fix grammaros.
+       * doc/libtool.texi (Dlpreopening): Fix grammaro.
+       (C header files): Remove duplicate word.
+
+       Allow through -tp=* at link time, for pgcc.
+       * libltdl/config/ltmain.m4sh (func_mode_link): Portlant Group
+       pgcc uses `-tp=PROCESSOR' for target processor selection; allow
+       the flag through at link time.
+       Report by Ethan Mallove.
+
+       Fix quoting of eval'ed variable.
+       * libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Double-quote
+       $lt_cv_sys_global_symbol_pipe for eval, like we do in ltmain,
+       in order to preserve TABs and multiple adjacent whitespace.
+       Report by Bruno Haible.
+
+2009-04-22  Ralf Wildenhues  <address@hidden>
+
+       Cope better with missing `makeinfo' in `bootstrap'.
+       * bootstrap: Update `./doc/notes.txt' last so missing `makeinfo'
+       does not cause a broken tree.
+       * THANKS: Update.
+       Report by Christian Rössel.
+
+2009-03-29  Yaakov Selkowitz  <address@hidden>  (tiny change)
+           Charles Wilson  <address@hidden>
+
+       [cygwin] Improve operation with gcc4
+       * libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [cygwin*]:
+       Add w32api to sys_lib_search_path_spec without overriding gcc's
+       own search path.
+
+2009-03-29  Yaakov Selkowitz  <address@hidden>  (tiny change)
+           Charles Wilson  <address@hidden>
+
+       Use correct export_dynamic_flag_spec for PE-COFF $hosts
+       * libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) 
+       [cygwin*|mingw*|pw32*|cegcc*]: Define export_dynamic_flag_spec
+       as -Wl,--export-all-symbols, as required by GNU ld for PE-COFF.
+
+2009-03-29  Charles Wilson  <address@hidden>
+
+       Improve compatibility with older automake
+       * libltdl/m4/lt~obsolete.m4: Add AC_DEFUNs for
+       _LT_PREPARE_SED_QUOTE_VARS and _LT_PROG_ECHO_BACKSLASH.
+       Report by Yaakov Selkowitz.
+
 2009-03-20  Peter Rosin  <address@hidden>
 
        LT_OUTPUT should always create the libtool script.
diff --git a/Makefile.am b/Makefile.am
index cdd6984..dbd3718 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -455,6 +455,7 @@ TESTSUITE_AT        = tests/testsuite.at \
                  tests/duplicate_members.at \
                  tests/duplicate_conv.at \
                  tests/duplicate_deps.at \
+                 tests/flags.at \
                  tests/inherited_flags.at \
                  tests/convenience.at \
                  tests/link-order.at \
@@ -474,6 +475,7 @@ TESTSUITE_AT        = tests/testsuite.at \
                  tests/localization.at \
                  tests/nocase.at \
                  tests/install.at \
+                 tests/versioning.at \
                  tests/destdir.at \
                  tests/old-m4-iface.at \
                  tests/am-subdir.at \
@@ -549,19 +551,38 @@ DISTCLEANFILES += tests/atconfig
 
 CD_TESTDIR     = abs_srcdir=`$(lt__cd) $(srcdir) && pwd`; cd tests
 
+testsuite_deps = tests/atconfig $(srcdir)/$(TESTSUITE)
+testsuite_deps_uninstalled = $(testsuite_deps) libltdl/libltdlc.la 
$(bin_SCRIPTS)
+
 # Hook the test suite into the check rule
-check-local: tests/atconfig $(srcdir)/$(TESTSUITE) libltdl/libltdlc.la 
$(bin_SCRIPTS)
+check-local: $(testsuite_deps_uninstalled)
        $(CD_TESTDIR); \
        CONFIG_SHELL="$(SHELL)" $(SHELL) $$abs_srcdir/$(TESTSUITE) \
          $(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) $(TESTSUITEFLAGS)
 
 # Run the test suite on the *installed* tree.
-installcheck-local: tests/atconfig $(srcdir)/$(TESTSUITE)
+installcheck-local: $(testsuite_deps)
        $(CD_TESTDIR); \
        CONFIG_SHELL="$(SHELL)" $(SHELL) $$abs_srcdir/$(TESTSUITE) \
          $(TESTS_ENVIRONMENT) $(INSTALLCHECK_ENVIRONMENT) $(TESTSUITEFLAGS) \
          AUTOTEST_PATH="$(exec_prefix)/bin"
 
+# Run only noninteractive parts of the new testsuite.
+check-noninteractive: $(testsuite_deps_uninstalled)
+       $(CD_TESTDIR); \
+       CONFIG_SHELL="$(SHELL)" $(SHELL) $$abs_srcdir/$(TESTSUITE) \
+         $(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) \
+         -k !interactive INNER_TESTSUITEFLAGS=",!interactive" \
+         $(TESTSUITEFLAGS)
+
+# Run only interactive parts of the new testsuite.
+check-interactive: $(testsuite_deps_uninstalled)
+       $(CD_TESTDIR); \
+       CONFIG_SHELL="$(SHELL)" $(SHELL) $$abs_srcdir/$(TESTSUITE) \
+         $(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) \
+         -k interactive -k recursive INNER_TESTSUITEFLAGS=",interactive" \
+         $(TESTSUITEFLAGS)
+
 # We need to remove any file droppings left behind by testsuite
 clean-local: clean-local-legacy
        -$(CD_TESTDIR); \
diff --git a/NEWS b/NEWS
index e6bffd8..25d9777 100644
--- a/NEWS
+++ b/NEWS
@@ -12,12 +12,18 @@ New in 2.2.8 2009-??-??: git version 2.2.7a, Libtool team:
   - New libtool command line flag --no-verbose, which disables only
     the extra "verbose" output messages and has no effect on the
     default informational messages.
+  - New convenience make targets `check-noninteractive' to avoid long testsuite
+    runs on Windows with popup windows in the middle, and `check-interactive'
+    for the complement set of tests.
 
 * Changes in supported systems or compilers:
 
   - Improved support for 64bit Windows (mingw64).
   - Improved support for cegcc (Windows CE/PocketPC).
   - Support for GNU/kOpenSolaris (kopensolaris*-gnu).
+  - Initial support for compilers on BlueGene BG/L.
+  - Improved support for Atari FreeMiNT.
+  - With binutils 2.19.50+, shared libraries can be built on AIX.
   - Initial support for Microsoft Visual C w/o wrapper scripts.
 
 * Bug fixes:
@@ -34,6 +40,16 @@ New in 2.2.8 2009-??-??: git version 2.2.7a, Libtool team:
   - Argument mangling of execute mode has been improved (i.e., lessened).
   - Fix 2.1b regression that caused nm to not be the default name lister.
     The regression affected mainly (arguably broken) cross compiles.
+  - Fix long standing bug that caused compiler checks for Fortran and
+    C++ compilers to run twice.
+  - Link mode works around a parallel build failure on Darwin 9.6.0 due
+    to the `ar' `flock'ing an archive upon extraction, by protecting the
+    extraction of convenience archives with a lock.
+  - The Libtool macro files do not contain instances of __oline__ any more,
+    easing merges for configure scripts that are added to version control.
+  - Fix ancient bug where "-Wc," was turned into "$wl" (typically "-Wl,")
+    when using the compiler driver to link programs. Now "-Wc," is stripped
+    just as it is when linking libraries through the compiler driver.
 
 * Miscellaneous changes:
 
diff --git a/THANKS b/THANKS
index 1094bec..8baf7f4 100644
--- a/THANKS
+++ b/THANKS
@@ -67,6 +67,7 @@
   their time and energy in helping to track down bugs, port to new systems,
   and generally assist in the libtool maintainership process:
 
+  Alan Hourihane               address@hidden
   Alexei Sheplyakov            address@hidden
   Alon Bar-Lev                 address@hidden
   Andreas Schwab               address@hidden
@@ -75,9 +76,11 @@
   Brad Smith                   address@hidden
   Brian Barrett                        address@hidden
   Bruno Haible                 address@hidden
+  Camilo La Rota               address@hidden
   Carl D. Roth                 address@hidden
   Chris P. Ross                        address@hidden
   Christian Biesinger          address@hidden
+  Christian Rössel            address@hidden
   Christoph Egger              address@hidden
   Christopher Hulbert          address@hidden
   Craig Tierney                        address@hidden
@@ -85,6 +88,7 @@
   Daniel Reed                  address@hidden
   Daniel Richard G.            address@hidden
   DJ Delorie                   address@hidden
+  Donn Washburn                        address@hidden
   Edouard G. Parmelan          address@hidden
   Erez Zadok                   address@hidden
   Eric Estievenart             address@hidden
@@ -104,12 +108,16 @@
   Joel N. Weber II             address@hidden
   Joerg Sonnenberger           address@hidden
   John Bowler                  address@hidden
+  John R. Cary                 address@hidden
   John Wolfe                   address@hidden
+  Josh Hursey                  address@hidden
   Joseph Beckenbach III                address@hidden
+  Lennart Poettering           address@hidden
   Karl Berry                   address@hidden
   Kenneth Albanowski           address@hidden
   Kevin Ryde                   address@hidden
   Kurt D. Zeilenga             address@hidden
+  Maciej Helminiak             address@hidden
   Maciej W. Rozycki            address@hidden
   Manfred Weichel              address@hidden
   Marc Espie                   address@hidden
@@ -122,16 +130,20 @@
   Nix                          address@hidden
   Olaf Lenz                    address@hidden
   Olly Betts                   address@hidden
+  Patrice Fromy                        address@hidden
   Patrick Welche               address@hidden
   Paul Biggar                  address@hidden
   Paul Eggert                  address@hidden
   Peter Eisentraut             address@hidden
   Peter Jeremy                 address@hidden
   Peter Kjellerstedt           address@hidden
+  Rainer Emrich                        address@hidden
   Rainer Orth                  address@hidden
   Rainer Tammer                        address@hidden
   Ralf Menzel                  address@hidden
   Richard Purdie               address@hidden
+  Richard Sandiford            address@hidden
+  Robert Garron                        address@hidden
   Robert Millan                        address@hidden
   Robert Ögren                        address@hidden
   Roberto Bagnara              address@hidden
diff --git a/bootstrap b/bootstrap
index 0b3648f..d505c36 100755
--- a/bootstrap
+++ b/bootstrap
@@ -132,9 +132,9 @@ $SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d' 
$makes > Makefile
 # configure, and ltversion.m4 to generate configure in the first place:
 rm -f $auxdir/ltmain.sh $m4dir/ltversion.m4
 
-$MAKE ./$auxdir/ltmain.sh ./$m4dir/ltversion.m4 ./doc/notes.txt \
+$MAKE ./$auxdir/ltmain.sh ./$m4dir/ltversion.m4 \
     ./libtoolize.in ./tests/defs.in ./tests/package.m4 \
-    ./tests/testsuite ./libltdl/Makefile.am \
+    ./tests/testsuite ./libltdl/Makefile.am ./doc/notes.txt \
     srcdir=. top_srcdir=. PACKAGE="$2" VERSION="$3" \
     PACKAGE_BUGREPORT="address@hidden" M4SH="$AUTOM4TE --language=m4sh" \
     AUTOTEST="$AUTOM4TE --language=autotest" SED="$SED" MAKEINFO="$MAKEINFO" \
diff --git a/doc/libtool.texi b/doc/libtool.texi
index 624f414..610117e 100644
--- a/doc/libtool.texi
+++ b/doc/libtool.texi
@@ -3119,7 +3119,7 @@ Also the only thing that must go outside the
 @code{BEGIN_C_DECLS}/@code{END_C_DECLS} pair are @code{#include} lines.
 Strictly speaking it is only C symbol names that need to be protected,
 but your header files will be more maintainable if you have a single
-pair of of these macros around the majority of the header contents.
+pair of these macros around the majority of the header contents.
 
 You should use these definitions of @code{PARAMS}, @code{BEGIN_C_DECLS},
 and @code{END_C_DECLS} into your own headers.  Then, you may use them to
@@ -3353,7 +3353,7 @@ though Libtool takes care of that detail if you use
 An array of @var{lt_symbol} structures, representing all the preloaded
 symbols linked into the program proper.  For each module
 @option{-dlpreopen}ed by the Libtool linked program
-there is an element with the @var{name} of the module and a @var{address}
+there is an element with the @var{name} of the module and an @var{address}
 of @code{0}, followed by all symbols exported from this file.
 For the executable itself the special name @samp{@@PROGRAM@@} is used.
 The last element of all has a @var{name} and @var{address} of
@@ -5226,6 +5226,74 @@ directory, except that Fortran 90 is used in combination 
with the
 
 @end table
 
+The new, Autotest-based test suite uses keywords to classify certain
+test groups:
+
address@hidden @samp
address@hidden CXX
address@hidden F77
address@hidden FC
address@hidden GCJ
+The test group exercises one of these @command{libtool} language tags.
+
address@hidden autoconf
address@hidden automake
+These keywords denote that the respective external program is needed
+by the test group.  The tests are typically skipped if the program is
+not installed.  The @samp{automake} keyword may also denote use of the
address@hidden program.
+
address@hidden interactive
+This test group may require user interaction on some systems.  Typically,
+this means closing a popup window about a DLL load error on Windows.
+
address@hidden libltdl
+Denote that the @file{libltdl} library is exercised by the test group.
+
address@hidden libtool
address@hidden libtoolize
+Denote that the @command{libtool} or @command{libtoolize} scripts are
+exercised by the test group, respectively.
+
address@hidden recursive
+Denote that this test group may recursively re-invoke the test suite
+itself, with changed settings and maybe a changed @command{libtool}
+script.  You may use the @env{INNER_TESTSUITEFLAGS} variable to pass
+additional settings to this recursive invocation.  Typically, recursive
+invocations delimit the set of tests with another keyword, for example
+by passing @code{-k libtool} right before the expansion of the
address@hidden variable (without an intervening space, so
+you get the chance for further delimitation).
+
+Test groups with the keyword @samp{recursive} should not be denoted with
+keywords, in order to avoid infinite recursion.  As a consequence,
+recursive test groups themselves should never require user interaction,
+while the test groups they invoke may do so.
address@hidden table
+
+For example, in order to avoid any interactive test groups, you could
+use this:
+
address@hidden
+make check-local \
+  TESTSUITEFLAGS='-k !interactive INNER_TESTSUITEFLAGS=",!interactive"'
address@hidden smallexample
+
address@hidden
+while to run only those test groups, you would use this:
+
address@hidden
+make check-local \
+  TESTSUITEFLAGS='-k interactive -k recursive 
INNER_TESTSUITEFLAGS=,interactive'
address@hidden smallexample
+
address@hidden
+but the convenience targets @samp{check-interactive} and
address@hidden avoid needing to remember these complex
+commands, in addition to also disabling interactive tests in the old
+test suite.
+
+
 @node When tests fail
 @subsection When tests fail
 @cindex failed tests
@@ -5765,6 +5833,11 @@ these commands, libtool will proceed to link against 
@var{$objdir/$newlib}
 instead of @var{soname}.
 @end defvar
 
address@hidden lock_old_archive_extraction
+Set to @samp{yes} if the extraction of a static library requires locking
+the library file.  This is required on Darwin.
address@hidden defvar
+
 @defvar archiver_list_spec
 How to feed a file listing to the archiver.
 @end defvar
diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 392145a..40ff9d3 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -2001,6 +2001,10 @@ func_generate_dlsyms ()
 extern \"C\" {
 #endif
 
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || 
(__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
 /* External symbol declarations for the compiler. */\
 "
 
@@ -2278,13 +2282,18 @@ func_extract_an_archive ()
     f_ex_an_ar_dir="$1"; shift
     f_ex_an_ar_oldlib="$1"
     if test "X$ar_extract_one_by_one" != "Xyes"; then
-      func_show_eval "(cd \$f_ex_an_ar_dir && $AR 
${AR_XFLAGS}${AR_SEP}\"\$f_ex_an_ar_oldlib\")" 'exit $?'
+      func_show_eval "(cd \$f_ex_an_ar_dir && $AR 
${AR_XFLAGS}${AR_SEP}\"\$f_ex_an_ar_oldlib\")" \
+                    'stat=$?; rm -f "$lockfile"; exit $stat'
     else
       $AR ${AR_TFLAGS}${AR_SEP}"$f_ex_an_ar_oldlib" | while read name
       do
-       func_show_eval "(cd \$f_ex_an_ar_dir && $AR ${AR_XFLAGS}${AR_SEP}\$name 
\"\$f_ex_an_ar_oldlib\")" 'exit $?'
+       func_show_eval "(cd \$f_ex_an_ar_dir && $AR ${AR_XFLAGS}${AR_SEP}\$name 
\"\$f_ex_an_ar_oldlib\")" \
+                      'stat=$?; rm -f "$lockfile"; exit $stat'
       done
     fi
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
     if ($AR ${AR_TFLAGS}${AR_SEP}"$f_ex_an_ar_oldlib" | sort | sort -uc 
>/dev/null 2>&1); then
      :
     else
@@ -2800,9 +2809,7 @@ EOF
 #include <assert.h>
 #include <string.h>
 #include <ctype.h>
-#ifndef __MINGW32CE__
-# include <errno.h>
-#endif
+#include <errno.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 
@@ -2832,7 +2839,7 @@ int setenv (const char *, const char *, int);
 #  define _INTPTR_T_DEFINED
 #  define intptr_t int
 # endif
-#elif defined(__MINGW32__) && !defined(__MINGW32CE__)
+#elif defined(__MINGW32__)
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
@@ -2930,10 +2937,6 @@ char *strendzap (char *str, const char *pat);
 void lt_fatal (const char *message, ...);
 void lt_setenv (const char *name, const char *value);
 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
 void lt_update_exe_path (const char *name, const char *value);
 void lt_update_lib_path (const char *name, const char *value);
 char **prepare_spawn (char **argv);
@@ -2990,18 +2993,6 @@ static const char *ltwrapper_option_prefix = 
LTWRAPPER_OPTION_PREFIX;
 
 static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX 
"dump-script";
 
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX 
"env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-
 int
 main (int argc, char *argv[])
 {
@@ -3126,51 +3117,6 @@ EOF
   newargc=0;
   for (i = 1; i < argc; i++)
     {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
       if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
         {
           /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
@@ -3207,11 +3153,7 @@ EOF
   if (rval == -1)
     {
       /* failed to start process */
-#ifndef __MINGW32CE__
       LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = 
%d\n", lt_argv_zero, errno));
-#else
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\"\n", 
lt_argv_zero));
-#endif
       return 127;
     }
   return rval;
@@ -3440,12 +3382,8 @@ chase_symlinks (const char *pathspec)
        }
       else
        {
-#ifndef __MINGW32CE__
          char *errstr = strerror (errno);
          lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-#else
-         lt_fatal ("Error accessing file %s", tmp_pathspec);
-#endif
        }
     }
   XFREE (tmp_pathspec);
@@ -3555,89 +3493,6 @@ lt_extend_str (const char *orig_value, const char *add, 
int to_end)
   return new_value;
 }
 
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
 void
 lt_update_exe_path (const char *name, const char *value)
 {
@@ -4500,7 +4355,7 @@ func_mode_link ()
        for flag in $args; do
          IFS="$save_ifs"
           func_quote_for_eval "$flag"
-         arg="$arg $wl$func_quote_for_eval_result"
+         arg="$arg $func_quote_for_eval_result"
          compiler_flags="$compiler_flags $func_quote_for_eval_result"
        done
        IFS="$save_ifs"
@@ -4556,8 +4411,9 @@ func_mode_link ()
       # -F/path gives path to uninstalled frameworks, gcc on darwin
       # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
       # @file GCC response files
+      # -tp=* Portland pgcc target processor selection
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
         func_quote_for_eval "$arg"
        arg="$func_quote_for_eval_result"
         func_append compile_command " $arg"
@@ -5995,7 +5851,7 @@ func_mode_link ()
            age="$number_minor"
            revision="$number_revision"
            ;;
-         freebsd-aout|freebsd-elf|sunos)
+         freebsd-aout|freebsd-elf|qnx|sunos)
            current="$number_major"
            revision="$number_minor"
            age="0"
@@ -7542,15 +7398,15 @@ EOF
 
       wrappers_required=yes
       case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross 
compiling anyway.
+        wrappers_required=no
+        ;;
       *cygwin* | *mingw* )
         if test "$build_libtool_libs" != yes; then
           wrappers_required=no
         fi
         ;;
-      *cegcc*)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
       *)
         if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
           wrappers_required=no
diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4
index 2da617e..1a2d7d4 100644
--- a/libltdl/m4/libtool.m4
+++ b/libltdl/m4/libtool.m4
@@ -860,11 +860,13 @@ AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
 AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
 AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
 AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
 dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
 dnl AC_DEFUN([AC_LIBTOOL_F77], [])
 dnl AC_DEFUN([AC_LIBTOOL_FC], [])
 dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
 
 
 # _LT_TAG_COMPILER
@@ -969,6 +971,29 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
        [lt_cv_ld_exported_symbols_list=no])
        LDFLAGS="$save_LDFLAGS"
     ])
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c 
-Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c 
-Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && 
$GREP forced_load conftest 2>&1 >/dev/null; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err conftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
     case $host_os in
     rhapsody* | darwin1.[[012]])
       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
@@ -996,7 +1021,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
     else
       _lt_dar_export_syms='~$NMEDIT -s 
$output_objdir/${libname}-symbols.expsym ${lib}'
     fi
-    if test "$DSYMUTIL" != ":"; then
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
       _lt_dsymutil='~$DSYMUTIL $lib || :'
     else
       _lt_dsymutil=
@@ -1016,7 +1041,11 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_automatic, $1)=yes
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do 
test  -n \"$conv\" && new_convenience=\"$new_convenience 
${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
   _LT_TAGVAR(link_all_deplibs, $1)=yes
   _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
   case $cc_basename in
@@ -1160,7 +1189,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
@@ -1376,10 +1405,19 @@ if test -n "$RANLIB"; then
   esac
   old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
 fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 _LT_DECL([], [old_postinstall_cmds], [2])
 _LT_DECL([], [old_postuninstall_cmds], [2])
 _LT_TAGDECL([], [old_archive_cmds], [2],
     [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
 ])# _LT_CMD_OLD_ARCHIVE
 
 
@@ -1404,11 +1442,11 @@ AC_CACHE_CHECK([$1], [$2],
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -1515,6 +1553,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
@@ -1672,7 +1715,13 @@ else
 #  endif
 #endif
 
-void fnord() { int i=42;}
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || 
(__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -1681,7 +1730,11 @@ int main ()
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
       /* dlclose (self); */
     }
   else
@@ -1857,11 +1910,11 @@ AC_CACHE_CHECK([if $compiler supports -c -o 
file.$ac_objext],
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -2034,7 +2087,11 @@ if test "$GCC" = yes; then
     darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
     *) lt_awk_arg="/^libraries:/" ;;
   esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e 
"s/^libraries://" -e "s,=/,/,g"`
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e 
"s/^libraries://" -e $lt_sed_strip_eq`
   case $lt_search_path_spec in
   *\;*)
     # if the path contains ";" then we assume it to be the separator
@@ -2079,6 +2136,12 @@ BEGIN {RS=" "; FS="/|\n";} {
   if (lt_foo != "") { lt_freq[[lt_foo]]++; }
   if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
 }'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
   sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
@@ -2221,26 +2284,12 @@ cygwin* | mingw* | pw32* | cegcc*)
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | 
$SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
       soname_spec='${libname}`echo ${release} | $SED -e 
's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $SED 
'/^libraries:/!d; s///; s,=/,/,g'`
-      case $sys_lib_search_path_spec in
-      *\;[c-zC-Z]:*)
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 
's/;/ /g'`
-        ;;
-      *)
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e 
"s/$PATH_SEPARATOR/ /g"`
-       ;;
-      esac
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
@@ -2504,7 +2553,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 
2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < 
/etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ 
/g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 
2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < 
/etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ 
/g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -2851,6 +2900,7 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
 
 AC_ARG_WITH([gnu-ld],
     [AS_HELP_STRING([--with-gnu-ld],
@@ -3085,11 +3135,11 @@ hpux10.20* | hpux11*)
     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
     ;;
   hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) 
shared object file - PA-RISC [0-9].[0-9]']
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ 
-][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC 
[0-9]\.[0-9]']
     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_deplibs_check_method='file_magic 
(s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_deplibs_check_method='file_magic 
(s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
     lt_cv_file_magic_test_file=/usr/lib/libc.sl
     ;;
   esac
@@ -3297,13 +3347,13 @@ _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name 
lister])dnl
 AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
   [lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" 
>&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" 
>&AS_MESSAGE_LOG_FD)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
   cat conftest.out >&AS_MESSAGE_LOG_FD
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -3497,7 +3547,7 @@ _LT_EOF
   if AC_TRY_EVAL(ac_compile); then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> 
$nlist) && test -s "$nlist"; then
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" 
\> $nlist) && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
        mv -f "$nlist"T "$nlist"
@@ -3806,8 +3856,8 @@ m4_if([$1], [CXX], [
            _LT_TAGVAR(lt_prog_compiler_pic, $1)=
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
            ;;
-         xlc* | xlC*)
-           # IBM XL 8.0 on PPC
+         xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+           # IBM XL 8.0, 9.0 on PPC and BlueGene
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
@@ -4090,8 +4140,8 @@ m4_if([$1], [CXX], [
         # All Alpha code is PIC.
         _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         ;;
-      xl*)
-       # IBM XL C 8.0/Fortran 10.1 on PPC
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
@@ -4250,8 +4300,10 @@ m4_if([$1], [CXX], [
   aix[[4-9]]*)
     # If we're using GNU nm, then we don't want the "-C" option.
     # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | 
awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 
3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | 
awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == 
"W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > 
$export_symbols'
     else
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | 
awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 
3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
     fi
@@ -4334,7 +4386,33 @@ dnl Note also adjust exclude_expsyms for C++ above.
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
   if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+         *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
     wlarc='${wl}'
 
@@ -4367,11 +4445,12 @@ dnl Note also adjust exclude_expsyms for C++ above.
        _LT_TAGVAR(ld_shlibs, $1)=no
        cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, 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.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
 _LT_EOF
       fi
@@ -4407,6 +4486,7 @@ _LT_EOF
       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       # as there is no search path for DLLs.
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_TAGVAR(always_export_symbols, $1)=no
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -4472,7 +4552,7 @@ _LT_EOF
        lf95*)                          # Lahey Fortran 8.1
          _LT_TAGVAR(whole_archive_flag_spec, $1)=
          tmp_sharedflag='--shared' ;;
-       xl[[cC]]*)                      # IBM XL C 8.0 on PPC (deal with xlf 
below)
+       xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal 
with xlf below)
          tmp_sharedflag='-qmkshrobj'
          tmp_addflag= ;;
        esac
@@ -4494,7 +4574,7 @@ _LT_EOF
         fi
 
        case $cc_basename in
-       xlf*)
+       xlf* | bgf* | bgxlf* | mpixlf*)
          # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
          _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience 
--no-whole-archive'
          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
@@ -4625,8 +4705,10 @@ _LT_EOF
       else
        # If we're using GNU nm, then we don't want the "-C" option.
        # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | 
awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 
3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | 
awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == 
"W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > 
$export_symbols'
        else
          _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience 
| awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && 
([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
        fi
@@ -4730,8 +4812,13 @@ _LT_EOF
          # -berok will link without error, but may produce a broken library.
          _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
          _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-         # Exported symbols can be pulled into shared objects from archives
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           _LT_TAGVAR(whole_archive_flag_spec, 
$1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         fi
          _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
          # This is similar to how AIX traditionally builds its shared 
libraries.
          _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o 
$output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags 
${wl}-bE:$export_symbols${allow_undefined_flag}~$AR 
$AR_FLAGS$AR_SEP$output_objdir/$libname$release.a $output_objdir/$soname'
@@ -5462,37 +5549,21 @@ CC="$lt_save_CC"
 ])# _LT_LANG_C_CONFIG
 
 
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
 # _LT_LANG_CXX_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a C++ compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
 # the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
 
 AC_LANG_PUSH(C++)
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
@@ -5745,8 +5816,13 @@ if test "$_lt_caught_CXX_error" != yes; then
            # -berok will link without error, but may produce a broken library.
            _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
            _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-           # Exported symbols can be pulled into shared objects from archives
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           if test "$with_gnu_ld" = yes; then
+             # We only use this code for GNU lds that support --whole-archive.
+             _LT_TAGVAR(whole_archive_flag_spec, 
$1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           else
+             # Exported symbols can be pulled into shared objects from archives
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           fi
            _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
            # This is similar to how AIX traditionally builds its shared
            # libraries.
@@ -5826,6 +5902,7 @@ if test "$_lt_caught_CXX_error" != yes; then
          # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
          # as there is no search path for DLLs.
          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
          _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
          _LT_TAGVAR(always_export_symbols, $1)=no
          _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -6147,7 +6224,7 @@ if test "$_lt_caught_CXX_error" != yes; then
            # dependencies.
            output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v 
conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED 
"s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in 
conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; 
done; func_echo_all "X$list" | $Xsed'
            ;;
-         xl*)
+         xl* | mpixl* | bgxl*)
            # IBM XL 8.0 on PPC, with GNU ld
            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
            _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
@@ -6764,32 +6841,16 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1],
 ])# _LT_SYS_HIDDEN_LIBDEPS
 
 
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
 # _LT_LANG_F77_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a Fortran 77 compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
 # to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6909,32 +6970,17 @@ AC_LANG_POP
 ])# _LT_LANG_F77_CONFIG
 
 
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
 # _LT_LANG_FC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for a Fortran compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
 # to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
diff --git a/libltdl/m4/lt~obsolete.m4 b/libltdl/m4/lt~obsolete.m4
index b60bbd2..bf92b5e 100644
--- a/libltdl/m4/lt~obsolete.m4
+++ b/libltdl/m4/lt~obsolete.m4
@@ -77,7 +77,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL],  
[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
 m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
 m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
 m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC],             [AC_DEFUN([AC_LIBTOOL_RC])])
 m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
 m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
 m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        
[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
@@ -92,3 +91,8 @@ m4_ifndef([AC_LIBTOOL_CONFIG],                
[AC_DEFUN([AC_LIBTOOL_CONFIG])])
 m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
 m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],        
[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
 m4_ifndef([_LT_AC_PROG_CXXCPP],                
[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],        
[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],   [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/libtoolize.m4sh b/libtoolize.m4sh
index 27f17a7..bff700a 100644
--- a/libtoolize.m4sh
+++ b/libtoolize.m4sh
@@ -1021,6 +1021,7 @@ func_install_update ()
     $opt_debug
     my_sed_install='
        /^scriptversion='\''*[0-9][1-9.-]*'\''*/ {
+           s,[#;].*,,
            s,^scriptversion='\''*\([0-9.-]*\)'\''*,\1,
            s/-/./g
            p
diff --git a/tests/configure-iface.at b/tests/configure-iface.at
index 77e2ebc..2071646 100644
--- a/tests/configure-iface.at
+++ b/tests/configure-iface.at
@@ -127,6 +127,9 @@ SUBDIRS                     = libltdl
 AM_CPPFLAGS            = $(LTDLINCL)
 
 lib_LTLIBRARIES                = libmodule.la
+# Automake < 1.8 will use libmodule.la.c as default source,
+# while newer will choose libmodule.c; so specify it here.
+libmodule_la_SOURCES   = libmodule.c
 libmodule_la_LDFLAGS   = -module
 
 bin_PROGRAMS           = main
@@ -196,6 +199,9 @@ AT_DATA([Makefile.am],
 AM_CPPFLAGS            = $(LTDLINCL)
 
 lib_LTLIBRARIES                = libmodule.la
+# Automake < 1.8 will use libmodule.la.c as default source,
+# while newer will choose libmodule.c; so specify it here.
+libmodule_la_SOURCES   = libmodule.c
 libmodule_la_LDFLAGS   = -module
 
 bin_PROGRAMS           = main
@@ -204,6 +210,18 @@ main_LDADD         = $(LIBLTDL)
 main_DEPENDENCIES      = $(LTDLDEPS) libmodule.la
 ]])
 
+## Try to avoid linking against a previously installed libltdl found
+## with an explicit -L/path.
+save_LDFLAGS=$LDFLAGS
+LDFLAGS=
+for l in $save_LDFLAGS
+do
+  case $l in
+  -L*) ;;
+  *) LDFLAGS="$LDFLAGS $l" ;;
+  esac
+done
+
 # We don't use 'libtoolize --ltdl', so that we get an error if the test
 # tries to build and link against its own ltdl sources:
 LT_AT_BOOTSTRAP([], [-I _inst/aclocal], [], [--add-missing], [],
@@ -250,6 +268,9 @@ SUBDIRS                     = libltdl
 AM_CPPFLAGS            = $(LTDLINCL)
 
 lib_LTLIBRARIES                = libmodule.la
+# Automake < 1.8 will use libmodule.la.c as default source,
+# while newer will choose libmodule.c; so specify it here.
+libmodule_la_SOURCES   = libmodule.c
 libmodule_la_LDFLAGS   = -module
 
 bin_PROGRAMS           = main
diff --git a/tests/darwin.at b/tests/darwin.at
index 6284116..bb71207 100644
--- a/tests/darwin.at
+++ b/tests/darwin.at
@@ -1,6 +1,6 @@
 # darwin.at - tests specific to Mac OS X
 #
-#   Copyright (C) 2008 Free Software Foundation, Inc.
+#   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
 #   Written by Peter O'Gorman, 2008
 #
 #   This file is part of GNU Libtool.
@@ -98,3 +98,109 @@ AT_CHECK([$LIBTOOL --mode=link --tag=CC $CC  -o main$EXEEXT 
$CPPFLAGS $CFLAGS $L
 
 PATH=$save_PATH
 AT_CLEANUP
+
+
+AT_SETUP([darwin concurrent library extraction])
+
+AT_DATA([foo.c], [[
+int foo (void) { return 0; }
+]])
+
+AT_DATA([bar.c], [[
+extern int foo1 (void);
+int bar (void) { return foo1 (); }
+]])
+cp bar.c baz.c
+
+objects=
+for obj in 1 2 3 4 5 6 7 8; do
+  sed "s/foo/foo$obj/" < foo.c > foo$obj.c
+  AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c foo$obj.c],
+          [], [ignore], [ignore])
+  objects="$objects foo$obj.lo"
+done
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c bar.c],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c baz.c],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libfoo.la $objects],
+        [], [ignore], [ignore])
+
+# Hypothesis: concurrent convenience archive extraction works.
+for i in 1 2 3 4 5; do
+  rm -f libbar.la libbaz.la
+  AT_CHECK([($LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
+          [  -o libbar.la bar.lo -rpath /foo libfoo.la) & ]dnl
+          [($LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
+          [  -o libbaz.la baz.lo -rpath /foo libfoo.la) & ]dnl
+          [wait; test -f libbar.la && test -f libbaz.la],
+          [], [ignore], [ignore])
+done
+
+# Hypothesis: the lock is not used in dry run mode.
+eval "`$LIBTOOL --config | $EGREP '^(objdir)='`"
+# Next line is internal detail.
+lockfile=$objdir/libfoo.a.lock
+echo stamp > $lockfile
+AT_CHECK([$LIBTOOL --dry-run --mode=link $CC $CFLAGS $LDFLAGS ]dnl
+        [ -o libbar.la bar.lo -rpath /foo libfoo.la],
+        [], [ignore], [ignore])
+AT_CHECK([grep stamp $lockfile], [], [ignore])
+
+AT_CLEANUP
+
+AT_SETUP([darwin gdb debug information])
+
+AT_CHECK([gdb --version || (exit 77)],[ignore],[ignore],[ignore])
+
+AT_DATA([foo.c], [[
+int foo (void) { return 0; }
+]])
+
+AT_DATA([bar.c], [[
+extern int foo (void);
+int bar (void) { return foo (); }
+]])
+
+AT_DATA([main.c], [[
+extern int bar(void);
+
+int main() { return bar();}
+]])
+
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c bar.c],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c foo.c],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c main.c],
+        [], [ignore], [ignore])
+
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libfoo.la foo.lo],
+        [], [ignore], [ignore])
+
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
+        [  -o libbar.la bar.lo -rpath /foo libfoo.la ],
+        [], [ignore], [ignore])
+
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
+        [  -o main main.lo libbar.la],[], [ignore], [ignore])
+AT_CHECK([echo quit | $LIBTOOL --mode=execute gdb main],
+        [ignore], [ignore], [stderr])
+
+AT_CHECK([grep 'Could not find object file' stderr],[1],[ignore],[ignore])
+
+AT_XFAIL_IF([
+eval "`$LIBTOOL --config | $EGREP '^(whole_archive_flag_spec)='`"
+case $whole_archive_flag_spec:$host_os in
+:darwin*) : ;;
+*) false ;;
+esac ])
+
+# Remove any dSYM bundle
+rm -rf .libs/*.dSYM
+
+AT_CHECK([echo quit | $LIBTOOL --mode=execute gdb main],
+        [ignore], [ignore], [stderr])
+AT_CHECK([grep 'Could not find object file' stderr],[1],[ignore],[ignore])
+
+AT_CLEANUP
diff --git a/tests/execute-mode.at b/tests/execute-mode.at
index 0fba29c..a1f2017 100644
--- a/tests/execute-mode.at
+++ b/tests/execute-mode.at
@@ -110,6 +110,7 @@ int main (int argc, char **argv)
 }
 ]])
 
+LDFLAGS="$LDFLAGS -no-undefined"
 instdir=`pwd`/inst
 libdir=$instdir/lib
 
@@ -211,7 +212,7 @@ do
 done
 
 # Check that .la files are not transformed by the wrapper searching loop.
-AT_CHECK([$LIBTOOL --mode=execute echo ./main liba.lo libfakelib.la], [], 
[stdout])
+AT_CHECK([$LIBTOOL --mode=execute echo ./main$EXEEXT liba.lo libfakelib.la], 
[], [stdout])
 # This could be .libs/lt-main or similar (or just plain `main').
 AT_CHECK([grep main stdout], [], [ignore])
 AT_CHECK([grep liba.lo stdout], [], [ignore])
diff --git a/tests/fail.at b/tests/fail.at
index fb05f8c..cec954b 100644
--- a/tests/fail.at
+++ b/tests/fail.at
@@ -50,15 +50,20 @@ FAIL_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS 
-c a.c])
 AT_CHECK([test -f a.lo], [1])
 
 # non-PIC compile failure
-case $pic_mode in default | yes)
-  case $build_old_libs,$pic_flag in yes,*-DPIC*)
-    AT_DATA([a.c], [[
+case $pic_mode in default | no)
+  case " $CFLAGS " in
+   *\ -prefer-pic\ *) ;;
+   *)
+    case $build_old_libs,$pic_flag in yes,*-DPIC*)
+      AT_DATA([a.c], [[
 #ifndef PIC
   choke me
 #endif
 ]])
-    FAIL_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -no-suppress -c 
a.c])
-    AT_CHECK([test -f a.lo], [1])
+      FAIL_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -no-suppress 
-c a.c])
+      AT_CHECK([test -f a.lo], [1])
+      ;;
+    esac
     ;;
   esac
   ;;
diff --git a/tests/flags.at b/tests/flags.at
new file mode 100644
index 0000000..eceda74
--- /dev/null
+++ b/tests/flags.at
@@ -0,0 +1,103 @@
+# flags.at -- libtool passing of flags             -*- Autotest -*-
+#
+#   Copyright (C) 2009 Free Software Foundation, Inc.
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+####
+
+m4_foreach([lt_tag], [CC, CXX, F77, FC, GCJ],
+[AT_SETUP([passing lt_tag flags through libtool])
+AT_KEYWORDS([libtool])
+LT_AT_TAG([lt_tag])
+
+LDFLAGS="$LDFLAGS -no-undefined"
+eval "`$LIBTOOL --config | $EGREP '^(FGREP)='`"
+
+m4_case(lt_tag,
+[CC], [AT_DATA([a.c],
+[[int main () { return 0; }
+]])
+compile="$CC $CPPFLAGS $CFLAGS" link="$CC $CFLAGS $LDFLAGS" source=a.c
+],
+[CXX], [AT_DATA([a.cpp],
+[[int main () { return 0; }
+]])
+compile="$CXX $CPPFLAGS $CXXFLAGS" link="$CXX $CXXFLAGS $LDFLAGS" source=a.cpp
+],
+[F77], [AT_DATA([a.f],
+[[      program main
+      end
+]])
+compile="$F77 $FFLAGS" link="$F77 $FFLAGS $LDFLAGS" source=a.f
+],
+[FC], [AT_DATA([a.f90],
+[[      program main
+      end
+]])
+compile="$FC $FCFLAGS" link="$FC $FCFLAGS $LDFLAGS" source=a.f90
+],
+[GCJ], [AT_DATA([a.java],
+[[class a {}
+]])
+compile="$GCJ $GCJFLAGS" link="$GCJ $GCJFLAGS $LDFLAGS" source=a.java
+])
+
+# Linker flags are not passed to the archiver, so don't test static libraries.
+if $LIBTOOL --features | grep 'enable shared libraries'; then
+  library_and_module='library.la "module.la -module -avoid-version"'
+else
+  library_and_module=
+fi
+
+eval "`$LIBTOOL --tag=lt_tag --config | $EGREP '^(wl|archive_cmds)='`"
+
+AT_CHECK([$LIBTOOL --tag=lt_tag --mode=compile $compile -c $source],
+        [], [ignore], [ignore])
+
+# Linker flags are prefixed with ${wl} iff they are passed to the
+# compiler driver, instead of directly to the linker.
+case $archive_cmds in
+*\$LD*\$linker_flags*) maybe_wl= ;;
+*) maybe_wl=$wl ;;
+esac
+
+for flag in -Wc, -Wl, '-Xcompiler ' '-Xlinker '; do
+  case $flag in
+  -Wc, | -Xcompiler\ )
+    AT_CHECK([$LIBTOOL -n --tag=lt_tag --mode=compile $compile ]dnl
+            [$flag-foo -c $source], [], [stdout], [ignore])
+    AT_CHECK([$FGREP " -foo" stdout], [], [ignore])
+    flag_prefix=
+    ;;
+  -Wl, | -Xlinker\ )
+    flag_prefix=$maybe_wl
+    ;;
+  esac
+
+  eval set program$EXEEXT "$library_and_module"
+  for output
+  do
+    AT_CHECK([$LIBTOOL -n --tag=lt_tag --mode=link $link ]dnl
+            [-o $output a.lo -rpath /nowhere $flag-foo], [], [stdout], 
[ignore])
+    AT_CHECK([$FGREP " $flag_prefix-foo" stdout], [], [ignore])
+  done
+done
+
+AT_CLEANUP
+])dnl m4_foreach(tag)
diff --git a/tests/link-order2.at b/tests/link-order2.at
index 57ff4a0..a6eea0e 100644
--- a/tests/link-order2.at
+++ b/tests/link-order2.at
@@ -45,6 +45,7 @@
 
 AT_SETUP([Link order of deplibs])
 AT_KEYWORDS([libtool])
+AT_KEYWORDS([interactive])dnl running 'wrong' may cause a popup window.
 
 eval `$LIBTOOL --config | $EGREP '^(shlibpath_var|allow_undefined_flag)='`
 
diff --git a/tests/localization.at b/tests/localization.at
index 119b38d..71cdad4 100644
--- a/tests/localization.at
+++ b/tests/localization.at
@@ -49,6 +49,16 @@ AT_CHECK([$LIBTOOL --mode=compile --tag=CC $CC $CPPFLAGS 
$CFLAGS -c a.c || exit
         [1], [stdout], [stderr])
 LT_AT_NORMALIZE_COMPILER_OUTPUT([stdout], [libtool-stdout])
 LT_AT_NORMALIZE_COMPILER_OUTPUT([stderr], [libtool-stderr])
+# Avoid these errors:
+# GNU/Linux:
+#   /bin/sh: warning: setlocale: LC_ALL: cannot change locale (de_DE)
+# HP-UX:
+#   Warning! One or more of your selected locales are not available.
+#   Please invoke the commands "locale" and "locale -a" to verify your
+#   selections and the available locales.
+#
+#   Continuing processing using the "C" locale.
+AT_CHECK([grep locale stdout stderr && exit 77], [1])
 AT_CHECK([diff expected-stderr libtool-stderr])
 AT_CHECK([diff expected-stdout libtool-stdout])
 
diff --git a/tests/lt_dladvise.at b/tests/lt_dladvise.at
index 3bf9bee..cdbe91d 100644
--- a/tests/lt_dladvise.at
+++ b/tests/lt_dladvise.at
@@ -1,6 +1,6 @@
 # lt_dladvise.at -- test libltdl functionality                -*- Autotest -*-
 #
-#   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
 #   Written by Gary V. Vaughan, 2007
 #
 #   This file is part of GNU Libtool.
@@ -318,8 +318,11 @@ dlpreloadable='preload'
 # are reporting not able to accept the global hint to lt_dlopenadvise().    #
 # ------------------------------------------------------------------------- #
 
-case $host_os in
-cygwin* | mingw* | cegcc*)
+have_shared=false
+$LIBTOOL --features | grep 'enable shared libraries' >/dev/null && 
have_shared=:
+
+case $host_os,$have_shared in
+cygwin* | mingw* | cegcc* | *,false)
   # These hosts do not support linking without -no-undefined
   CPPFLAGS="$CPPFLAGS -DHAVE_UNDEFINED_SYMBOLS=0"
   ;;
diff --git a/tests/nonrecursive.at b/tests/nonrecursive.at
index 0ccabe8..d37ec05 100644
--- a/tests/nonrecursive.at
+++ b/tests/nonrecursive.at
@@ -1,6 +1,6 @@
 # nonrecursive.at -- test nonrecursive Automake Libltdl       -*- Autotest -*-
 #
-#   Copyright (C) 2005, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 2005, 2008, 2009 Free Software Foundation, Inc.
 #   Written by Gary V. Vaughan, 2005
 #
 #   This file is part of GNU Libtool.
@@ -46,7 +46,7 @@ AC_OUTPUT
 
 AT_DATA([Makefile.am],
 [[ACLOCAL_AMFLAGS = -I ltdl/m4
-AUTOMAKE_OPTIONS       = 1.7
+AUTOMAKE_OPTIONS       = 1.9.6
 BUILT_SOURCES          =
 
 AM_CPPFLAGS            =
diff --git a/tests/old-m4-iface.at b/tests/old-m4-iface.at
index 1e374d4..cb823a2 100644
--- a/tests/old-m4-iface.at
+++ b/tests/old-m4-iface.at
@@ -1,6 +1,6 @@
 # old-m4-iface.at -- exercise old m4 interface to libtool     -*- Autotest -*-
 #
-#   Copyright (C) 2005, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 2005, 2008, 2009 Free Software Foundation, Inc.
 #   Written by Gary V. Vaughan, 2005
 #
 #   This file is part of GNU Libtool.
@@ -143,7 +143,7 @@ module.la: module.lo
        $(LTLINK) module.lo -module -avoid-version -rpath /dev/null
 
 address@hidden@: address@hidden@ module.la libltdl/libltdlc.la
-       $(LTLINK) address@hidden@ -dlopen module.la @LIBLTDL@
+       $(LTLINK) address@hidden@ -dlopen module.la @LIBLTDL@ @LIBS@
 
 .SUFFIXES:
 .SUFFIXES: .c address@hidden@ .lo
@@ -155,8 +155,10 @@ address@hidden@: address@hidden@ module.la 
libltdl/libltdlc.la
        $(LTCOMPILE) -c -o $@ $<
 ]])
 
+# Be sure to use the in-tree libltdl, somebody might have removed
+# an installed libltdl.la file.
 LT_AT_BOOTSTRAP([--ltdl --install], [-I libltdl/m4], [ignore], [ignore],
-       [--force])
+       [--force], [--with-included-ltdl])
 
 LT_AT_EXEC_CHECK([./ltdldemo], 0, [ignore])
 
diff --git a/tests/static.at b/tests/static.at
index 68dab5a..dfa4c42 100644
--- a/tests/static.at
+++ b/tests/static.at
@@ -67,6 +67,7 @@
 
 AT_SETUP([static linking flags for programs])
 AT_KEYWORDS([libtool])
+AT_KEYWORDS([interactive])dnl Some of the exec_fail test cause popups with 
MinGW.
 
 LDFLAGS="$LDFLAGS -no-undefined"
 prefix=`pwd`/inst
diff --git a/tests/versioning.at b/tests/versioning.at
new file mode 100644
index 0000000..136a549
--- /dev/null
+++ b/tests/versioning.at
@@ -0,0 +1,239 @@
+# versioning.at -- test libtool versioning           -*- Autotest -*-
+#
+#   Copyright (C) 2009 Free Software Foundation, Inc.
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+####
+
+AT_SETUP([versioning])
+AT_KEYWORDS([libtool])
+
+eval "`$LIBTOOL --config | $EGREP '^(objdir)='`"
+
+# Setup some library and program sources:
+# a library (a1), a new revision (a2), a compatible update (a3),
+# an incompatible update (a4).
+# Another library (libb) using liba, and a couple of programs,
+# using liba directly and indirectly through libb.
+
+AT_DATA([liba1.c], [[
+int a (void)
+{
+  return 0;
+}
+]])
+
+AT_DATA([liba2.c], [[
+/* The internal detail should be static.  It isn't static in this test,
+   so we can later find out that it's this revision of the library. */
+int internal_detail = 42;
+int a (void)
+{
+  return internal_detail - 42;
+}
+]])
+
+AT_DATA([liba3.c], [[
+int a (void)
+{
+  return 0;
+}
+int aa (void)
+{
+  return 0;
+}
+]])
+
+AT_DATA([liba4.c], [[
+int aa (void)
+{
+  return 0;
+}
+]])
+
+AT_DATA([libb.c], [[
+extern int a (void);
+int b (void)
+{
+  return a ();
+}
+]])
+
+AT_DATA([prog1.c], [[
+extern int a (void);
+int main (void)
+{
+  return a ();
+}
+]])
+
+AT_DATA([prog2.c], [[
+extern int b (void);
+int main (void)
+{
+  return b ();
+}
+]])
+
+AT_DATA([prog3.c], [[
+extern int a (void), internal_detail;
+int main (void)
+{
+  return a () + internal_detail - 42;
+}
+]])
+
+
+inst=`pwd`/inst
+libdir=$inst/lib
+bindir=$inst/bin
+mkdir $inst $libdir $bindir
+
+for file in liba1.c liba2.c liba3.c liba4.c libb.c; do
+  $LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c $file
+done
+for file in prog1.c prog2.c prog3.c; do
+  $CC $CPPFLAGS $CFLAGS -c $file
+done
+
+# Setup is finished here.
+
+# Hypothesis: -version-info is ignored for convenience archives.
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba1.lo ]dnl
+        [-version-info 0:0:0], [], [ignore], [stderr])
+AT_CHECK([grep 'version-info.*ignored for convenience' stderr], [], [ignore])
+
+# Hypothesis: the deprecated -version-number works.
+# Be sure not to use zero here, it's not portable.
+for version_number in 1 1:1 2:1 1:1:1 3:2:1; do
+  AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba1.lo ]dnl
+          [-version-number $version_number -rpath $libdir], [], [ignore], 
[ignore])
+done
+
+# Hypothesis: -version-info can be passed kinds of values, esp. zero ones
+# and large ones.
+# TODO: check something like 1001:2419:189 after fixing issues
+# for `version_type's of `irix', `nonstopux', or `osf'.
+for version_info in 1 1:2 0:0:0 1:1:1 13:241:7; do
+  AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba1.lo ]dnl
+          [-version-info $version_info -rpath $libdir], [], [ignore], [ignore])
+done
+
+# Hypothesis: we diagnose when AGE is higher than CURRENT.
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba1.lo ]dnl
+        [-version-info 1:3:2 -rpath $libdir], [1], [ignore], [stderr])
+AT_CHECK([grep 'AGE.*is greater than' stderr], [], [ignore])
+
+# Hypothesis: we diagnose invalid values.
+for version_info in 1:2:3:4 -1 0:-1 0:0:-1; do
+  AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba1.lo ]dnl
+          [-version-info $version_info -rpath $libdir], [1], [ignore], 
[ignore])
+done
+
+
+# Now, create an original version of the library and associated users.
+# This setup will be reused for further hypotheses below, and these
+# functions will be used to test working programs.
+
+test_uninstalled ()
+{
+  # temporarily move installed libraries out of the way in order to avoid
+  # skewing test results:
+  mv $libdir temp
+  LT_AT_EXEC_CHECK([./prog1])
+  LT_AT_EXEC_CHECK([./prog2])
+  mv temp $libdir
+}
+
+test_installed ()
+{
+  # temporarily move uninstalled libraries out of the way in order to avoid
+  # skewing test results:
+  mv $objdir temp
+  LT_AT_EXEC_CHECK([$bindir/prog1])
+  LT_AT_EXEC_CHECK([$bindir/prog2])
+  mv temp $objdir
+}
+
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba1.lo ]dnl
+        [-version-info 0:0:0 -rpath $libdir], [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libb.la libb.lo liba.la 
]dnl
+        [-version-info 0:0:0 -rpath $libdir], [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o prog1$EXEEXT 
prog1.$OBJEXT ]dnl
+        [liba.la], [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o prog2$EXEEXT 
prog2.$OBJEXT ]dnl
+        [libb.la], [], [ignore], [ignore])
+test_uninstalled
+AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=install cp prog1$EXEEXT prog2$EXEEXT $bindir],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
+test_installed
+AT_CHECK([$LIBTOOL --mode=uninstall rm -f $libdir/liba.la], [], [ignore], 
[ignore])
+
+
+# Hypothesis: library revision updates do not require (uninstalled
+# nor installed) programs to be relinked.
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba2.lo ]dnl
+        [-version-info 0:1:0 -rpath $libdir], [], [ignore], [ignore])
+test_uninstalled
+AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
+test_installed
+# do not uninstall here: the library may be reused in the next test.
+
+# Hypothesis: backward compatible library updates do not require
+# (uninstalled nor installed) programs to be relinked.
+# This can have one of several reasons:
+# - the soname is the difference between $current and $age, thus
+#   unchanged; in this case, the newly installed library will be used,
+# - the soname is only $current, or we are linking statically, in which case
+#   the old installed library code will be used,
+# - the numbers are not encoded at all, in which case the newly installed
+#   library will be used.
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba3.lo ]dnl
+        [-version-info 1:0:1 -rpath $libdir], [], [ignore], [ignore])
+# Do not test the uninstalled program, it may be broken (in the second case).
+AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
+test_installed
+# do not uninstall here: the library may be reused in the next test.
+
+
+# Hypothesis: with shared libraries, incompatible library updates
+# will not cause old installed programs (linked against the old
+# library version) to break.
+# This can have one of several reasons:
+# - the soname has changed, so the old installed library will still be
+#   available,
+# - we are linking statically, so the old library code will still be used.
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba4.lo ]dnl
+        [-version-info 2:0:0 -rpath $libdir], [], [ignore], [ignore])
+# We do not guarantee that old versions of an uninstalled library are still
+# available, so test_uninstalled will not necessarily work here any more.
+AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
+test_installed
+
+
+AT_CLEANUP


hooks/post-receive
-- 
GNU Libtool




reply via email to

[Prev in Thread] Current Thread [Next in Thread]