+2010-08-13 Peter Rosin <peda@lysator.liu.se>
+
+ Allow the use of a listing file if the archiver supports it.
+ * libltdl/m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE): Move detection
+ of a suitable archiver...
+ (_LT_PROG_AR): ...to here. New macro, also detect if the
+ archiver supports a listing file with the new variable
+ archiver_list_spec.
+ * libltdl/config/ltmain.m4sh: If the archiver supports a listing
+ file, use it when max_cmd_len is exceeded. This is needed for
+ tool chains such as MSVC which do not support piece by piece
+ linking (-r -o).
+ * doc/libtool.texi (libtool script contents): Update with
+ archiver_list_spec description.
+
2010-08-10 Gary V. Vaughan <gary@gnu.org> (tiny change)
Make testsuite compatible with Autoconf 2.62 again.
@option{-export-symbols} and static libraries, respectively.
@end defvar
+@defvar archiver_list_spec
+Specify filename containing input files for @code{AR}.
+@end defvar
+
@defvar old_archive_from_new_cmds
If the shared library depends on a static library,
@samp{old_archive_from_new_cmds} contains the commands used to create that
len=$func_len_result
if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
cmds=$old_archive_cmds
+ elif test -n "$archiver_list_spec"; then
+ func_verbose "using command file archive linking..."
+ for obj in $oldobjs
+ do
+ $ECHO "$obj"
+ done > $output_objdir/$libname.libcmd
+ oldobjs=" $archiver_list_spec$output_objdir/$libname.libcmd"
+ cmds=$old_archive_cmds
else
# the command line is too long to link in one step, link in parts
func_verbose "using piecewise archive linking..."
])# _LT_ENABLE_LOCK
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([[int some_variable = 0;]],
+ [echo conftest.$ac_objext > conftest.lst
+ am_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ lt_cv_ar_at_file=@
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
# _LT_CMD_OLD_ARCHIVE
# -------------------
m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
+[_LT_PROG_AR
AC_CHECK_TOOL(STRIP, strip, :)
test -z "$STRIP" && STRIP=: