git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			151 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.6 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=
 | |
| 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
 |