Annotation of embedaddon/libiconv/build-aux/libtool-reloc, revision 1.1
1.1 ! misho 1: #!/bin/sh
! 2: # libtool-reloc - libtool wrapper with support for relocatable programs
! 3: # Copyright (C) 2019 Free Software Foundation, Inc.
! 4: # Written by Bruno Haible <bruno@clisp.org>, 2019.
! 5: #
! 6: # This program is free software: you can redistribute it and/or modify
! 7: # it under the terms of the GNU General Public License as published by
! 8: # the Free Software Foundation; either version 3 of the License, or
! 9: # (at your option) any later version.
! 10: #
! 11: # This program is distributed in the hope that it will be useful,
! 12: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 13: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 14: # GNU General Public License for more details.
! 15: #
! 16: # You should have received a copy of the GNU General Public License
! 17: # along with this program. If not, see <https://www.gnu.org/licenses/>.
! 18:
! 19: # Usage: libtool-reloc libtool LIBTOOL_ARGUMENTS
! 20:
! 21: # Outputs a command and runs it.
! 22: func_verbose ()
! 23: {
! 24: # Make it easy to copy&paste the printed command into a shell in most cases,
! 25: # by escaping '\\', '"', and '$'. This is not perfect, just good enough.
! 26: echo "$@" | sed -e 's/\([\\"$]\)/\\\1/g'
! 27: "$@"
! 28: }
! 29:
! 30: # Determine the mode from the arguments.
! 31: mode=
! 32: for arg
! 33: do
! 34: case "$arg" in
! 35: --mode=link) mode=link ;;
! 36: esac
! 37: done
! 38:
! 39: if test "$mode" = link; then
! 40: # Determine the target from the arguments.
! 41: target=
! 42: next_is_target=false
! 43: for arg
! 44: do
! 45: if $next_is_target; then
! 46: target="$arg"
! 47: next_is_target=false
! 48: else
! 49: case "$arg" in
! 50: -o) next_is_target=true ;;
! 51: *) next_is_target=false ;;
! 52: esac
! 53: fi
! 54: done
! 55: case "$target" in
! 56: *.la)
! 57: # When creating a library:
! 58: # 1. Add a '-Wl,-rpath,@loader_path' option.
! 59: # (A '-R @loader_path' option does not work: libtool produces
! 60: # an error "error: only absolute run-paths are allowed".)
! 61: # (Also note that 'install_name_tool -add_rpath @loader_path ...'
! 62: # does not work on Mac OS X 10.5.)
! 63: # This is done through the RELOCATABLE_LDFLAGS macro.
! 64: # 2. After creating the library, run
! 65: # install_name_tool -id @rpath/$dlname $target_dir/.libs/$dlname
! 66: # (This is easier than to modify the libtool script to emit a different
! 67: # install_name. Also, an option '-Wl,-install_name,@rpath/$dlname' does
! 68: # not work since libtool emits another option '-Wl,-install_name,...'
! 69: # after it.
! 70: "$@" && {
! 71: dlname_assignment=`grep '^dlname=' "$target"`
! 72: dlname=
! 73: eval "$dlname_assignment"
! 74: # Nothing to do when --disable-shared was specified.
! 75: if test -n "$dlname"; then
! 76: target_dir=`dirname "$target"`
! 77: if test -f "$target_dir/.libs/$dlname"; then
! 78: func_verbose install_name_tool -id "@rpath/$dlname" "$target_dir/.libs/$dlname"
! 79: fi
! 80: fi
! 81: }
! 82: ;;
! 83: *)
! 84: "$@"
! 85: ;;
! 86: esac
! 87: else
! 88: "$@"
! 89: fi
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>