[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: duplicate dependencies [was: RE: Very slow links: > 1 hour tolin k
From: |
Robert Boehne |
Subject: |
Re: duplicate dependencies [was: RE: Very slow links: > 1 hour tolin k single executable - can we help?] |
Date: |
Fri, 16 Nov 2001 19:28:48 -0600 |
Michael:
Thank you for so eloquently explaining this to all of us. I liked it so
much, I snipped out a part of it for libtool.texi in the following
patch.
ChangeLog Entry:
2001-11-16 Robert Boehne <address@hidden>
With help from Michael Matz <address@hidden>:
* ltmain.in: Add a new command line argument
--preserve-dup-deps for preserving duplicate
dependent libraries.
* libtool.texi: Document it.
I won't be back from vacation for a week, so I'll
be able to address any comments when I get back.
Thanks,
Robert
--
Robert Boehne Software Engineer
Ricardo Software Chicago Technical Center
TEL: (630)789-0003 x. 238
FAX: (630)789-0127
email: address@hidden
? install-sh
? mkinstalldirs
? missing
? INSTALL
? COPYING
? dup-dep-byarg.patch
? libltdl/config-h.in
Index: ltmain.in
===================================================================
RCS file: /cvsroot/libtool/libtool/ltmain.in,v
retrieving revision 1.282
diff -u -r1.282 ltmain.in
--- ltmain.in 2001/11/15 01:01:13 1.282
+++ ltmain.in 2001/11/17 00:37:54
@@ -213,6 +213,8 @@
--mode) prevopt="--mode" prev=mode ;;
--mode=*) mode="$optarg" ;;
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
--quiet | --silent)
show=:
;;
@@ -1638,9 +1640,11 @@
# Find all interdependent deplibs by searching for libraries
# that are linked more than once (e.g. -la -lb -la)
for deplib in $deplibs; do
- case "$libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
libs="$libs $deplib"
done
@@ -1651,12 +1655,14 @@
# $postdeps and mark them as special (i.e., whose duplicates are
# not to be eliminated).
pre_post_deps=
- for pre_post_dep in $predeps $postdeps; do
- case "$pre_post_deps " in
- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
- esac
- pre_post_deps="$pre_post_deps $pre_post_dep"
- done
+ if test "X$duplicate_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps"
;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
pre_post_deps=
fi
@@ -1890,9 +1896,11 @@
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
tmp_libs="$tmp_libs $deplib"
done
elif test "$linkmode" != prog && test "$linkmode" != lib; then
@@ -2017,9 +2025,11 @@
# or/and link against static libraries
newdependency_libs="$deplib $newdependency_libs"
fi
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
tmp_libs="$tmp_libs $deplib"
done # for deplib
continue
@@ -2334,9 +2344,11 @@
tmp_libs=
for deplib in $dependency_libs; do
newdependency_libs="$deplib $newdependency_libs"
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
tmp_libs="$tmp_libs $deplib"
done
Index: doc/libtool.texi
===================================================================
RCS file: /cvsroot/libtool/libtool/doc/libtool.texi,v
retrieving revision 1.122
diff -u -r1.122 libtool.texi
--- doc/libtool.texi 2001/09/30 10:20:29 1.122
+++ doc/libtool.texi 2001/11/17 00:37:55
@@ -1063,6 +1063,15 @@
Display basic configuration options. This provides a way for packages
to determine whether shared or static libraries will be built.
address@hidden --preserve-dup-deps
+Do not remove duplicate dependencies in libraries. When building packages
+with static libraries, the libraries may depend circularly on each other
+(shared libs too, but for those it doesn't matter), so there are
+situations, where -la -lb -la is required, and the second -la may not be
+stripped or the link will fail. In cases where these duplications are
+required, this option will preserve them, only stripping the libraries
+that libtool knows it can safely.
+
@item --finish
Same as @samp{--mode=finish}.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: duplicate dependencies [was: RE: Very slow links: > 1 hour tolin k single executable - can we help?],
Robert Boehne <=