]> sigrok.org Git - sigrok-util.git/blob - cross-compile/macosx/create_dmg
macosx: Set $SIGROK_FIRMWARE_DIR environment variable.
[sigrok-util.git] / cross-compile / macosx / create_dmg
1 #!/bin/sh
2 ##
3 ## This file is part of the sigrok-util project.
4 ##
5 ## Copyright (C) 2017 Uwe Hermann <uwe@hermann-uwe.de>
6 ##
7 ## This program is free software; you can redistribute it and/or modify
8 ## it under the terms of the GNU General Public License as published by
9 ## the Free Software Foundation; either version 2 of the License, or
10 ## (at your option) any later version.
11 ##
12 ## This program is distributed in the hope that it will be useful,
13 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 ## GNU General Public License for more details.
16 ##
17 ## You should have received a copy of the GNU General Public License
18 ## along with this program; if not, see <http://www.gnu.org/licenses/>.
19 ##
20
21 set -e
22
23 # The path where the installed sigrok libraries/binaries are located.
24 PREFIX=$HOME/sr_macosx
25
26 # The path where to download files to and where to build packages.
27 BUILDDIR=./build_app
28
29 # Path to Qt5 binaries.
30 QTBINDIR=`brew list qt5 | grep bin | head -n 1 | xargs dirname`
31
32 # Path to boost libraries.
33 BOOSTLIBDIR=`brew list boost | grep libboost_system | head -n 1 | xargs dirname`
34
35 # Path to Python 3 framework.
36 PYTHONFRAMEWORKDIR=`brew list python3 | grep Python.framework | head -n 1 | xargs dirname`/../../../..
37
38 PYVER="3.6"
39
40 # You usually don't need to change anything below this line.
41
42 # -----------------------------------------------------------------------------
43
44 # Remove build directory contents (if any) and create a new build dir.
45 rm -rf $BUILDDIR
46 mkdir $BUILDDIR
47 cd $BUILDDIR
48
49 APPNAME="PulseView"
50 APPNAME_BINARY="pulseview"
51 APPVER="nightly"
52
53 CONTENTSDIR="$APPNAME.app/Contents"
54 MACOSDIR="$CONTENTSDIR/MacOS"
55 FRAMEWORKSDIR="$CONTENTSDIR/Frameworks"
56 SHARE_DIR="$CONTENTSDIR/share"
57 PYDIR="$FRAMEWORKSDIR/Python.framework/Versions/$PYVER"
58
59 mkdir -p $MACOSDIR $FRAMEWORKSDIR $SHARE_DIR
60
61 cp $PREFIX/bin/$APPNAME_BINARY $MACOSDIR
62 cp -R $PREFIX/share/libsigrokdecode $SHARE_DIR
63 rm -rf $SHARE_DIR/libsigrokdecode/decoders/**/__pycache__
64 rm -rf $SHARE_DIR/libsigrokdecode/decoders/common/**/__pycache__
65 cp -R $PREFIX/share/sigrok-firmware $SHARE_DIR
66
67 # Manually copy some boost libs that "macdeployqt" won't copy.
68 cp $BOOSTLIBDIR/libboost_timer-mt.dylib $FRAMEWORKSDIR
69 cp $BOOSTLIBDIR/libboost_chrono-mt.dylib $FRAMEWORKSDIR
70 chmod 644 $FRAMEWORKSDIR/*boost*
71
72 $QTBINDIR/macdeployqt $APPNAME.app
73
74 # Copy Python framework and fix it up.
75 cp -R $PYTHONFRAMEWORKDIR $FRAMEWORKSDIR
76 chmod 644 $PYDIR/lib/libpython*.dylib
77 rm -rf $PYDIR/Headers
78 rm -rf $PYDIR/bin
79 rm -rf $PYDIR/include
80 rm -rf $PYDIR/share
81 rm -rf $PYDIR/lib/pkgconfig
82 rm -rf $PYDIR/lib/python$PYVER/lib2to3
83 rm -rf $PYDIR/lib/python$PYVER/distutils
84 rm -rf $PYDIR/lib/python$PYVER/idlelib
85 rm -rf $PYDIR/lib/python$PYVER/test
86 rm -rf $PYDIR/lib/python$PYVER/**/test
87 rm -rf $PYDIR/lib/python$PYVER/tkinter
88 rm -rf $PYDIR/lib/python$PYVER/turtledemo
89 rm -rf $PYDIR/lib/python$PYVER/unittest
90 rm -rf $PYDIR/lib/python$PYVER/__pycache__
91 rm -rf $PYDIR/lib/python$PYVER/**/__pycache__
92 rm -rf $PYDIR/lib/python$PYVER/**/**/__pycache__
93 rm -rf $PYDIR/Resources
94 install_name_tool -change \
95         /usr/local/opt/python3/Frameworks/Python.framework/Versions/$PYVER/Python \
96         @executable_path/../Frameworks/Python.framework/Versions/$PYVER/Python \
97         $FRAMEWORKSDIR/libsigrokdecode.*.dylib
98
99 # Add PulseView wrapper script that sets PYTHONHOME and SIGROKDECODE_DIR.
100 mv $MACOSDIR/$APPNAME_BINARY $MACOSDIR/$APPNAME_BINARY.real
101 cp ../contrib/pulseview $MACOSDIR
102 chmod 755 $MACOSDIR/$APPNAME_BINARY
103
104 cp ../contrib/Info.plist $CONTENTSDIR
105 cp ../contrib/pulseview.icns $CONTENTSDIR/Resources
106
107 hdiutil create "${APPNAME}_${APPVER}.dmg" -volname "$APPNAME $APPVER" \
108         -fs HFS+ -srcfolder "$APPNAME.app"