NameLast commit messageLast commit date
..
qttools-testqttools: read test from current directory and freeze example 5.7 plugin9 years ago
openssl-1-fixes.patchSecure URLs7 years ago
openssl.mkupdate qt5-freeze example8 years ago
postgresql-1-fixes.patchfix qt5-freeze example after e69081f70f1c4d3d2ec5e54ac1aab2b84532450c8 years ago
postgresql-2-autoconf-min-version.patchfix qt5-freeze example after e69081f70f1c4d3d2ec5e54ac1aab2b84532450c8 years ago
postgresql-3-mingw-errno.patchfix qt5-freeze example after e69081f70f1c4d3d2ec5e54ac1aab2b84532450c8 years ago
postgresql.mkfix qt5-freeze example after e69081f70f1c4d3d2ec5e54ac1aab2b84532450c8 years ago
qt3d.mkSecure URLs8 years ago
qt5.mkqt5: read deps from files in current directory9 years ago
Qt5QuickConfig.cmakeqtwebkit: use latest version7 years ago
qtactiveqt-1.patchadd qt5 freeze example plugin (e.g. winxp support)9 years ago
qtactiveqt.mkSecure URLs8 years ago
qtbase-1-fixes.patchqt5-freeze plugin: fix gcc8 build8 years ago
qtbase.mkplugins/examples/qt5-freeze: Update URL.6 years ago
qtcanvas3d.mkSecure URLs8 years ago
qtcharts.mkSecure URLs8 years ago
qtconnectivity.mkSecure URLs8 years ago
qtdatavis3d.mkSecure URLs8 years ago
qtdeclarative-render2d.mkSecure URLs8 years ago
qtdeclarative.mkqtwebkit: use latest version7 years ago
qtgamepad.mkSecure URLs8 years ago
qtgraphicaleffects.mkSecure URLs8 years ago
qtimageformats-1.patchadd qt5 freeze example plugin (e.g. winxp support)9 years ago
qtimageformats-2.patchplugins/examples/qt5-freeze: Fix qtimageformats build (fixes #2563).6 years ago
qtimageformats.mkSecure URLs8 years ago
qtlocation.mkSecure URLs8 years ago
qtmultimedia-1-fixes.patchqtmultimedia: fix build with GCC >= 6.x7 years ago
qtmultimedia.mkSecure URLs8 years ago
qtpurchasing.mkSecure URLs8 years ago
qtquickcontrols.mkSecure URLs8 years ago
qtquickcontrols2.mkSecure URLs8 years ago
qtscript.mkSecure URLs8 years ago
qtscxml.mkSecure URLs8 years ago
qtsensors.mkSecure URLs8 years ago
qtserialbus.mkSecure URLs8 years ago
qtserialport.mkSecure URLs8 years ago
qtsvg.mkSecure URLs8 years ago
qttools-1.patchadd qt5 freeze example plugin (e.g. winxp support)9 years ago
qttools.mkSecure URLs8 years ago
qttranslations.mkSecure URLs8 years ago
qtvirtualkeyboard.mkSecure URLs8 years ago
qtwebchannel.mkSecure URLs8 years ago
qtwebsockets.mkSecure URLs8 years ago
qtwebview.mkSecure URLs8 years ago
qtwinextras-1.patchadd qt5 freeze example plugin (e.g. winxp support)9 years ago
qtwinextras.mkSecure URLs8 years ago
qtxmlpatterns-1.patchadd qt5 freeze example plugin (e.g. winxp support)9 years ago
qtxmlpatterns.mkSecure URLs8 years ago
README.mdqt5-freeze plugin: enable side-by-side install8 years ago
README.md

Freezing Qt5 version

This plugin demonstrates freezing a version of Qt5 in a local plugin, possibly for Win XP support (see #1827, #1734). It's possible to simply stay on a git checkout, but then other toolchain features are also frozen. This example uses 5.7.1, but 5.6 is an LTS release and probably a better option.

N.B. This is unsupported and exists solely as an example of how one might maintain a local version.

Overview

Basic outline is to checkout a version, copy the makefile and patches, and lock the patches to the ones in this directory instead of core MXE src:

export PLUGIN_DIR=plugins/examples/qt5-freeze
rm -rf $PLUGIN_DIR
mkdir -p $PLUGIN_DIR

# parent of Qt 5.8 update
git checkout a0f9e61

# find all Qt5 modules and copy
export QT5_PKGS=`grep -l qtbase_VERSION src/*.mk | sed -n 's,src/\(.*\)\.mk.*,\1,p' | tr '\n' ','`
export QT5_PKGS=${QT5_PKGS}qtbase
cp `eval echo src/{$QT5_PKGS}.mk` $PLUGIN_DIR
cp `eval echo src/{$QT5_PKGS}-*.patch` $PLUGIN_DIR

# copy other relevant sources
cp -R src/qttools-test $PLUGIN_DIR

# set $(PKG)_PATCHES to only look for patches in the current directory
# on macos, use `gsed` instead of `sed`
find $PLUGIN_DIR -name "qt[^5]*.mk" -exec sed -i '9i$(PKG)_PATCHES  := $(realpath $(sort $(wildcard $(dir $(lastword $(MAKEFILE_LIST)))/$(PKG)-[0-9]*.patch)))' {} \;
git checkout master

Now you'll have all the right versions, just some minor changes since mysql doesn't support XP (see #1394). In a real local scenario, the package should also be removed from $(PKG)_DEPS and qtbase.mk modified. MXE_PLUGIN_DIRS can also be added to settings.mk

make qt5 MXE_PLUGIN_DIRS=$PLUGIN_DIR qtbase_CONFIGURE_OPTS='-no-sql-mysql'

Side-by-side install

Qt can have multiple installs since it puts everything under a single prefix. You can set the variable qtbase_VERSION_ID=qt5.7 and it should be fine for qmake-based projects using the full path ${prefix}/${target}/qt5.7/bin/qmake or ${target}-qmake-qt5.7.

See #1980:

# WinXp
make \
    qt5 libzip libusb1 libftdi1 glibmm boost check \
    MXE_TARGETS='x86_64-w64-mingw32.static.posix i686-w64-mingw32.static.posix' \
    MXE_PLUGIN_DIRS='plugins/gcc7 plugins/examples/qt5-freeze' \
    qtbase_VERSION_ID=qt5.7 \
    qtbase_CONFIGURE_OPTS='-no-sql-mysql'

rm usr/*/installed/qtbase

# Other - will only build qtbase and downstream
make \
    qt5  \
    MXE_TARGETS='x86_64-w64-mingw32.static.posix i686-w64-mingw32.static.posix' \
    MXE_PLUGIN_DIRS='plugins/gcc7'

There could be issues for pkg-config and cmake projects, the simple qtbase and qttools tests build - any tips and notes are welcome.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t