| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/bin/sh
- #
- # Name: set_install_name
- # Purpose: set install_name for wx shared libraries under Mac OS X
- # Usage: run with --help option to see the instructions
- # Copyright: (c) 2005 Vadim Zeitlin <vadim@wxwindows.org>
- # Licence: wxWindows licence
- ################################################################################
- quiet=0
- verbose=0
- libdir=
- tool_prefix=
- install_path=
- cmd=
- Usage()
- {
- name=`basename $0`
- cat 1>&2 <<EOF
- Usage: $name [OPTIONS] [--prefix=PFX] [--libdir=DIR] [install_path]
- Change the install name of all wxWidgets libraries in the directory DIR (or
- current directory if libdir option is not specified) to correspond to the given
- install_path (defaults to the libraries directory if not specified).
- If prefix option is given, its value is prefixed to the tool names used. E.g.
- to use this script when cross-building, use "--prefix=powerpc-apple-darwin8-".
- -n, --dry-run Don't really do anything, just print the commands
- -q, --quiet Don't display any non error messages
- -v, --verbose Just show the commands being executed, don't run them
- -h, --help Show this help screen and exit
- Examples:
- * do "$name --libdir=MyApp.app/Contents/Frameworks @executable_path/../Frameworks"
- when distributing wxWidgets shared libraries with application MyApp
- * run "$name" without parameters in the directory containing wxWidgets libraries
- to use them without installing
- EOF
- exit 2
- }
- Message()
- {
- if [ $quiet != 1 ]; then
- echo "$*"
- fi
- }
- VerboseMessage()
- {
- if [ $verbose = 1 ]; then
- Message "$*"
- fi
- }
- Error()
- {
- echo "$*" 1>&2
- }
- GiveUsageErrorAndExit()
- {
- Error "$@"
- Usage
- }
- ChangeInstallNames()
- {
- # only change the libs themselves, not symlinks to them
- all_libs=`find "$libdir" -type f -name libwx_\*.dylib`
- if [ -z "$all_libs" ]; then
- Error "No wx libraries found in \"$libdir\"."
- exit 1
- fi
- VerboseMessage "Processing $all_libs\n"
- for lib in $all_libs; do
- libname=`basename $lib`
- oldname=`${tool_prefix}otool -D $lib | tail -1`
- Message "Updating install name of and references to $libname:"
- for lib2 in $all_libs; do
- VerboseMessage " updating $lib2"
- eval "$cmd ${tool_prefix}install_name_tool -change "$oldname" $install_path/$libname $lib2"
- done
- VerboseMessage " updating $libname id"
- eval "$cmd ${tool_prefix}install_name_tool -id $install_path/$libname $lib"
- done
- }
- while [ $# -ge 1 ]; do
- case "$1" in
- --help|-h)
- Usage
- ;;
- --dry-run|-n)
- cmd="echo"
- ;;
- --quiet|-q)
- quiet=1
- ;;
- --verbose|-v)
- verbose=1
- ;;
- --libdir=*)
- if [ -n "$libdir" ]; then
- GiveUsageErrorAndExit "Multiple --libdir options not allowed."
- fi
- libdir=`echo $1 | cut -c10-`
- ;;
- --prefix=*)
- if [ -n "$tool_prefix" ]; then
- GiveUsageErrorAndExit "At most one --prefix option can be given."
- fi
- tool_prefix=`echo $1 | cut -c10-`
- ;;
- -*)
- GiveUsageErrorAndExit "Unknown option \"$1\"."
- ;;
- *)
- if [ -n "$install_path" ]; then
- GiveUsageErrorAndExit "Too many parameters."
- fi
- install_path=$1
- esac
- shift
- done
- if [ -z $libdir ]; then
- libdir=`pwd`
- fi
- if [ -z $install_path ]; then
- install_path=$libdir
- fi
- ChangeInstallNames
- exit 0
|