forked from Sigil-Ebook/Sigil
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Building_Qt5_From_Source_on_MacOSX.txt
141 lines (101 loc) · 5.12 KB
/
Building_Qt5_From_Source_on_MacOSX.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# Building_Qt5_From_Source_on_MacOSX
# *** IMPORTANT ***
# Qt Pre-Built Binary Versions do NOT support proprietary codecs such as
# mpeg4 or gif multipmedia in its QWebEngine by default!
# To support these epub basic formats you will need to build your own Qt
# directly from source.
# We do highly recommend you use the same Qt versions as official Sigil builds on Mac OS X.
# which is now Qt 5.12.6 or later
# These instructions will lead you through building from source
# FIRST: make sure you have XCode 10 or later installed and the Command Line Tools
# set the deployment target (this is minimum needed for Qt 5.12.X)
export MACOSX_DEPLOYMENT_TARGET=10.12
# cd to a location to store your src tree then do
export MYQTSRC=`pwd`
# Build Prerequisites
# -------------------
# First build and install the following prerequisites for the build:
# cmake, libpng, libjpeg-turbo
# and install into /usr/local so that they can be found during qtwebkit's build
# Note: older versions of these prerequisites may work but have not been tested
# Download cmake 3.12.0 or later from https://cmake.org/download
tar -zxvf cmake-3.12.0.tar.gz
cd cmake-3.12.0
./bootstrap --prefix=/usr/local -- -DCMAKE_BUILD_TYPE:STRING=Release
make
sudo make install
# Download libpng 1.6.36 or later from png's sourceforge site: http://www.libpng.org/pub/png/libpng.html
# If you are building on MacOS 10.12, you will need to patch libpng
# to support macos 10.12
export LDFLAGS="-Wl,-macosx_version_min,10.12"
export CFLAGS="-mmacosx-version-min=10.12 -Werror=partial-availability"
tar -zxvf libpng-1.6.36.tar.gz
cd libpng-1.6.36
patch -p0 < libpng_support_macos_10.11.patch
./configure --enable-static=yes --enable-shared=no --prefix=/usr/local
make
sudo make install
unset CFLAGS
unset LDFLAGS
# libjpeg-turbo 2.0.0 or later from libjpeg-turbo.org
# https://sourceforge.net/projects/libjpeg-turbo/files/2.0.2/
tar -xvf libjpeg-turbo-2.0.2.tar.gz
mkdir buildjt
cd buildjt
cmake -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_SHARED=0 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 \
-DCMAKE_C_FLAGS_RELEASE="-O3 -mmacosx-version-min=10.12 -Werror=partial-availability" ../libjpeg-turbo-2.0.2/
make
sudo make install
# Building Qt5.12.6 from source
# -----------------------------
# download qt-everywhere-src-5.12.6.tar.xz directly from Qt
# from: http://download.qt.io/archive/qt/5.12/5.12.6/single/
# and then unpack it
# Note to get unxz - you may need to download and build xz-5.2.4.tar.gz
# see the docs on building a relocatable python for instruction on building xz
unxz qt-everywhere-src-5.12.6.tar.xz
tar -xvf qt-everywhere-src-5.12.6.tar
cd qt-everywhere-src-5.12.6
# now copy 6 required patches from Sigil/docs/ into this directory
cp YOUR_PATH_TO_SIGIL_SRC_TREE/Sigil/docs/qt512.6_avoid_qtabbar_segfault.patch ./
cp YOUR_PATH_TO_SIGIL_SRC_TREE/Sigil/docs/qt512.6_fix_h6_insertParagraph.patch ./
cp YOUR_PATH_TO_SIGIL_SRC_TREE/Sigil/docs/qt512.6_backport_009abcd_fix.patch ./
cp YOUR_PATH_TO_SIGIL_SRC_TREE/Sigil/docs/qt512.6_fix_missing_macos_menubar.patch ./
cp YOUR_PATH_TO_SIGIL_SRC_TREE/Sigil/docs/qt512.6_remove_bad_workaround.patch
cp YOUR_PATH_TO_SIGIL_SRC_TREE/Sigil/docs/qt512.6_qguiapplication_use_QPointer.patch
# apply mouse press and flick on qtabbar tab fix to prevent segfault
# See https://bugreports.qt.io/browse/QTBUG-74478
patch -p0 < ./qt512.6_avoid_qtabbar_segfault.patch
# then apply an obvious fix for insertParagraph execcommand and h6 (see w3c spec)
# See https://bugreports.qt.io/browse/QTBUG-79778
patch -p0 < ./qt512.6_fix_h6_insertParagraph.patch
# the remaining patches are ONLY important for Qt on macOS
# apply backported fix for handling qwidget platform surface events properly
# See https://bugreports.qt.io/browse/QTBUG-69289
patch -p0 < ./qt512.6_backport_009abcd_fix.patch
# apply workaround to prevent missing macos application menu items
# See https://bugreports.qt.io/browse/QTBUG-80795
patch -p0 < ./qt512.6_fix_missing_macos_menubar.patch
# apply patch to remove broken crash prevention workaround in Qt 5.12.5 and later
# See https://bugreports.qt.io/browse/QTBUG-75326
patch -p0 < ./qt512.6_remove_bad_workaround.patch
# apply a better fix to prevent the crashes that ues QPointers
# See https://bugreports.qt.io/browse/QTBUG-80355, QTBUG-75326, QTBUG-66536
patch -p0 < ./qt512.6_qguiapplication_use_QPointer.patch
# this is the new minimum supported by Qt 5.12.X
export MACOSX_DEPLOYMENT_TARGET=10.12
# Create a destination directory to house your complete Qt binary in your home directory
# to be similar to how stock Qt does it
cd ~/
mkdir Qt512
# Now return and create a shadow build inside a new directory to keep your Qt 5.12.X sources clean
cd ${MYQTSRC}
mkdir buildqt512
cd buildqt512
# Remember to include the -webengine-proprietary-codecs configure switch
../qt-everywhere-src-5.12.6/configure --prefix=/Users/${USER}/Qt512 -webengine-proprietary-codecs -opensource -nomake examples -nomake tests
# note the build itself can take a couple of hours depending on memory available, disk and cpus used
make -j4
make install
# After the install phase completes your newly built Qt should exist in ~/Qt512 ready to be used
# to build Sigil and PageEdit