Final(?) patch to update libtool in GCC and src trees

Paolo Bonzini paolo.bonzini@lu.unisi.ch
Thu Apr 12 10:42:00 GMT 2007


> It's a little unorthodox (and assumes a lot about libtool's 
> implementation) but we COULD:
> 
> (1) hardlink/copy ${ORIGINAL_AS_FOR_TARGET--without-$exeext} .
> (2) hardlink/copy ${ORIGINAL_AS_FOR_TARGET--with_$exeext} .
> (3) mkdir .libs
> (4) hardlink/copy ${ORIGINAL_AS_FOR_TARGET--with-/.libs/-inserted} .libs/

Another possibility (and I would be grateful if you would test this) is 
to confine all this stuff into a script, something like this (I'll call 
it exec-tool.in):

#! /bin/sh

ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@"
ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@"
ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@"

invoked=`basename "$0"`
case "$invoked" in
   as)
     original=$ORIGINAL_AS_FOR_TARGET
     prog=as-new
     dir=gas
     ;;
   collect-ld)
     original=$ORIGINAL_LD_FOR_TARGET
     prog=ld-new
     dir=ld
     ;;
   nm)
     original=$ORIGINAL_NM_FOR_TARGET
     prog=nm-new
     dir=binutils
     ;;
esac

case "$original" in
   ../*)
     if test -x ../$dir/$prog; then
       exec ../$dir/$prog ${1+"$@"}
     else
       exec ../prev-$dir/$prog ${1+"$@"}
     fi
     ;;
   *)
     exec "$original" ${1+"$@"}
     ;;
esac



Then, you *can* use symlinks.  So in configure.ac you can simply do

AC_CONFIG_FILES(exec-tool.sh:exec-tool.in, [chmod +x exec-tool.sh])
case "$ORIGINAL_AS_FOR_TARGET" in
   ./as) ;;
   *) AC_CONFIG_LINKS(as:exec-tool.sh) ;;
esac
case "$ORIGINAL_LD_FOR_TARGET" in
   ./collect-ld) ;;
   *) AC_CONFIG_LINKS(collect-ld:exec-tool.sh) ;;
esac
case "$ORIGINAL_NM_FOR_TARGET" in
   ./nm) ;;
   *) AC_CONFIG_LINKS(nm:exec-tool.sh) ;;
esac

and drop all the as/collect-ld/nm rules from Makefile.in.

Paolo



More information about the Newlib mailing list