]> sigrok.org Git - sigrok-util.git/blame - cross-compile/macosx/create_dmg
macosx: Hardcode the Qt version to 5.5 for now.
[sigrok-util.git] / cross-compile / macosx / create_dmg
CommitLineData
5d2c0f55
UH
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
21set -e
22
23# The path where the installed sigrok libraries/binaries are located.
24PREFIX=$HOME/sr_macosx
25
26# The path where to download files to and where to build packages.
27BUILDDIR=./build_app
28
20e302a2
UH
29# We use Qt 5.5 in order to remain compatible with more versions of Mac OS X.
30QTVER=qt@5.5
31
5d2c0f55 32# Path to Qt5 binaries.
20e302a2 33QTBINDIR=`brew list $QTVER | grep bin | head -n 1 | xargs dirname`
5d2c0f55
UH
34
35# Path to boost libraries.
36BOOSTLIBDIR=`brew list boost | grep libboost_system | head -n 1 | xargs dirname`
37
38# Path to Python 3 framework.
39PYTHONFRAMEWORKDIR=`brew list python3 | grep Python.framework | head -n 1 | xargs dirname`/../../../..
40
c6ed5a3a 41PYVER="3.7"
5d2c0f55
UH
42
43# You usually don't need to change anything below this line.
44
45# -----------------------------------------------------------------------------
46
47# Remove build directory contents (if any) and create a new build dir.
48rm -rf $BUILDDIR
49mkdir $BUILDDIR
50cd $BUILDDIR
51
52APPNAME="PulseView"
53APPNAME_BINARY="pulseview"
54APPVER="nightly"
55
56CONTENTSDIR="$APPNAME.app/Contents"
57MACOSDIR="$CONTENTSDIR/MacOS"
58FRAMEWORKSDIR="$CONTENTSDIR/Frameworks"
59SHARE_DIR="$CONTENTSDIR/share"
60PYDIR="$FRAMEWORKSDIR/Python.framework/Versions/$PYVER"
61
62mkdir -p $MACOSDIR $FRAMEWORKSDIR $SHARE_DIR
63
64cp $PREFIX/bin/$APPNAME_BINARY $MACOSDIR
65cp -R $PREFIX/share/libsigrokdecode $SHARE_DIR
66rm -rf $SHARE_DIR/libsigrokdecode/decoders/**/__pycache__
67rm -rf $SHARE_DIR/libsigrokdecode/decoders/common/**/__pycache__
68cp -R $PREFIX/share/sigrok-firmware $SHARE_DIR
69
70# Manually copy some boost libs that "macdeployqt" won't copy.
71cp $BOOSTLIBDIR/libboost_timer-mt.dylib $FRAMEWORKSDIR
72cp $BOOSTLIBDIR/libboost_chrono-mt.dylib $FRAMEWORKSDIR
73chmod 644 $FRAMEWORKSDIR/*boost*
74
75$QTBINDIR/macdeployqt $APPNAME.app
76
77# Copy Python framework and fix it up.
78cp -R $PYTHONFRAMEWORKDIR $FRAMEWORKSDIR
79chmod 644 $PYDIR/lib/libpython*.dylib
80rm -rf $PYDIR/Headers
81rm -rf $PYDIR/bin
82rm -rf $PYDIR/include
83rm -rf $PYDIR/share
84rm -rf $PYDIR/lib/pkgconfig
85rm -rf $PYDIR/lib/python$PYVER/lib2to3
86rm -rf $PYDIR/lib/python$PYVER/distutils
87rm -rf $PYDIR/lib/python$PYVER/idlelib
88rm -rf $PYDIR/lib/python$PYVER/test
89rm -rf $PYDIR/lib/python$PYVER/**/test
90rm -rf $PYDIR/lib/python$PYVER/tkinter
91rm -rf $PYDIR/lib/python$PYVER/turtledemo
92rm -rf $PYDIR/lib/python$PYVER/unittest
93rm -rf $PYDIR/lib/python$PYVER/__pycache__
94rm -rf $PYDIR/lib/python$PYVER/**/__pycache__
95rm -rf $PYDIR/lib/python$PYVER/**/**/__pycache__
96rm -rf $PYDIR/Resources
97install_name_tool -change \
d6503156 98 /usr/local/opt/python/Frameworks/Python.framework/Versions/$PYVER/Python \
5d2c0f55
UH
99 @executable_path/../Frameworks/Python.framework/Versions/$PYVER/Python \
100 $FRAMEWORKSDIR/libsigrokdecode.*.dylib
101
ffbad165 102# Add PulseView wrapper (sets PYTHONHOME/SIGROK_FIRMWARE_DIR/SIGROKDECODE_DIR).
5d2c0f55
UH
103mv $MACOSDIR/$APPNAME_BINARY $MACOSDIR/$APPNAME_BINARY.real
104cp ../contrib/pulseview $MACOSDIR
105chmod 755 $MACOSDIR/$APPNAME_BINARY
106
107cp ../contrib/Info.plist $CONTENTSDIR
108cp ../contrib/pulseview.icns $CONTENTSDIR/Resources
109
110hdiutil create "${APPNAME}_${APPVER}.dmg" -volname "$APPNAME $APPVER" \
111 -fs HFS+ -srcfolder "$APPNAME.app"