diff options
author | Stephan Diederich <stephan.diederich@gmail.com> | 2013-05-25 15:42:49 +0200 |
---|---|---|
committer | Memphiz <memphis@machzwo.de> | 2013-05-27 19:08:01 +0200 |
commit | d7a453a0e6568d34437ad1353c2435a590333727 (patch) | |
tree | b3ac1a336e712102d7c387e589334e7beb07eb3b /tools/darwin | |
parent | c054f7e8d90c4fcedd214c1bf378122a37b4a489 (diff) |
[xcode] move all after buildsteps into external 'command' shell scripts for easy diffs
Diffstat (limited to 'tools/darwin')
-rwxr-xr-x | tools/darwin/Support/Codesign.command | 19 | ||||
-rwxr-xr-x | tools/darwin/Support/CopyRootFiles-atv2.command | 56 | ||||
-rwxr-xr-x | tools/darwin/Support/CopyRootFiles-ios.command | 67 | ||||
-rwxr-xr-x | tools/darwin/Support/CopyRootFiles-osx.command | 64 | ||||
-rwxr-xr-x | tools/darwin/Support/copyframeworks-atv2.command | 130 | ||||
-rwxr-xr-x | tools/darwin/Support/copyframeworks-ios.command | 130 | ||||
-rwxr-xr-x | tools/darwin/Support/copyframeworks-osx.command | 126 | ||||
-rwxr-xr-x | tools/darwin/Support/makepythoninterface.command | 11 | ||||
-rwxr-xr-x | tools/darwin/Support/updateversioninfo-osx.command | 9 |
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" + |