[osx] new icons + create icon from the iconset
[vuplus_xbmc] / tools / darwin / Support / copyframeworks-osx.command
1 #!/bin/bash
2
3 #set -x
4
5 function check_dyloaded_depends
6 {
7   b=$(find "$EXTERNAL_LIBS" -name $1 -print)
8   if [ -f "$b" ]; then
9     #echo "Processing $b"
10     if [ ! -f  "$TARGET_FRAMEWORKS/$(basename $b)" ]; then
11       echo "    Packaging $b"
12       cp -f "$b" "$TARGET_FRAMEWORKS/"
13       chmod u+w "$TARGET_FRAMEWORKS/$(basename $b)"
14     fi
15     for a in $(otool -L "$b"  | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
16       if [ -f "$a" ]; then
17         if [ ! -f  "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
18           echo "    Packaging $a"
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)"
22         fi
23       fi
24     done 
25   fi
26 }
27
28 function check_xbmc_dylib_depends
29 {
30   REWIND="1"
31   while [ $REWIND = "1" ]
32   do
33     let REWIND="0"
34     for b in $(find "$1" -type f -name "$2" -print) ; do
35       #echo "Processing $b"
36       install_name_tool -id "$(basename $b)" "$b"
37       for a in $(otool -L "$b"  | grep "$EXTERNAL_LIBS" | awk ' { print $1 } ') ; do
38         #echo "    Packaging $a"
39         if [ ! -f  "$TARGET_FRAMEWORKS/$(basename $a)" ]; then
40           echo "    Packaging $a"
41           cp -f "$a" "$TARGET_FRAMEWORKS/"
42           chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
43           let REWIND="1"
44         fi
45         install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$b"
46       done
47     done
48   done
49 }
50
51 EXTERNAL_LIBS=$XBMC_DEPENDS
52
53 TARGET_NAME=$PRODUCT_NAME
54 TARGET_CONTENTS=$TARGET_BUILD_DIR/$TARGET_NAME/Contents
55
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
60
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"
66
67 echo "Package $TARGET_BUILD_DIR/XBMC"
68 cp -f "$TARGET_BUILD_DIR/XBMC" "$TARGET_BINARY"
69
70 echo "Creating icon"
71 iconutil -c icns --output "$TARGET_CONTENTS/Resources/xbmc.icns" "$SRCROOT/tools/darwin/packaging/media/osx/icon.iconset"
72
73 cp -f "$SRCROOT/xbmc/osx/Info.plist" "$TARGET_CONTENTS/"
74
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 
78         echo "    Packaging $a"
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"
82 done
83
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"
89
90 echo "Checking $TARGET_FRAMEWORKS/lib/python2.6 *.so for dylib dependencies"
91 check_xbmc_dylib_depends "$TARGET_FRAMEWORKS"/lib/python2.6 "*.so"
92
93 echo "Checking $XBMC_HOME/system *.so for dylib dependencies"
94 check_xbmc_dylib_depends "$XBMC_HOME"/system "*.so"
95
96 echo "Checking $XBMC_HOME/addons *.so for dylib dependencies"
97 check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.so"
98
99 echo "Checking $XBMC_HOME/addons *.pvr for dylib dependencies"
100 check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.pvr"
101
102 echo "Checking $XBMC_HOME/addons *.xbs for dylib dependencies"
103 check_xbmc_dylib_depends "$XBMC_HOME"/addons "*.xbs"
104
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
108 done
109
110 echo "Checking $TARGET_FRAMEWORKS for missing dylib dependencies"
111 REWIND="1"
112 while [ $REWIND = "1" ]
113 do
114         let REWIND="0"
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
120                                 echo "    Packaging $a"
121                                 cp -f "$a" "$TARGET_FRAMEWORKS/"
122                                 chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
123                                 let REWIND="1"
124                         fi
125                         install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_FRAMEWORKS/$(basename $b)"
126                 done 
127         done
128 done
129