script to set the install name correctly for all wx libraries from the given install prefix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
138
misc/scripts/set_install_name
Executable file
138
misc/scripts/set_install_name
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/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
|
Reference in New Issue
Block a user