139 lines
3.1 KiB
Plaintext
139 lines
3.1 KiB
Plaintext
|
#!/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>
|
||
|
# Version: $Id$
|
||
|
# Licence: wxWindows licence
|
||
|
################################################################################
|
||
|
|
||
|
quiet=0
|
||
|
verbose=0
|
||
|
libdir=
|
||
|
install_path=
|
||
|
cmd=
|
||
|
|
||
|
Usage()
|
||
|
{
|
||
|
cat 1>&2 <<EOF
|
||
|
Usage: $0 [OPTIONS] [--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).
|
||
|
|
||
|
-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 "$0 --libdir=MyApp.app/Contents/Frameworks @executable_path/../Frameworks"
|
||
|
when distributing wxWidgets shared libraries with application MyApp
|
||
|
* run "$0" 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=`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 install_name_tool -change "$oldname" $install_path/$libname $lib2"
|
||
|
done
|
||
|
VerboseMessage " updating $libname id"
|
||
|
eval "$cmd 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-`
|
||
|
;;
|
||
|
|
||
|
-*)
|
||
|
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
|