Minimize binary size and external dependencies in OS X LaunchSLClient.app creation script.
parent
412ca26565
commit
f94099b485
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>LaunchSLClient</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>LaunchSLClient</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
|
||||
PWD=`pwd`
|
||||
|
||||
# Fetch the path relative to the launch point where this shell script exists.
|
||||
APP_PATH=`echo $0 | awk '{split($0,patharr,"/"); idx=1; while(patharr[idx+3] != "") { if (patharr[idx] != "/") {printf("%s/", patharr[idx]); idx++ }} }'`
|
||||
|
||||
# Fetch the app name (its our own name)
|
||||
APP_NAME=`echo $0 | awk '{split($0,patharr,"/"); idx=1; while(patharr[idx+1] != "") {idx++} printf("%s", patharr[idx]); }'`
|
||||
|
||||
cd "$APP_PATH/Contents/Resources"
|
||||
|
||||
./$APP_NAME
|
|
@ -6,13 +6,22 @@
|
|||
# This should be run from the bin directory.
|
||||
|
||||
APP_NAME="LaunchSLClient"
|
||||
SOURCE_PATH="../OpenSim/Tools/${APP_NAME}"
|
||||
|
||||
# Note that proper form is to copy Frameworks to
|
||||
# *.app/Contents/Frameworks, but because @executable_path resolves to
|
||||
# [...]/Resources/bin, and the libraries reference
|
||||
# @executable_path/../Frameworks, we put frameworks in
|
||||
# Contents/Resources instead.
|
||||
FRAMEWORKS_PATH="${APP_NAME}.app/Contents/Resources/Frameworks"
|
||||
ASSEMBLIES="mscorlib.dll \
|
||||
System.Windows.Forms.dll \
|
||||
System.Drawing.dll \
|
||||
System.Configuration.dll \
|
||||
System.Xml.dll \
|
||||
System.Security.dll \
|
||||
Mono.Security.dll \
|
||||
System.Data.dll \
|
||||
Mono.Data.Tds.dll \
|
||||
System.Transactions.dll \
|
||||
System.EnterpriseServices.dll \
|
||||
Mono.Mozilla.dll \
|
||||
Mono.Posix.dll \
|
||||
Accessibility.dll"
|
||||
|
||||
if [ ! -e ${APP_NAME}.exe ]; then
|
||||
echo "Error: Could not find ${APP_NAME}.exe." >& 2
|
||||
|
@ -20,19 +29,12 @@ if [ ! -e ${APP_NAME}.exe ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
CMDFLAGS="-m console -n ${APP_NAME} -a ${APP_NAME}.exe"
|
||||
|
||||
REFERENCES="-r /Library/Frameworks/Mono.framework/Versions/Current/lib/ \
|
||||
-r Nini.dll \
|
||||
-r ${APP_NAME}.ini"
|
||||
|
||||
if [ -f ${APP_NAME}.icns ]; then
|
||||
CMDFLAGS="${CMDFLAGS} -i ${APP_NAME}.icns"
|
||||
else
|
||||
echo "Warning: no icon file found. Will use default application icon." >&2
|
||||
fi
|
||||
mkbundle2 -z -o ${APP_NAME} ${APP_NAME}.exe ${ASSEMBLIES} || exit 1
|
||||
|
||||
if [ -d ${APP_NAME}.app ]; then rm -rf ${APP_NAME}.app; fi
|
||||
macpack ${REFERENCES} ${CMDFLAGS}
|
||||
cp -r ${SOURCE_PATH}/${APP_NAME}.app.skel ${APP_NAME}.app
|
||||
|
||||
mkdir -p ${FRAMEWORKS_PATH}
|
||||
# mkbundle doesn't seem to recognize the -L option, so we can't include Nini.dll in the bundling
|
||||
cp Nini.dll ${APP_NAME}.app/Contents/Resources
|
||||
|
||||
cp ${APP_NAME} ${APP_NAME}.ini ${APP_NAME}.app/Contents/Resources
|
||||
|
|
Loading…
Reference in New Issue