aboutsummaryrefslogtreecommitdiff
path: root/tools/darwin
diff options
context:
space:
mode:
authorStephan Diederich <stephan.diederich@gmail.com>2013-05-25 15:42:49 +0200
committerMemphiz <memphis@machzwo.de>2013-05-27 19:08:01 +0200
commitd7a453a0e6568d34437ad1353c2435a590333727 (patch)
treeb3ac1a336e712102d7c387e589334e7beb07eb3b /tools/darwin
parentc054f7e8d90c4fcedd214c1bf378122a37b4a489 (diff)
[xcode] move all after buildsteps into external 'command' shell scripts for easy diffs
Diffstat (limited to 'tools/darwin')
-rwxr-xr-xtools/darwin/Support/Codesign.command19
-rwxr-xr-xtools/darwin/Support/CopyRootFiles-atv2.command56
-rwxr-xr-xtools/darwin/Support/CopyRootFiles-ios.command67
-rwxr-xr-xtools/darwin/Support/CopyRootFiles-osx.command64
-rwxr-xr-xtools/darwin/Support/copyframeworks-atv2.command130
-rwxr-xr-xtools/darwin/Support/copyframeworks-ios.command130
-rwxr-xr-xtools/darwin/Support/copyframeworks-osx.command126
-rwxr-xr-xtools/darwin/Support/makepythoninterface.command11
-rwxr-xr-xtools/darwin/Support/updateversioninfo-osx.command9
9 files changed, 612 insertions, 0 deletions
diff --git a/tools/darwin/Support/Codesign.command b/tools/darwin/Support/Codesign.command
new file mode 100755
index 0000000000..d1d124ff81
--- /dev/null
+++ b/tools/darwin/Support/Codesign.command
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+export CODESIGN_ALLOCATE=`xcodebuild -find codesign_allocate`
+
+GEN_ENTITLEMENTS="/Developer/iphoneentitlements401/gen_entitlements.py"
+
+if [ ! -f ${GEN_ENTITLEMENTS} ]; then
+ echo "error: $GEN_ENTITLEMENTS not found. Codesign won't work."
+ exit -1
+fi
+
+
+if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
+ if [ -f "/Users/Shared/buildslave/keychain_unlock.sh" ]; then
+ /Users/Shared/buildslave/keychain_unlock.sh
+ fi
+ ${GEN_ENTITLEMENTS} "org.xbmc.xbmc-ios" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
+ codesign -v -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
+fi \ No newline at end of file
diff --git a/tools/darwin/Support/CopyRootFiles-atv2.command b/tools/darwin/Support/CopyRootFiles-atv2.command
new file mode 100755
index 0000000000..3bdd85da24
--- /dev/null
+++ b/tools/darwin/Support/CopyRootFiles-atv2.command
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+echo "copy root files"
+
+if [ "$ACTION" = build ] ; then
+
+# for external testing
+TARGET_NAME=$PRODUCT_NAME.$WRAPPER_EXTENSION
+#SRCROOT=/Users/Shared/xbmc_svn/XBMC
+#TARGET_BUILD_DIR=/Users/Shared/xbmc_svn/XBMC/build/Debug
+
+# rsync command with exclusions for items we don't want in the app package
+SYNC="rsync -aq --exclude .git* --exclude .DS_Store* --exclude *.dll --exclude *.DLL --exclude *linux.* --exclude *x86-osx.* --exclude *.zlib --exclude *.a --exclude *.pyd --exclude *x86-osx.so --exclude *powerpc-osx.so"
+
+# rsync command for skins. jpg, png exclusion is handled during sync
+# if a Textures.xbt file is found
+SKINSYNC="rsync -aq --exclude .git* --exclude CVS* --exclude .svn* --exclude .cvsignore* --exclude .cvspass* --exclude .DS_Store* --exclude *.dll --exclude *.DLL --exclude *linux.* --exclude *.bat"
+
+# rsync command for including everything but the skins
+ADDONSYNC="rsync -aq --exclude .git* --exclude CVS* --exclude .svn* --exclude .cvsignore* --exclude .cvspass* --exclude .DS_Store* --exclude skin.confluence --exclude skin.touched --exclude screensaver.rsxs* --exclude visualization.*"
+
+# binary name is XBMC but we build XBMC.bin so to get a clean binary each time
+mv $TARGET_BUILD_DIR/$TARGET_NAME/XBMC.bin $TARGET_BUILD_DIR/$TARGET_NAME/XBMC
+
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/language"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/media"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/sounds"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/system"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/userdata"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/media"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/tools/darwin/runtime"
+
+${SYNC} "$SRCROOT/LICENSE.GPL" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/"
+${SYNC} "$SRCROOT/xbmc/osx/Credits.html" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/"
+${ADDONSYNC} "$SRCROOT/addons" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/addons/visualization.glspectrum" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/addons/visualization.waveform" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/language" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/media" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+
+SYNCSKIN_A=${SKINSYNC}
+if [ -f "$SRCROOT/addons/skin.confluence/media/Textures.xbt" ]; then
+SYNCSKIN_A="${SKINSYNC} --exclude *.png --exclude *.jpg"
+fi
+${SYNCSKIN_A} "$SRCROOT/addons/skin.confluence" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/addons/skin.confluence/backgrounds" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons/skin.confluence"
+${SYNC} "$SRCROOT/addons/skin.confluence/icon.png" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons/skin.confluence"
+
+${SYNC} "$SRCROOT/sounds" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/system" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/userdata" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+
+fi
+
diff --git a/tools/darwin/Support/CopyRootFiles-ios.command b/tools/darwin/Support/CopyRootFiles-ios.command
new file mode 100755
index 0000000000..ff87cd1201
--- /dev/null
+++ b/tools/darwin/Support/CopyRootFiles-ios.command
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+echo "copy root files"
+
+if [ "$ACTION" = build ] ; then
+
+# for external testing
+TARGET_NAME=$PRODUCT_NAME.$WRAPPER_EXTENSION
+#SRCROOT=/Users/Shared/xbmc_svn/XBMC
+#TARGET_BUILD_DIR=/Users/Shared/xbmc_svn/XBMC/build/Debug
+
+# rsync command with exclusions for items we don't want in the app package
+SYNC="rsync -aq --exclude .git* --exclude .DS_Store* --exclude *.dll --exclude *.DLL --exclude *linux.* --exclude *x86-osx.so --exclude *.zlib --exclude *.a"
+
+# rsync command for skins. jpg, png exclusion is handled during sync
+# if a Textures.xbt file is found
+SKINSYNC="rsync -aq --exclude .git* --exclude CVS* --exclude .svn* --exclude .cvsignore* --exclude .cvspass* --exclude .DS_Store* --exclude *.dll --exclude *.DLL --exclude *linux.* --exclude *.bat"
+
+# rsync command for including everything but the skins
+ADDONSYNC="rsync -aq --exclude .git* --exclude CVS* --exclude .svn* --exclude .cvsignore* --exclude .cvspass* --exclude .DS_Store* --exclude skin.confluence --exclude skin.touched --exclude screensaver.rsxs* --exclude visualization.*"
+
+# binary name is XBMC but we build XBMC.bin so to get a clean binary each time
+mv $TARGET_BUILD_DIR/$TARGET_NAME/XBMC.bin $TARGET_BUILD_DIR/$TARGET_NAME/XBMC
+
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/language"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/media"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/sounds"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/system"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/userdata"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/media"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/tools/darwin/runtime"
+
+${SYNC} "$SRCROOT/LICENSE.GPL" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/"
+${SYNC} "$SRCROOT/xbmc/osx/Credits.html" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/"
+${ADDONSYNC} "$SRCROOT/addons" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/addons/visualization.glspectrum" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/addons/visualization.waveform" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/language" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/media" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+
+# sync skin.touched if it exists
+if [ -f "$SRCROOT/addons/skin.touched/addon.xml" ]; then
+SYNCSKIN_A=${SKINSYNC}
+if [ -f "$SRCROOT/addons/skin.touched/media/Textures.xbt" ]; then
+SYNCSKIN_A="${SKINSYNC} --exclude *.png --exclude *.jpg"
+fi
+${SYNCSKIN_A} "$SRCROOT/addons/skin.touched" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/addons/skin.touched/background" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons/skin.touched"
+${SYNC} "$SRCROOT/addons/skin.touched/icon.png" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons/skin.touched"
+fi
+
+# sync skin.confluence
+SYNCSKIN_B=${SKINSYNC}
+if [ -f "$SRCROOT/addons/skin.confluence/media/Textures.xbt" ]; then
+SYNCSKIN_B="${SKINSYNC} --exclude *.png --exclude *.jpg"
+fi
+${SYNCSKIN_B} "$SRCROOT/addons/skin.confluence" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons"
+${SYNC} "$SRCROOT/addons/skin.confluence/backgrounds" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons/skin.confluence"
+${SYNC} "$SRCROOT/addons/skin.confluence/icon.png" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome/addons/skin.confluence"
+
+${SYNC} "$SRCROOT/sounds" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/system" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+${SYNC} "$SRCROOT/userdata" "$TARGET_BUILD_DIR/$TARGET_NAME/XBMCData/XBMCHome"
+
+fi \ No newline at end of file
diff --git a/tools/darwin/Support/CopyRootFiles-osx.command b/tools/darwin/Support/CopyRootFiles-osx.command
new file mode 100755
index 0000000000..ef72f639b2
--- /dev/null
+++ b/tools/darwin/Support/CopyRootFiles-osx.command
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+echo "copy root files"
+
+if [ "$ACTION" = build ] ; then
+
+# for external testing
+#TARGET_NAME=XBMC.app
+#SRCROOT=/Users/Shared/xbmc_svn/XBMC
+#TARGET_BUILD_DIR=/Users/Shared/xbmc_svn/XBMC/build/Debug
+
+# rsync command with exclusions for items we don't want in the app package
+SYNC="rsync -aq --exclude .git* --exclude .DS_Store* --exclude *.dll --exclude *.DLL --exclude *linux.* --exclude *arm-osx.* --exclude *.zlib --exclude *.a"
+
+# rsync command for excluding pngs and jpgs as well. Note that if the skin itself is not compiled
+# using XBMCTex then excluding the pngs and jpgs will most likely make the skin unusable
+SYNCSKIN="rsync -aq --exclude .git* --exclude CVS* --exclude .svn* --exclude .cvsignore* --exclude .cvspass* --exclude .DS_Store* --exclude *.dll --exclude *.DLL --exclude *linux.* --exclude *.png --exclude *.jpg --exclude *.bat"
+
+# rsync command for including everything but the skins
+ADDONSYNC="rsync -aq --exclude .git* --exclude .DS_Store* --exclude skin.confluence --exclude skin.touched"
+
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/addons"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/language"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/media"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/sounds"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/system"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/userdata"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/media"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/tools/darwin/runtime"
+mkdir -p "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/extras/user"
+
+${SYNC} "$SRCROOT/LICENSE.GPL" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/"
+${SYNC} "$SRCROOT/xbmc/osx/Credits.html" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/"
+${SYNC} "$SRCROOT/tools/darwin/runtime" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/tools/darwin"
+${ADDONSYNC} "$SRCROOT/addons" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+${SYNC} "$SRCROOT/language" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+${SYNC} "$SRCROOT/media" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+${SYNCSKIN} "$SRCROOT/addons/skin.confluence" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/addons"
+${SYNC} "$SRCROOT/addons/skin.confluence/backgrounds" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/addons/skin.confluence"
+${SYNC} "$SRCROOT/addons/skin.confluence/icon.png" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/addons/skin.confluence"
+${SYNC} "$SRCROOT/sounds" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+${SYNC} "$SRCROOT/system" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+${SYNC} "$SRCROOT/userdata" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+
+# copy extra packages if applicable
+if [ -d "$SRCROOT/extras/system" ]; then
+ ${SYNC} "$SRCROOT/extras/system/" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC"
+fi
+
+# copy extra user packages if applicable
+if [ -d "$SRCROOT/extras/user" ]; then
+ ${SYNC} "$SRCROOT/extras/user/" "$TARGET_BUILD_DIR/$TARGET_NAME/Contents/Resources/XBMC/extras/user"
+fi
+
+
+
+# magic that gets the icon to update
+touch "$TARGET_BUILD_DIR/$TARGET_NAME"
+
+# not sure we want to do this with out major testing, many scripts cannot handle the spaces in the app name
+#mv "$TARGET_BUILD_DIR/$TARGET_NAME" "$TARGET_BUILD_DIR/XBMC Media Center.app"
+
+fi
diff --git a/tools/darwin/Support/copyframeworks-atv2.command b/tools/darwin/Support/copyframeworks-atv2.command
new file mode 100755
index 0000000000..c604682907
--- /dev/null
+++ b/tools/darwin/Support/copyframeworks-atv2.command
@@ -0,0 +1,130 @@
+#!/bin/bash
+
+#set -x
+
+function check_dyloaded_depends
+{
+ b=$(find "$EXTERNAL_LIBS" -name $1 -print)
+ if [ -f "$b" ]; then
+ #echo "Processing $b"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $b)" ]; then
+ echo " Packaging $b"
+ cp -f "$b" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $b)"
+ fi
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ if [ -f "$a" ]; then
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
+ fi
+ fi
+ done
+ fi
+}
+
+function check_xbmc_dylib_depends
+{
+ REWIND="1"
+ while [ $REWIND = "1" ]
+ do
+ let REWIND="0"
+ for b in $(find "$1" -type f -name "$2" -print) ; do
+ #echo "Processing $b"
+ install_name_tool -id "$(basename $b)" "$b"
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ #echo " Packaging $a"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ let REWIND="1"
+ fi
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$b"
+ done
+ done
+ done
+}
+
+EXTERNAL_LIBS=$XBMC_DEPENDS
+
+TARGET_NAME=$PRODUCT_NAME.$WRAPPER_EXTENSION
+TARGET_CONTENTS=$TARGET_BUILD_DIR/$TARGET_NAME
+
+TARGET_BINARY=$TARGET_CONTENTS/XBMC
+TARGET_FRAMEWORKS=$TARGET_CONTENTS/Frameworks
+DYLIB_NAMEPATH=@executable_path/Appliances/XBMC.frappliance/Frameworks
+XBMC_HOME=$TARGET_CONTENTS/XBMCData/XBMCHome
+
+mkdir -p "$TARGET_CONTENTS"
+mkdir -p "$TARGET_CONTENTS/XBMCData/XBMCHome"
+# start clean so we don't keep old dylibs
+rm -rf "$TARGET_CONTENTS/Frameworks"
+mkdir -p "$TARGET_CONTENTS/Frameworks"
+
+echo "Package $TARGET_BUILD_DIR/XBMC"
+
+# Copy all of XBMC's dylib dependencies and rename their locations to inside the Framework
+echo "Checking $TARGET_BINARY dylib dependencies"
+for a in $(otool -L "$TARGET_BINARY" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_BINARY"
+done
+
+if [ "$SDK_NAME" = "iphoneos6.0" ] ; then
+ echo "Fixing $TARGET_BINARY VideoToolbox dylib name"
+ VTB_SDK6=/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox
+ VTB_SDK5=/System/Library/PrivateFrameworks/VideoToolbox.framework/VideoToolbox
+ install_name_tool -change "$VTB_SDK6" "$VTB_SDK5" "$TARGET_BINARY"
+fi
+
+echo "Package $EXTERNAL_LIBS/lib/python2.6"
+mkdir -p "$TARGET_CONTENTS/Frameworks/lib"
+PYTHONSYNC="rsync -aq --exclude .DS_Store --exclude *.a --exclude *.exe --exclude test --exclude tests"
+${PYTHONSYNC} "$EXTERNAL_LIBS/lib/python2.6" "$TARGET_FRAMEWORKS/lib/"
+rm -rf "$TARGET_FRAMEWORKS/lib/python2.6/config"
+
+echo "Checking $TARGET_FRAMEWORKS/lib/python2.6 *.so for dylib dependencies"
+check_xbmc_dylib_depends "$TARGET_FRAMEWORKS"/lib/python2.6 "*.so"
+
+echo "Checking $XBMC_HOME/system *.so for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/system "*.so"
+
+echo "Checking $XBMC_HOME/addons *.so for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.so"
+
+echo "Checking $XBMC_HOME/addons *.pvr for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.pvr"
+
+echo "Checking $XBMC_HOME/addons *.xbs for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.xbs"
+
+echo "Checking xbmc/DllPaths_generated.h for dylib dependencies"
+for a in $(grep .dylib "$SRCROOT"/xbmc/DllPaths_generated.h | awk '{print $3}' | sed s/\"//g) ; do
+ check_dyloaded_depends $a
+done
+
+echo "Checking $TARGET_FRAMEWORKS for missing dylib dependencies"
+REWIND="1"
+while [ $REWIND = "1" ]
+do
+ let REWIND="0"
+ for b in "$TARGET_FRAMEWORKS/"*dylib* ; do
+ #echo " Processing $b"
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ #echo "Processing $a"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ let REWIND="1"
+ fi
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
+ done
+ done
+done
+
diff --git a/tools/darwin/Support/copyframeworks-ios.command b/tools/darwin/Support/copyframeworks-ios.command
new file mode 100755
index 0000000000..025f15dad4
--- /dev/null
+++ b/tools/darwin/Support/copyframeworks-ios.command
@@ -0,0 +1,130 @@
+#!/bin/bash
+
+#set -x
+
+function check_dyloaded_depends
+{
+ b=$(find "$EXTERNAL_LIBS" -name $1 -print)
+ if [ -f "$b" ]; then
+ #echo "Processing $b"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $b)" ]; then
+ echo " Packaging $b"
+ cp -f "$b" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $b)"
+ fi
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ if [ -f "$a" ]; then
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
+ fi
+ fi
+ done
+ fi
+}
+
+function check_xbmc_dylib_depends
+{
+ REWIND="1"
+ while [ $REWIND = "1" ]
+ do
+ let REWIND="0"
+ for b in $(find "$1" -type f -name "$2" -print) ; do
+ #echo "Processing $b"
+ install_name_tool -id "$(basename $b)" "$b"
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ #echo " Packaging $a"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ let REWIND="1"
+ fi
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$b"
+ done
+ done
+ done
+}
+
+EXTERNAL_LIBS=$XBMC_DEPENDS
+
+TARGET_NAME=$PRODUCT_NAME.$WRAPPER_EXTENSION
+TARGET_CONTENTS=$TARGET_BUILD_DIR/$TARGET_NAME
+
+TARGET_BINARY=$TARGET_CONTENTS/XBMC
+TARGET_FRAMEWORKS=$TARGET_CONTENTS/Frameworks
+DYLIB_NAMEPATH=@executable_path/Frameworks
+XBMC_HOME=$TARGET_CONTENTS/XBMCData/XBMCHome
+
+mkdir -p "$TARGET_CONTENTS"
+mkdir -p "$TARGET_CONTENTS/XBMCData/XBMCHome"
+# start clean so we don't keep old dylibs
+rm -rf "$TARGET_CONTENTS/Frameworks"
+mkdir -p "$TARGET_CONTENTS/Frameworks"
+
+echo "Package $TARGET_BUILD_DIR/XBMC"
+
+# Copy all of XBMC's dylib dependencies and rename their locations to inside the Framework
+echo "Checking $TARGET_BINARY dylib dependencies"
+for a in $(otool -L "$TARGET_BINARY" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+echo " Packaging $a"
+cp -f "$a" "$TARGET_FRAMEWORKS/"
+chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_BINARY"
+done
+
+if [ "$SDK_NAME" = "iphoneos6.0" ] ; then
+echo "Fixing $TARGET_BINARY VideoToolbox dylib name"
+VTB_SDK6=/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox
+VTB_SDK5=/System/Library/PrivateFrameworks/VideoToolbox.framework/VideoToolbox
+install_name_tool -change "$VTB_SDK6" "$VTB_SDK5" "$TARGET_BINARY"
+fi
+
+echo "Package $EXTERNAL_LIBS/lib/python2.6"
+mkdir -p "$TARGET_CONTENTS/Frameworks/lib"
+PYTHONSYNC="rsync -aq --exclude .DS_Store --exclude *.a --exclude *.exe --exclude test --exclude tests"
+${PYTHONSYNC} "$EXTERNAL_LIBS/lib/python2.6" "$TARGET_FRAMEWORKS/lib/"
+rm -rf "$TARGET_FRAMEWORKS/lib/python2.6/config"
+
+echo "Checking $TARGET_FRAMEWORKS/lib/python2.6 *.so for dylib dependencies"
+check_xbmc_dylib_depends "$TARGET_FRAMEWORKS"/lib/python2.6 "*.so"
+
+echo "Checking $XBMC_HOME/system *.so for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/system "*.so"
+
+echo "Checking $XBMC_HOME/addons *.so for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.so"
+
+echo "Checking $XBMC_HOME/addons *.pvr for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.pvr"
+
+echo "Checking $XBMC_HOME/addons *.xbs for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.xbs"
+
+echo "Checking xbmc/DllPaths_generated.h for dylib dependencies"
+for a in $(grep .dylib "$SRCROOT"/xbmc/DllPaths_generated.h | awk '{print $3}' | sed s/\"//g) ; do
+ check_dyloaded_depends $a
+done
+
+echo "Checking $TARGET_FRAMEWORKS for missing dylib dependencies"
+REWIND="1"
+while [ $REWIND = "1" ]
+do
+ let REWIND="0"
+ for b in "$TARGET_FRAMEWORKS/"*dylib* ; do
+ #echo " Processing $b"
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ #echo "Processing $a"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ let REWIND="1"
+ fi
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
+ done
+ done
+done
+
diff --git a/tools/darwin/Support/copyframeworks-osx.command b/tools/darwin/Support/copyframeworks-osx.command
new file mode 100755
index 0000000000..3cafadb6f2
--- /dev/null
+++ b/tools/darwin/Support/copyframeworks-osx.command
@@ -0,0 +1,126 @@
+#!/bin/bash
+
+#set -x
+
+function check_dyloaded_depends
+{
+ b=$(find "$EXTERNAL_LIBS" -name $1 -print)
+ if [ -f "$b" ]; then
+ #echo "Processing $b"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $b)" ]; then
+ echo " Packaging $b"
+ cp -f "$b" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $b)"
+ fi
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ if [ -f "$a" ]; then
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
+ fi
+ fi
+ done
+ fi
+}
+
+function check_xbmc_dylib_depends
+{
+ REWIND="1"
+ while [ $REWIND = "1" ]
+ do
+ let REWIND="0"
+ for b in $(find "$1" -type f -name "$2" -print) ; do
+ #echo "Processing $b"
+ install_name_tool -id "$(basename $b)" "$b"
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ #echo " Packaging $a"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ let REWIND="1"
+ fi
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$b"
+ done
+ done
+ done
+}
+
+EXTERNAL_LIBS=$XBMC_DEPENDS
+
+TARGET_NAME=$PRODUCT_NAME
+TARGET_CONTENTS=$TARGET_BUILD_DIR/$TARGET_NAME/Contents
+
+TARGET_BINARY=$TARGET_CONTENTS/MacOS/XBMC
+TARGET_FRAMEWORKS=$TARGET_CONTENTS/Frameworks
+DYLIB_NAMEPATH=@executable_path/../Frameworks
+XBMC_HOME=$TARGET_CONTENTS/Resources/XBMC
+
+mkdir -p "$TARGET_CONTENTS/MacOS"
+mkdir -p "$TARGET_CONTENTS/Resources"
+# start clean so we don't keep old dylibs
+rm -rf "$TARGET_CONTENTS/Frameworks"
+mkdir -p "$TARGET_CONTENTS/Frameworks"
+
+echo "Package $TARGET_BUILD_DIR/XBMC"
+cp -f "$TARGET_BUILD_DIR/XBMC" "$TARGET_BINARY"
+cp -f "$SRCROOT/media/xbmc.icns" "$TARGET_CONTENTS/Resources/"
+cp -f "$SRCROOT/xbmc/osx/Info.plist" "$TARGET_CONTENTS/"
+
+# Copy all of XBMC's dylib dependencies and rename their locations to inside the Framework
+echo "Checking $TARGET_BINARY dylib dependencies"
+for a in $(otool -L "$TARGET_BINARY" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_BINARY"
+done
+
+echo "Package $EXTERNAL_LIBS/lib/python2.6"
+mkdir -p "$TARGET_CONTENTS/Frameworks/lib"
+PYTHONSYNC="rsync -aq --exclude .DS_Store --exclude *.a --exclude *.exe --exclude test --exclude tests"
+${PYTHONSYNC} "$EXTERNAL_LIBS/lib/python2.6" "$TARGET_FRAMEWORKS/lib/"
+rm -rf "$TARGET_FRAMEWORKS/lib/python2.6/config"
+
+echo "Checking $TARGET_FRAMEWORKS/lib/python2.6 *.so for dylib dependencies"
+check_xbmc_dylib_depends "$TARGET_FRAMEWORKS"/lib/python2.6 "*.so"
+
+echo "Checking $XBMC_HOME/system *.so for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/system "*.so"
+
+echo "Checking $XBMC_HOME/addons *.so for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.so"
+
+echo "Checking $XBMC_HOME/addons *.pvr for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.pvr"
+
+echo "Checking $XBMC_HOME/addons *.xbs for dylib dependencies"
+check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.xbs"
+
+echo "Checking xbmc/DllPaths_generated.h for dylib dependencies"
+for a in $(grep .dylib "$SRCROOT"/xbmc/DllPaths_generated.h | awk '{print $3}' | sed s/\"//g) ; do
+ check_dyloaded_depends $a
+done
+
+echo "Checking $TARGET_FRAMEWORKS for missing dylib dependencies"
+REWIND="1"
+while [ $REWIND = "1" ]
+do
+ let REWIND="0"
+ for b in "$TARGET_FRAMEWORKS/"*dylib* ; do
+ #echo " Processing $b"
+ for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
+ #echo "Processing $a"
+ if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
+ echo " Packaging $a"
+ cp -f "$a" "$TARGET_FRAMEWORKS/"
+ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
+ let REWIND="1"
+ fi
+ install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
+ done
+ done
+done
+
diff --git a/tools/darwin/Support/makepythoninterface.command b/tools/darwin/Support/makepythoninterface.command
new file mode 100755
index 0000000000..50d3a2233b
--- /dev/null
+++ b/tools/darwin/Support/makepythoninterface.command
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ -d "$XBMC_DEPENDS_ROOT/buildtools-native/bin" ]; then
+ PATH=$PATH:$XBMC_DEPENDS_ROOT/buildtools-native/bin
+else
+ PATH=$PATH:$XBMC_DEPENDS_ROOT/toolchain/bin
+fi
+
+if [ "$ACTION" = build ] ; then
+ make -f ${SRCROOT}/codegenerator.mk
+fi
diff --git a/tools/darwin/Support/updateversioninfo-osx.command b/tools/darwin/Support/updateversioninfo-osx.command
new file mode 100755
index 0000000000..2cd18cefc0
--- /dev/null
+++ b/tools/darwin/Support/updateversioninfo-osx.command
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# Update version in Info.plist with Git revision
+GIT_REVISION="Unknown"
+BUNDLE_NAME="XBMC"
+
+GIT_REVISION="Git-"$(cat git_revision.h | sed -n 's/\(.*\)\"\(.*\)\"\(.*\)/\2/p')
+perl -p -i -e "s/r####/$GIT_REVISION/" "$TARGET_BUILD_DIR/$BUNDLE_NAME.app/Contents/Info.plist"
+