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>