You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mxe/plugins/examples/qt5-freeze
Uwe Hermann e1e78e58be
plugins/examples/qt5-freeze: Update URL.
4 years ago
..
qttools-test qttools: read test from current directory and freeze example 5.7 plugin 7 years ago
Qt5QuickConfig.cmake qtwebkit: use latest version 5 years ago
README.md qt5-freeze plugin: enable side-by-side install 7 years ago
openssl-1-fixes.patch Secure URLs 5 years ago
openssl.mk update qt5-freeze example 6 years ago
postgresql-1-fixes.patch fix qt5-freeze example after e69081f70f 6 years ago
postgresql-2-autoconf-min-version.patch fix qt5-freeze example after e69081f70f 6 years ago
postgresql-3-mingw-errno.patch fix qt5-freeze example after e69081f70f 6 years ago
postgresql.mk fix qt5-freeze example after e69081f70f 6 years ago
qt3d.mk Secure URLs 6 years ago
qt5.mk qt5: read deps from files in current directory 7 years ago
qtactiveqt-1.patch add qt5 freeze example plugin (e.g. winxp support) 7 years ago
qtactiveqt.mk Secure URLs 6 years ago
qtbase-1-fixes.patch qt5-freeze plugin: fix gcc8 build 6 years ago
qtbase.mk plugins/examples/qt5-freeze: Update URL. 4 years ago
qtcanvas3d.mk Secure URLs 6 years ago
qtcharts.mk Secure URLs 6 years ago
qtconnectivity.mk Secure URLs 6 years ago
qtdatavis3d.mk Secure URLs 6 years ago
qtdeclarative-render2d.mk Secure URLs 6 years ago
qtdeclarative.mk qtwebkit: use latest version 5 years ago
qtgamepad.mk Secure URLs 6 years ago
qtgraphicaleffects.mk Secure URLs 6 years ago
qtimageformats-1.patch add qt5 freeze example plugin (e.g. winxp support) 7 years ago
qtimageformats.mk Secure URLs 6 years ago
qtlocation.mk Secure URLs 6 years ago
qtmultimedia-1-fixes.patch qtmultimedia: fix build with GCC >= 6.x 5 years ago
qtmultimedia.mk Secure URLs 6 years ago
qtpurchasing.mk Secure URLs 6 years ago
qtquickcontrols.mk Secure URLs 6 years ago
qtquickcontrols2.mk Secure URLs 6 years ago
qtscript.mk Secure URLs 6 years ago
qtscxml.mk Secure URLs 6 years ago
qtsensors.mk Secure URLs 6 years ago
qtserialbus.mk Secure URLs 6 years ago
qtserialport.mk Secure URLs 6 years ago
qtsvg.mk Secure URLs 6 years ago
qttools-1.patch add qt5 freeze example plugin (e.g. winxp support) 7 years ago
qttools.mk Secure URLs 6 years ago
qttranslations.mk Secure URLs 6 years ago
qtvirtualkeyboard.mk Secure URLs 6 years ago
qtwebchannel.mk Secure URLs 6 years ago
qtwebsockets.mk Secure URLs 6 years ago
qtwebview.mk Secure URLs 6 years ago
qtwinextras-1.patch add qt5 freeze example plugin (e.g. winxp support) 7 years ago
qtwinextras.mk Secure URLs 6 years ago
qtxmlpatterns-1.patch add qt5 freeze example plugin (e.g. winxp support) 7 years ago
qtxmlpatterns.mk Secure URLs 6 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.