#!/bin/sh # # mkstandalone - Make a standalone bundle with GTK runtime # # Basilisk II (C) 1997-2006 Christian Bauer # # mkstandalone Copyright (C) 2006 Gwenole Beauchesne # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA PROG="${1%.app}" [ -n "$PROG" ] || { echo "Usage: ${0##*/} " exit 1 } [ -d "$PROG.app" ] || { echo "ERROR: $PROG.app bundle does not exist" exit 1 } [ -x "$PROG.app/Contents/MacOS/$PROG" ] || { echo "ERROR: $PROG.app is not a properly formed bundle" exit 1 } echo "Processing bundle $PROG.app" FRAMEWORKS="GLib GDK GTK" rm -r -f $PROG.app/Contents/Frameworks mkdir -p $PROG.app/Contents/Frameworks int_args="" for fmk_path in `otool -L $PROG.app/Contents/MacOS/$PROG | \ sed -n '/ *\(\/.*\.framework\/.*\) ([^)]*)/s//\1/p'` do fmk_spath="${fmk_path%/Versions/*}" fmk="${fmk_spath%.framework}" fmk="${fmk##*/}" case " $FRAMEWORKS " in (*" $fmk "*) ;; (*) continue ;; esac echo " Linking in framework $fmk" fmk_dpath=$PROG.app/Contents/Frameworks/$fmk.framework rm -rf $fmk_dpath cp -Rf $fmk_spath $fmk_dpath find $fmk_dpath -name "*Headers*" | xargs rm -rf fmk_vpath="${fmk_path##*.framework/}" # change library dependency install_name_tool -change \ $fmk_spath/$fmk_vpath \ @executable_path/../Frameworks/$fmk.framework/$fmk_vpath \ $PROG.app/Contents/MacOS/$PROG # change shared library id name fmk_newid="@executable_path/../Frameworks/${fmk_path#*/Frameworks/}" install_name_tool -id $fmk_newid $fmk_dpath/$fmk_vpath # expand final install_name_tool args list int_args="$int_args -change $fmk_path $fmk_newid" # strip shared library strip -x $fmk_dpath/$fmk_vpath done # change remaining dependency libs names for f in $FRAMEWORKS; do install_name_tool $int_args $PROG.app/Contents/Frameworks/$f.framework/$f done exit 0