5 function check_dyloaded_depends
7 b=$(find "$EXTERNAL_LIBS" -name $1 -print)
10 if [ ! -f "$TARGET_FRAMEWORKS/$(basename $b)" ]; then
12 cp -f "$b" "$TARGET_FRAMEWORKS/"
13 chmod u+w "$TARGET_FRAMEWORKS/$(basename $b)"
15 for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
17 if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
19 cp -f "$a" "$TARGET_FRAMEWORKS/"
20 chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
21 install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
28 function check_xbmc_dylib_depends
31 while [ $REWIND = "1" ]
34 for b in $(find "$1" -type f -name "$2" -print) ; do
36 install_name_tool -id "$(basename $b)" "$b"
37 for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
39 if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
41 cp -f "$a" "$TARGET_FRAMEWORKS/"
42 chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
45 install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$b"
51 EXTERNAL_LIBS=$XBMC_DEPENDS
53 TARGET_NAME=$PRODUCT_NAME
54 TARGET_CONTENTS=$TARGET_BUILD_DIR/$TARGET_NAME/Contents
56 TARGET_BINARY=$TARGET_CONTENTS/MacOS/XBMC
57 TARGET_FRAMEWORKS=$TARGET_CONTENTS/Frameworks
58 DYLIB_NAMEPATH=@executable_path/../Frameworks
59 XBMC_HOME=$TARGET_CONTENTS/Resources/XBMC
61 mkdir -p "$TARGET_CONTENTS/MacOS"
62 mkdir -p "$TARGET_CONTENTS/Resources"
63 # start clean so we don't keep old dylibs
64 rm -rf "$TARGET_CONTENTS/Frameworks"
65 mkdir -p "$TARGET_CONTENTS/Frameworks"
67 echo "Package $TARGET_BUILD_DIR/XBMC"
68 cp -f "$TARGET_BUILD_DIR/XBMC" "$TARGET_BINARY"
71 iconutil -c icns --output "$TARGET_CONTENTS/Resources/xbmc.icns" "$SRCROOT/tools/darwin/packaging/media/osx/icon.iconset"
73 cp -f "$SRCROOT/xbmc/osx/Info.plist" "$TARGET_CONTENTS/"
75 # Copy all of XBMC's dylib dependencies and rename their locations to inside the Framework
76 echo "Checking $TARGET_BINARY dylib dependencies"
77 for a in $(otool -L "$TARGET_BINARY" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
79 cp -f "$a" "$TARGET_FRAMEWORKS/"
80 chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
81 install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_BINARY"
84 echo "Package $EXTERNAL_LIBS/lib/python2.6"
85 mkdir -p "$TARGET_CONTENTS/Frameworks/lib"
86 PYTHONSYNC="rsync -aq --exclude .DS_Store --exclude *.a --exclude *.exe --exclude test --exclude tests"
87 ${PYTHONSYNC} "$EXTERNAL_LIBS/lib/python2.6" "$TARGET_FRAMEWORKS/lib/"
88 rm -rf "$TARGET_FRAMEWORKS/lib/python2.6/config"
90 echo "Checking $TARGET_FRAMEWORKS/lib/python2.6 *.so for dylib dependencies"
91 check_xbmc_dylib_depends "$TARGET_FRAMEWORKS"/lib/python2.6 "*.so"
93 echo "Checking $XBMC_HOME/system *.so for dylib dependencies"
94 check_xbmc_dylib_depends "$XBMC_HOME"/system "*.so"
96 echo "Checking $XBMC_HOME/addons *.so for dylib dependencies"
97 check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.so"
99 echo "Checking $XBMC_HOME/addons *.pvr for dylib dependencies"
100 check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.pvr"
102 echo "Checking $XBMC_HOME/addons *.xbs for dylib dependencies"
103 check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.xbs"
105 echo "Checking xbmc/DllPaths_generated.h for dylib dependencies"
106 for a in $(grep .dylib "$SRCROOT"/xbmc/DllPaths_generated.h | awk '{print $3}' | sed s/\"//g) ; do
107 check_dyloaded_depends $a
110 echo "Checking $TARGET_FRAMEWORKS for missing dylib dependencies"
112 while [ $REWIND = "1" ]
115 for b in "$TARGET_FRAMEWORKS/"*dylib* ; do
116 #echo " Processing $b"
117 for a in $(otool -L "$b" | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
118 #echo "Processing $a"
119 if [ ! -f "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
121 cp -f "$a" "$TARGET_FRAMEWORKS/"
122 chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
125 install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"