git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 |