Missing OS X dep.
[dcpomatic.git] / platform / osx / make_dmg.sh
1 #!/bin/bash
2
3 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
4
5 # DMG size in megabytes
6 DMG_SIZE=256
7 WORK=build/platform/osx
8 ENV=/Users/carl/Environments/osx
9 ROOT=/Users/carl/cdist
10
11 appdir="DCP-o-matic.app"
12 approot=$appdir/Contents
13 libs=$approot/lib
14 macos=$approot/MacOS
15 resources=$approot/Resources
16
17 rm -rf $WORK/$appdir
18 mkdir -p $WORK/$macos
19 mkdir -p $WORK/$libs
20 mkdir -p $WORK/$resources
21
22 function universal_copy {
23     echo $2
24     for f in $1/32/$2; do
25         if [ -h $f ]; then
26             ln -s $(readlink $f) $3/`basename $f`
27         else
28           g=`echo $f | sed -e "s/\/32\//\/64\//g"`
29           mkdir -p $3
30           lipo -create $f $g -output $3/`basename $f`
31         fi
32     done
33 }
34
35 universal_copy $ROOT src/dvdomatic/build/src/tools/dcpomatic $WORK/$macos
36 universal_copy $ROOT src/dvdomatic/build/src/lib/libdcpomatic.dylib $WORK/$libs
37 universal_copy $ROOT src/dvdomatic/build/src/wx/libdcpomatic-wx.dylib $WORK/$libs
38 universal_copy $ROOT lib/libcxml.dylib $WORK/$libs
39 universal_copy $ROOT lib/libdcp.dylib $WORK/$libs
40 universal_copy $ROOT lib/libasdcp-libdcp.dylib $WORK/$libs
41 universal_copy $ROOT lib/libkumu-libdcp.dylib $WORK/$libs
42 universal_copy $ROOT lib/libopenjpeg*.dylib $WORK/$libs
43 universal_copy $ROOT lib/libavdevice*.dylib $WORK/$libs
44 universal_copy $ROOT lib/libavformat*.dylib $WORK/$libs
45 universal_copy $ROOT lib/libavfilter*.dylib $WORK/$libs
46 universal_copy $ROOT lib/libavutil*.dylib $WORK/$libs
47 universal_copy $ROOT lib/libavcodec*.dylib $WORK/$libs
48 universal_copy $ROOT lib/libswscale*.dylib $WORK/$libs
49 universal_copy $ROOT lib/libpostproc*.dylib $WORK/$libs
50 universal_copy $ROOT lib/libswresample*.dylib $WORK/$libs
51 universal_copy $ROOT bin/ffprobe $WORK/$macos
52 universal_copy $ENV lib/libboost_system.dylib $WORK/$libs
53 universal_copy $ENV lib/libboost_filesystem.dylib $WORK/$libs
54 universal_copy $ENV lib/libboost_thread.dylib $WORK/$libs
55 universal_copy $ENV lib/libboost_date_time.dylib $WORK/$libs
56 universal_copy $ENV lib/libxml++-2.6*.dylib $WORK/$libs
57 universal_copy $ENV lib/libxml2*.dylib $WORK/$libs
58 universal_copy $ENV lib/libglibmm-2.4*.dylib $WORK/$libs
59 universal_copy $ENV lib/libgobject*.dylib $WORK/$libs
60 universal_copy $ENV lib/libgthread*.dylib $WORK/$libs
61 universal_copy $ENV lib/libgmodule*.dylib $WORK/$libs
62 universal_copy $ENV lib/libsigc*.dylib $WORK/$libs
63 universal_copy $ENV lib/libglib-2*.dylib $WORK/$libs
64 universal_copy $ENV lib/libintl*.dylib $WORK/$libs
65 universal_copy $ENV lib/libsndfile*.dylib $WORK/$libs
66 universal_copy $ENV lib/libMagick++*.dylib $WORK/$libs
67 universal_copy $ENV lib/libMagickCore*.dylib $WORK/$libs
68 universal_copy $ENV lib/libMagickWand*.dylib $WORK/$libs
69 universal_copy $ENV lib/libssh*.dylib $WORK/$libs
70 universal_copy $ENV lib/libwx*.dylib $WORK/$libs
71 universal_copy $ENV lib/libfontconfig*.dylib $WORK/$libs
72 universal_copy $ENV lib/libfreetype*.dylib $WORK/$libs
73 universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
74 universal_copy $ENV lib/libltdl*.dylib $WORK/$libs
75 universal_copy $ENV lib/libxmlsec1*.dylib $WORK/$libs
76 universal_copy $ENV lib/libltdl*.dylib $WORK/$libs
77
78 for obj in $WORK/$macos/dcpomatic $WORK/$macos/ffprobe $WORK/$libs/*.dylib; do
79   deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh)"`
80   changes=""
81   for dep in $deps; do
82     base=`basename $dep`
83     changes="$changes -change $dep @executable_path/../lib/$base"
84   done
85   if test "x$changes" != "x"; then
86     install_name_tool $changes $obj
87   fi
88 done
89
90 cp build/platform/osx/Info.plist $WORK/$approot
91 cp icons/dcpomatic.icns $WORK/$resources/DCP-o-matic.icns
92
93 tmp_dmg=$WORK/dcpomatic_tmp.dmg
94 dmg="$WORK/DCP-o-matic $version.dmg"
95 vol_name=DCP-o-matic-$version
96
97 mkdir -p $WORK/$vol_name
98
99 rm -f $tmp_dmg "$dmg"
100 hdiutil create -megabytes $DMG_SIZE $tmp_dmg
101 device=$(hdid -nomount $tmp_dmg | grep Apple_HFS | cut -f 1 -d ' ')
102 newfs_hfs -v ${vol_name} $device
103 mount -t hfs "$device" $WORK/$vol_name
104
105 cp -r $WORK/$appdir $WORK/$vol_name
106
107 echo '
108   tell application "Finder"
109     tell disk "'$vol_name'"
110            open
111            set current view of container window to icon view
112            set toolbar visible of container window to false
113            set statusbar visible of container window to false
114            set the bounds of container window to {400, 200, 790, 410}
115            set theViewOptions to the icon view options of container window
116            set arrangement of theViewOptions to not arranged
117            set icon size of theViewOptions to 64
118            make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
119            set position of item "DCP-o-matic.app" of container window to {90, 80}
120            set position of item "Applications" of container window to {310, 80}
121            close
122            open
123            update without registering applications
124            delay 5
125            eject
126      end tell
127    end tell
128 ' | osascript
129
130 chmod -Rf go-w $WORK/mnt
131 sync
132
133 umount -f $device
134 hdiutil eject $device
135 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
136 sips -i $WORK/$resources/DCP-o-matic.icns
137 DeRez -only icns $WORK/$resources/DCP-o-matic.icns > $WORK/$resources/DCP-o-matic.rsrc
138 Rez -append $WORK/$resources/DCP-o-matic.rsrc -o "$dmg"
139 SetFile -a C "$dmg"
140