OSDN Git Service

Backport from libtool CVS:
authorschwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Oct 2005 21:50:17 +0000 (21:50 +0000)
committerschwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Oct 2005 21:50:17 +0000 (21:50 +0000)
2002-11-03  Ossama Othman  <ossama@doc.ece.uci.edu>

* ltmain.sh: add support for installing into temporary
staging area (e.g. 'make install DESTDIR=...')

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104913 138bc75d-0d04-0410-961f-82ee72b054a4

ChangeLog
ltmain.sh

index 4407ade..abea938 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-10-03  Andreas Schwab  <schwab@suse.de>
+
+       Backport from libtool CVS:
+       2002-11-03  Ossama Othman  <ossama@doc.ece.uci.edu>
+
+       * ltmain.sh: add support for installing into temporary
+       staging area (e.g. 'make install DESTDIR=...')
+
 2005-10-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * configure.in (*-*-darwin*): Build bfd, binutils and opcodes.
index 837902e..9de8ae5 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -829,6 +829,7 @@ EOF
     linker_flags=
     dllsearchpath=
     lib_search_path=`pwd`
+    inst_prefix_dir=
 
     avoid_version=no
     dlfiles=
@@ -961,6 +962,11 @@ EOF
          prev=
          continue
          ;;
+       inst_prefix)
+         inst_prefix_dir="$arg"
+         prev=
+         continue
+         ;;
        release)
          release="-$arg"
          prev=
@@ -1187,6 +1193,11 @@ EOF
        continue
        ;;
 
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
       # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
       # so, if we see these flags be careful not to treat them like -L
       -L[A-Z][A-Z]*:*)
@@ -2171,6 +2182,14 @@ EOF
                add="$dir/$linklib"
              elif test "$hardcode_minus_L" = yes; then
                add_dir="-L$dir"
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case "$libdir" in
+                   [\\/]*)
+                     add_dir="$add_dir -L$inst_prefix_dir$libdir"
+                     ;;
+                 esac
+               fi
                add="-l$name"
              elif test "$hardcode_shlibpath_var" = yes; then
                add_shlibpath="$dir"
@@ -2229,6 +2248,14 @@ EOF
            else
              # We cannot seem to hardcode it, guess we'll fake it.
              add_dir="-L$libdir"
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case "$libdir" in
+                 [\\/]*)
+                   add_dir="$add_dir -L$inst_prefix_dir$libdir"
+                   ;;
+               esac
+             fi
              add="-l$name"
            fi
 
@@ -4460,7 +4487,7 @@ fi\
       for tag in $taglist; do
         tagopts="$tagopts --tag $tag"
       done
-      relink_command="(cd `pwd`; $SHELL $0$tagopts --mode=relink $libtool_args)"
+      relink_command="(cd `pwd`; $SHELL $0$tagopts --mode=relink $libtool_args @inst_prefix_dir@)"
       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
 
       # Only create the output if not a dry run.
@@ -4761,6 +4788,27 @@ relink_command=\"$relink_command\""
        dir="$dir$objdir"
 
        if test -n "$relink_command"; then
+         # Determine the prefix the user has applied to our future dir.
+         inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
+
+         # Don't allow the user to place us outside of our expected
+         # location b/c this prevents finding dependent libraries that
+         # are installed to the same prefix.
+         # At present, this check doesn't affect windows .dll's that
+         # are installed into $libdir/../bin (currently, that works fine)
+         # but it's something to keep an eye on.
+         if test "$inst_prefix_dir" = "$destdir"; then
+           $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+           exit $EXIT_FAILURE
+         fi
+
+         if test -n "$inst_prefix_dir"; then
+           # Stick the inst_prefix_dir data into the link command.
+           relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+         else
+           relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
+         fi
+
          $echo "$modename: warning: relinking \`$file'" 1>&2
          $show "$relink_command"
          if $run eval "$relink_command"; then :