ltmain.sh: Detect and handle object name conflicts while piecewise linking a static...
authorLoren J. Rittle <ljrittle@acm.org>
Mon, 6 May 2002 21:26:49 +0000 (21:26 +0000)
committerLoren J. Rittle <ljrittle@gcc.gnu.org>
Mon, 6 May 2002 21:26:49 +0000 (21:26 +0000)
* ltmain.sh: Detect and handle object name conflicts
while piecewise linking a static library.

From-SVN: r53237

ChangeLog
ltmain.sh

index 8c1f30bb65ff58aa7d125209939e60a0e472fe8e..0b7656b6850fa7b0ffd3e4d4a8960b9015ed2cac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-06  Loren J. Rittle <ljrittle@acm.org>
+
+       * ltmain.sh: Detect and handle object name conflicts
+       while piecewise linking a static library.
+
 2002-05-05  Alexandre Oliva  <aoliva@redhat.com>
 
        * configure.in (noconfigdirs): Don't disable libgcj on
index c3547e5a5616fe295eb4520d49735679f436ec3f..92526b60b795d2e598aa37a3de6efdf45440c80f 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -4247,6 +4247,20 @@ fi\
           objlist=
           concat_cmds=
           save_oldobjs=$oldobjs
+         # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+         # encoded into archives.  This makes 'ar r' malfunction in
+         # this piecewise linking case whenever conflicting object
+         # names appear in distinct ar calls; check, warn and compensate.
+          if (for obj in $save_oldobjs
+           do
+             $echo "X$obj" | $Xsed -e 's%^.*/%%'
+           done | sort | sort -uc >/dev/null 2>&1); then
+           :
+         else
+           $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+           $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+           AR_FLAGS=cq
+         fi
           for obj in $save_oldobjs
           do
             oldobjs="$objlist $obj"