qt5-freeze plugin: enable side-by-side install

Closes #1980
pull/1981/head
Tony Theodore 7 years ago
parent cc1d4632b8
commit 395864e32c

@ -4,7 +4,8 @@ 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.
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.
@ -47,3 +48,32 @@ 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.

@ -17,7 +17,7 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)' || $(MAKE) -C '$(1)' -j 1
$(MAKE) -C '$(1)' -j 1 install
cd '$(BUILD_DIR)' && $(QMAKE_EXECUTABLE) '$(SOURCE_DIR)'
$(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' || $(MAKE) -C '$(BUILD_DIR)' -j 1
$(MAKE) -C '$(BUILD_DIR)' -j 1 install
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -12,6 +12,17 @@ $(PKG)_FILE := $(PKG)-opensource-src-$($(PKG)_VERSION).tar.xz
$(PKG)_URL := http://download.qt.io/official_releases/qt/5.7/$($(PKG)_VERSION)/submodules/$($(PKG)_FILE)
$(PKG)_DEPS := gcc dbus fontconfig freetds freetype harfbuzz jpeg libmysqlclient libpng openssl pcre postgresql sqlite zlib
# allows for side-by-side install with later Qt
# pkg-config and cmake will need tweaking to really get working
$(PKG)_VERSION_ID := qt5
QMAKE_EXECUTABLE = $(TARGET)-qmake-$(qtbase_VERSION_ID)
define QMAKE_MAKE_INSTALL
cd '$(BUILD_DIR)' && $(QMAKE_EXECUTABLE) '$(SOURCE_DIR)'
$(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)'
$(MAKE) -C '$(BUILD_DIR)' -j 1 install
endef
define $(PKG)_UPDATE
$(WGET) -q -O- http://download.qt-project.org/official_releases/qt/5.5/ | \
$(SED) -n 's,.*href="\(5\.[0-9]\.[^/]*\)/".*,\1,p' | \
@ -37,7 +48,7 @@ define $(PKG)_BUILD
-no-use-gold-linker \
-release \
-static \
-prefix '$(PREFIX)/$(TARGET)/qt5' \
-prefix '$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)' \
-no-icu \
-opengl desktop \
-no-glib \
@ -65,41 +76,42 @@ define $(PKG)_BUILD
$($(PKG)_CONFIGURE_OPTS)
$(MAKE) -C '$(1)' -j '$(JOBS)'
rm -rf '$(PREFIX)/$(TARGET)/qt5'
rm -rf '$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)'
$(MAKE) -C '$(1)' -j 1 install
ln -sf '$(PREFIX)/$(TARGET)/qt5/bin/qmake' '$(PREFIX)/bin/$(TARGET)'-qmake-qt5
ln -sf '$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)/bin/qmake' '$(PREFIX)/bin/$(TARGET)'-qmake-$($(PKG)_VERSION_ID)
mkdir '$(1)/test-qt'
cd '$(1)/test-qt' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake' '$(PWD)/src/qt-test.pro'
cd '$(1)/test-qt' && '$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)/bin/qmake' '$(PWD)/src/qt-test.pro'
$(MAKE) -C '$(1)/test-qt' -j '$(JOBS)' $(BUILD_TYPE)
$(INSTALL) -m755 '$(1)/test-qt/$(BUILD_TYPE)/test-qt5.exe' '$(PREFIX)/$(TARGET)/bin/'
$(INSTALL) -m755 '$(1)/test-qt/$(BUILD_TYPE)/test-qt5.exe' '$(PREFIX)/$(TARGET)/bin/test-$($(PKG)_VERSION_ID).exe'
# build test the manual way
mkdir '$(1)/test-$(PKG)-pkgconfig'
'$(PREFIX)/$(TARGET)/qt5/bin/uic' -o '$(1)/test-$(PKG)-pkgconfig/ui_qt-test.h' '$(TOP_DIR)/src/qt-test.ui'
'$(PREFIX)/$(TARGET)/qt5/bin/moc' \
'$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)/bin/uic' -o '$(1)/test-$(PKG)-pkgconfig/ui_qt-test.h' '$(TOP_DIR)/src/qt-test.ui'
'$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)/bin/moc' \
-o '$(1)/test-$(PKG)-pkgconfig/moc_qt-test.cpp' \
-I'$(1)/test-$(PKG)-pkgconfig' \
'$(TOP_DIR)/src/qt-test.hpp'
'$(PREFIX)/$(TARGET)/qt5/bin/rcc' -name qt-test -o '$(1)/test-$(PKG)-pkgconfig/qrc_qt-test.cpp' '$(TOP_DIR)/src/qt-test.qrc'
'$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)/bin/rcc' -name qt-test -o '$(1)/test-$(PKG)-pkgconfig/qrc_qt-test.cpp' '$(TOP_DIR)/src/qt-test.qrc'
'$(TARGET)-g++' \
-W -Wall -Werror -std=c++0x -pedantic \
'$(TOP_DIR)/src/qt-test.cpp' \
'$(1)/test-$(PKG)-pkgconfig/moc_qt-test.cpp' \
'$(1)/test-$(PKG)-pkgconfig/qrc_qt-test.cpp' \
-o '$(PREFIX)/$(TARGET)/bin/test-$(PKG)-pkgconfig.exe' \
-o '$(PREFIX)/$(TARGET)/bin/test-$($(PKG)_VERSION_ID)-pkgconfig.exe' \
-I'$(1)/test-$(PKG)-pkgconfig' \
`'$(TARGET)-pkg-config' Qt5Widgets$(BUILD_TYPE_SUFFIX) --cflags --libs`
`PKG_CONFIG_PATH_$(subst .,_,$(subst -,_,$(TARGET)))=$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)/lib/pkgconfig \
'$(TARGET)-pkg-config' Qt5Widgets$(BUILD_TYPE_SUFFIX) --cflags --libs`
# setup cmake toolchain
echo 'set(CMAKE_SYSTEM_PREFIX_PATH "$(PREFIX)/$(TARGET)/qt5" ${CMAKE_SYSTEM_PREFIX_PATH})' > '$(CMAKE_TOOLCHAIN_DIR)/$(PKG).cmake'
echo 'set(CMAKE_SYSTEM_PREFIX_PATH "$(PREFIX)/$(TARGET)/$($(PKG)_VERSION_ID)" ${CMAKE_SYSTEM_PREFIX_PATH})' > '$(CMAKE_TOOLCHAIN_DIR)/$(PKG)-$($(PKG)_VERSION_ID).cmake'
# batch file to run test programs
(printf 'set PATH=..\\lib;..\\qt5\\bin;..\\qt5\\lib;%%PATH%%\r\n'; \
printf 'set QT_QPA_PLATFORM_PLUGIN_PATH=..\\qt5\\plugins\r\n'; \
printf 'test-qt5.exe\r\n'; \
printf 'test-qtbase-pkgconfig.exe\r\n';) \
> '$(PREFIX)/$(TARGET)/bin/test-qt5.bat'
(printf 'set PATH=..\\lib;..\\$($(PKG)_VERSION_ID)\\bin;..\\$($(PKG)_VERSION_ID)\\lib;%%PATH%%\r\n'; \
printf 'set QT_QPA_PLATFORM_PLUGIN_PATH=..\\$($(PKG)_VERSION_ID)\\plugins\r\n'; \
printf 'test-$($(PKG)_VERSION_ID).exe\r\n'; \
printf 'test-$($(PKG)_VERSION_ID)-pkgconfig.exe\r\n';) \
> '$(PREFIX)/$(TARGET)/bin/test-$($(PKG)_VERSION_ID).bat'
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -19,14 +19,12 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
# test QUiLoader
mkdir '$(1)'.test
cd '$(1)'.test && '$(TARGET)-cmake' '$($(PKG)_TEST_DIR)'
$(MAKE) -C '$(1)'.test
cp '$(1)'.test/mxe-cmake-qtuitools.exe \
mkdir '$(BUILD_DIR)'.test
cd '$(BUILD_DIR)'.test && '$(TARGET)-cmake' '$($(PKG)_TEST_DIR)'
$(MAKE) -C '$(BUILD_DIR)'.test
cp '$(BUILD_DIR)'.test/mxe-cmake-qtuitools.exe \
'$(PREFIX)/$(TARGET)/bin/test-qttools.exe'
endef

@ -17,8 +17,6 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -18,8 +18,8 @@ endef
define $(PKG)_BUILD_SHARED
# looks for build tools with .exe suffix and tries to use win_flex
$(SED) -i 's,\.exe,,' '$(1)/Tools/qmake/mkspecs/features/functions.prf'
cd '$(1)' && mkdir -p .git && '$(PREFIX)/$(TARGET)/qt5/bin/qmake' FLEX=flex
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(SED) -i 's,\.exe,,' '$(SOURCE_DIR)/Tools/qmake/mkspecs/features/functions.prf'
cd '$(BUILD_DIR)' && mkdir -p .git && $(QMAKE_EXECUTABLE) FLEX=flex '$(SOURCE_DIR)'
$(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)'
$(MAKE) -C '$(BUILD_DIR)' -j 1 install
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

@ -17,7 +17,5 @@ define $(PKG)_UPDATE
endef
define $(PKG)_BUILD
cd '$(1)' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake'
$(MAKE) -C '$(1)' -j '$(JOBS)'
$(MAKE) -C '$(1)' -j 1 install
$(QMAKE_MAKE_INSTALL)
endef

Loading…
Cancel
Save