From 1f37050afa6e8a60c490bfc470f866070ada4aee Mon Sep 17 00:00:00 2001 From: Mirko Vogt Date: Sun, 7 Jun 2020 14:13:22 +0000 Subject: [PATCH] qt5: update to 5.15.0 (LTS release) This also purges already back then (v5.9) legacy projects, such as Qt Quick 1 / QML 1. We also focus on software rendering only for now, postponing dealing with messy vendor specific GL(ES) APIs, quirks and proprietary / binary blobs. Implies certain features and packages being unavailable for the moment. --- frameworks/qt5base/Makefile | 388 +++++++++--------- frameworks/qt5base/files/qmake.mk | 13 +- .../patches/000-fix-gnuiconv-test.patch | 81 ++++ ...001-fix-pkgconfig-xcompile-detection.patch | 22 - .../patches/005-fix-segv-if-no-cursor.patch | 41 -- .../qt5base/patches/010-iconv-cast.patch | 43 -- frameworks/qt5graphicaleffects/Makefile | 17 +- frameworks/qt5quick1/Makefile | 88 ---- .../qt5quick2-2d-sw-renderer-GLstubs/Makefile | 10 +- frameworks/qt5quick2-controls2/Makefile | 14 +- frameworks/qt5quick2/Makefile | 262 ++++++++---- frameworks/qt5script/Makefile | 14 +- frameworks/qt5tools/Makefile | 22 +- .../patches/000-enable-kmap2qmap.patch | 14 +- .../patches/001-add-further-keys.patch | 11 - frameworks/qt5translations/Makefile | 41 ++ 16 files changed, 567 insertions(+), 514 deletions(-) create mode 100644 frameworks/qt5base/patches/000-fix-gnuiconv-test.patch delete mode 100644 frameworks/qt5base/patches/001-fix-pkgconfig-xcompile-detection.patch delete mode 100644 frameworks/qt5base/patches/005-fix-segv-if-no-cursor.patch delete mode 100644 frameworks/qt5base/patches/010-iconv-cast.patch delete mode 100644 frameworks/qt5quick1/Makefile create mode 100644 frameworks/qt5translations/Makefile diff --git a/frameworks/qt5base/Makefile b/frameworks/qt5base/Makefile index e3d8c70..0511288 100644 --- a/frameworks/qt5base/Makefile +++ b/frameworks/qt5base/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2016 OpenWrt.org +# Copyright (C) 2020 OpenWrt.org # Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -12,19 +12,18 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5base -PKG_VERSION:=5.9.1 +PKG_VERSION:=5.15.0 PKG_RELEASE:=1 PKG_HASH:=bc9a21e9f6fff9629019fdf9f989f064751d5073c3a28dc596def92f4d4275c6 -PKG_SYS_NAME:=qtbase-opensource-src-$(PKG_VERSION) +PKG_SYS_NAME:=qtbase-everywhere-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) HOST_BUILD_DIR=$(BUILD_DIR)/host/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 HOST_BUILD_PARALLEL:=1 -PKG_BUILD_DEPENDS:=librpc PKG_INSTALL:=1 PKG_USE_MIPS16:=0 # Yes, the host build depends on the target build. This is not a mistake! @@ -45,7 +44,6 @@ include ./files/qmake.mk PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg \ - CONFIG_PACKAGE_qt5base-plugin-imageformats-png \ CONFIG_PACKAGE_qt5base-network \ CONFIG_PACKAGE_qt5base-gui \ CONFIG_PACKAGE_qt5base-gl \ @@ -54,6 +52,7 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_qt5base-plugin-platforms-minimal \ CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb \ CONFIG_PACKAGE_qt5base-plugin-input-libinput \ +# CONFIG_PACKAGE_qt5base-plugin-imageformats-png \ # CONFIG_PACKAGE_qt5base-plugin-platforms-eglfs \ # CONFIG_PACKAGE_qt5base-plugin-platforms-minimalegl \ @@ -79,7 +78,7 @@ define Package/qt5base/Default SUBMENU:=Frameworks and Toolkits TITLE:=Qt5base URL:=http://qt.io - MAINTAINER:=Mirko Vogt + MAINTAINER:=Mirko Vogt endef # define Package/qt5base @@ -97,19 +96,19 @@ endef define Package/qt5base-gl $(call Package/qt5base/Default) TITLE+=gl - DEPENDS+=+qt5base-core +qt5base-gui +qt5base-widgets + DEPENDS+=+qt5base-core +qt5base-gui +qt5base-widgets @BROKEN endef define Package/qt5base-core $(call Package/qt5base/Default) TITLE+=core - DEPENDS+=+libpthread +zlib +libpcre2-16 +libstdcpp +librt +libdouble-conversion $(ICONV_DEPENDS) #+icu + DEPENDS+=+libpthread +zlib +libzstd +libpcre2-16 +libstdcpp +librt +libdouble-conversion $(ICONV_DEPENDS) +PACKAGE_icu:icu #FIXME: do not include ICONV_DEPENDS if ICU is selected (though, that's only an issue when using GNU iconv) endef define Package/qt5base-gui $(call Package/qt5base/Default) TITLE+=gui - DEPENDS+=+qt5base-core +qt5quick2-2d-sw-renderer-GLstubs +libpng +fontconfig +libfreetype + DEPENDS+=+qt5base-core +libpng +fontconfig +libfreetype endef define Package/qt5base-network @@ -216,6 +215,12 @@ define Package/qt5base-plugin-imageformats-jpeg DEPENDS+=+qt5base-core +qt5base-gui +libjpeg endef +#define Package/qt5base-plugin-imageformats-png +# $(call Package/qt5base/Default) +# TITLE+=imageformat png (plugin) +# DEPENDS+=+qt5base-core +qt5base-gui +libpng +#endef + ####### platforms #define Package/qt5base-plugin-platforms-eglfs @@ -294,121 +299,112 @@ define Build/Configure # CROSS/TARGET_* need to be passed to configure, in order to use cross-compiling tools to check for requirements. # Usually used variables such as CC/CXX/CFLAGS/CXXFLAGS/LDFLAGS would be used for compilation of host tools (qmake, moc, etc.), # hence we use the TARGET_* nomenclature. + # + # NOTES: + # - icu support currently depends on selection of icu package which is not ideal, since unpredictable. + # - icu support overrides iconv support ( cd $(PKG_BUILD_DIR) ; \ TARGET_CROSS="$(TARGET_CROSS)" \ TARGET_CFLAGS="$(TARGET_CFLAGS)" \ TARGET_CXXFLAGS="$(TARGET_CFLAGS) $(TARGET_CXXFLAGS)" \ TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ ./configure \ - -prefix $(QT_INSTALL_PREFIX) \ - -extprefix $(QT_EXTPREFIX) \ - -hostprefix $(QT_HOST_PREFIX) \ - -hostdatadir $(QT_HOST_PREFIX)/share \ - -no-gcc-sysroot \ - -bindir $(QT_INSTALL_BINS) \ - -headerdir $(QT_INSTALL_HEADERS) \ - -libdir $(QT_INSTALL_LIBS) \ - -archdatadir $(QT_INSTALL_ARCHDATA) \ - -plugindir $(QT_INSTALL_PLUGINS) \ - -libexecdir $(QT_INSTALL_LIBEXECS) \ - -importdir $(QT_INSTALL_IMPORTS) \ - -qmldir $(QT_INSTALL_QML) \ - -datadir $(QT_INSTALL_DATA) \ - -docdir $(QT_INSTALL_DOCS) \ - -translationdir $(QT_INSTALL_TRANSLATIONS) \ - -sysconfdir $(QT_INSTALL_CONFIGURATION) \ - -examplesdir $(QT_INSTALL_EXAMPLES) \ - -testsdir $(QT_INSTALL_TESTS) \ - -hostbindir $(QT_HOST_BINS) \ - -hostlibdir $(QT_HOST_LIBS) \ - -hostdatadir $(QT_HOST_DATA) \ - -verbose \ - -opensource \ - -confirm-license \ - -release \ - -no-optimized-tools \ - -no-strip \ - -shared \ - -no-framework \ - -xplatform linux-openwrt-g++ \ - -no-sse3 \ - -no-ssse3 \ - -no-sse4.1 \ - -no-sse4.2 \ - -no-avx \ - -no-avx2 \ - -no-avx512 \ - $(if $(findstring -mdsp,$(TARGET_CFLAGS)),,-no-mips_dsp) \ - $(if $(findstring -mdspr2,$(TARGET_CFLAGS)),,-no-mips_dspr2) \ - -no-reduce-exports \ - -no-reduce-relocations \ - -no-pch \ - -no-use-gold-linker \ - -no-warnings-are-errors \ - -pkg-config \ - -no-optimized-qmake \ - -nomake tools \ - -make examples \ - $(if $(CONFIG_PACKAGE_qt5base-examples),-compile-examples,-no-compile-examples) \ - $(if $(CONFIG_PACKAGE_qt5base-examples),-make examples,-nomake examples) \ - $(if $(CONFIG_PACKAGE_qt5base-gui),-gui,-no-gui) \ - $(if $(CONFIG_PACKAGE_qt5base-widgets),-widgets,-no-widgets) \ - -no-dbus \ - -accessibility \ - -no-qml-debug \ - -system-doubleconversion \ - -no-glib \ - -eventfd \ - -no-inotify \ - $(if $(CONFIG_BUILD_NLS),-iconv,-no-iconv) \ - -no-icu \ - -system-pcre \ - -system-zlib \ - -no-journald \ - -no-syslog \ - -ssl \ - $(if $(CONFIG_PACKAGE_qt5base-network),-openssl-linked,-no-openssl) \ - -system-proxies \ - -no-cups \ - -fontconfig \ - -system-freetype \ - -no-harfbuzz \ - -no-gtk \ - -opengl \ - -no-xcb-xlib \ - $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-minimal),,-qpa minimal) \ - $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb),,-qpa linuxfb) \ - -system-xcb \ - -no-directfb \ - -no-eglfs \ - -no-gbm \ - -no-kms \ - $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb),-linuxfb,-no-linuxfb) \ - -no-mirclient \ - -no-xcb \ - -libudev \ - -evdev \ - $(if $(CONFIG_PACKAGE_qt5base-plugin-input-libinput),-libinput,-no-libinput) \ - -no-mtdev \ - -no-tslib \ - -no-xinput2 \ - -no-xkbcommon-x11 \ - -no-xkbcommon-evdev \ - -no-gif \ - $(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-ico),-ico,-no-ico) \ - $(if $(CONFIG_PACKAGE_qt5base-gui),-system-libpng,-no-libpng) \ - $(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg),-system-libjpeg,-no-libjpeg) \ - -no-sql-db2 \ - -no-sql-ibase \ - -no-sql-mysql \ - -no-sql-oci \ - -no-sql-odbc \ - -no-sql-psql \ - -no-sql-sqlite \ - -no-sql-sqlite2 \ - -no-sql-tds \ - -no-libproxy \ - -system-xkbcommon \ + --prefix=$(QT_INSTALL_PREFIX) \ + --extprefix=$(QT_EXTPREFIX) \ + --hostprefix=$(QT_HOST_PREFIX) \ + --gcc-sysroot=no \ + --bindir=$(QT_INSTALL_BINS) \ + --headerdir=$(QT_INSTALL_HEADERS) \ + --libdir=$(QT_INSTALL_LIBS) \ + --archdatadir=$(QT_INSTALL_ARCHDATA) \ + --plugindir=$(QT_INSTALL_PLUGINS) \ + --libexecdir=$(QT_INSTALL_LIBEXECS) \ + --importdir=$(QT_INSTALL_IMPORTS) \ + --qmldir=$(QT_INSTALL_QML) \ + --datadir=$(QT_INSTALL_DATA) \ + --docdir=$(QT_INSTALL_DOCS) \ + --translationdir=$(QT_INSTALL_TRANSLATIONS) \ + --sysconfdir=$(QT_INSTALL_CONFIGURATION) \ + --examplesdir=$(QT_INSTALL_EXAMPLES) \ + --testsdir=$(QT_INSTALL_TESTS) \ + --hostbindir=$(QT_HOST_BINS) \ + --hostlibdir=$(QT_HOST_LIBS) \ + --hostdatadir=$(QT_HOST_DATA) \ + --verbose=yes \ + --opensource \ + --confirm-license \ + --release=yes \ + --optimized-tools=no \ + --optimize-size=no \ + --strip=no \ + --shared=yes \ + --framework=no \ + --xplatform=linux-openwrt-g++ \ + --reduce-exports=no \ + --reduce-relocations=no \ + --pch=no \ + --ltcg=no \ + --use-gold-linker=no \ + --warnings-are-errors=no \ + --pkg-config=yes \ + --compile-examples=$(if $(CONFIG_PACKAGE_qt5base-examples),yes,no) \ + $(if $(CONFIG_PACKAGE_qt5base-examples),,--nomake=examples) \ + --gui=$(if $(CONFIG_PACKAGE_qt5base-gui),yes,no) \ + --widgets=$(if $(CONFIG_PACKAGE_qt5base-widgets),yes,no) \ + --dbus=no \ + --accessibility=yes \ + --doubleconversion=system \ + --glib=no \ + --eventfd=no \ + --inotify=no \ + --iconv=$(if $(CONFIG_BUILD_NLS),$(if $(CONFIG_LIBC_USE_GLIBC)$(CONFIG_LIBC_USE_MUSL),posix)$(if $(CONFIG_LIBC_USE_UCLIBC),gnu),no) \ + --icu=$(if $(CONFIG_PACKAGE_icu),yes,no) \ + --pcre=system \ + --zlib=system \ + --journald=no \ + --syslog=no \ + --ssl=$(if $(CONFIG_PACKAGE_qt5base-network),yes,no) \ + --openssl-linked$(if $(CONFIG_PACKAGE_qt5base-network),,=no) \ + --libproxy=no \ + --system-proxies=yes \ + --cups=no \ + --fontconfig=yes \ + --freetype=system \ + --harfbuzz=no \ + --gtk=no \ + --opengl=no \ + --opengles3=no \ + --egl=no \ + --xcb-xlib=no \ + --qpa=$(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb),linuxfb,) \ + --directfb=no \ + --eglfs=no \ + --gbm=no \ + --linuxfb=$(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb),yes,no) \ + --xcb=no \ + \ + --libudev=yes \ + --evdev=yes \ + --libinput=$(if $(CONFIG_PACKAGE_qt5base-plugin-input-libinput),yes,no) \ + --mtdev=no \ + --tslib=no \ + --bundled-xcb-xinput=no \ + --xkbcommon=no \ + --gif=$(if $(CONFIG_PACKAGE_qt5base-gui),yes,no) \ + --ico=$(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-ico),yes,no) \ + --libjpeg=$(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg),system,no) \ + --libpng=system \ + --sql-db2=no \ + --sql-ibase=no \ + --sql-mysql=no \ + --sql-oci=no \ + --sql-odbc=no \ + --sql-psql=no \ + --sql-sqlite=no \ + --sql-sqlite2=no \ + --sql-tds=no \ + --sqlite=no \ ) endef @@ -422,76 +418,85 @@ define Host/Configure TARGET_CXXFLAGS="$(HOST_CFLAGS) $(HOST_CXXFLAGS)" \ TARGET_LDFLAGS="$(HOST_LDFLAGS)" \ ./configure \ - -prefix $(STAGING_DIR_HOST) \ - -hostprefix $(STAGING_DIR_HOST) \ - -hostdatadir $(STAGING_DIR_HOST)/share \ - -datadir $(STAGING_DIR_HOST)/share \ - -archdatadir $(STAGING_DIR_HOST)/lib \ - -no-gcc-sysroot \ - -verbose \ - -opensource \ - -confirm-license \ - -release \ - -no-optimized-tools \ - -no-strip \ - -shared \ - -no-framework \ - -nomake tools \ - -nomake examples \ - -no-compile-examples \ - -gui \ - -no-widgets \ - -no-dbus \ - -no-accessibility \ - -no-qml-debug \ - -qt-doubleconversion \ - -no-glib \ - -no-eventfd \ - -no-inotify \ - -no-icu \ - -qt-pcre \ - -qt-zlib \ - -no-journald \ - -no-syslog \ - -no-ssl \ - -no-openssl \ - -no-cups \ - -no-fontconfig \ - -qt-freetype \ - -no-harfbuzz \ - -no-gtk \ - -no-opengl \ - -no-xcb-xlib \ - -no-xcb \ - -no-directfb \ - -no-eglfs \ - -no-gbm \ - -no-kms \ - -no-linuxfb \ - -no-mirclient \ - -no-xcb \ - -evdev \ - -no-libinput \ - -no-mtdev \ - -no-tslib \ - -no-xinput2 \ - -no-xkbcommon-x11 \ - -no-xkbcommon-evdev \ - -no-gif \ - -no-ico \ - -qt-libpng \ - -no-libjpeg \ - -no-sql-db2 \ - -no-sql-ibase \ - -no-sql-mysql \ - -no-sql-oci \ - -no-sql-odbc \ - -no-sql-psql \ - -no-sql-sqlite \ - -no-sql-sqlite2 \ - -no-sql-tds \ - -no-libproxy \ - -no-xkbcommon \ + --prefix=$(STAGING_DIR_HOST) \ + --hostprefix=$(STAGING_DIR_HOST) \ + --hostdatadir=$(STAGING_DIR_HOST)/share \ + --datadir=$(STAGING_DIR_HOST)/share \ + --archdatadir=$(STAGING_DIR_HOST)/lib \ + --gcc-sysroot=no \ + --verbose=yes \ + --opensource \ + --confirm-license \ + --release=yes \ + --optimized-tools=no \ + --optimize-size=no \ + --strip=no \ + --shared=yes \ + --framework=no \ + --reduce-exports=no \ + --reduce-relocations=no \ + --pch=no \ + --ltcg=no \ + --use-gold-linker=no \ + --warnings-are-errors=no \ + --pkg-config=yes \ + --compile-examples=no \ + --make=libs \ + --nomake=tools \ + --nomake=examples \ + --gui=yes \ + --widgets=no \ + --dbus=no \ + --accessibility=no \ + --doubleconversion=qt \ + --glib=no \ + --eventfd=no \ + --inotify=no \ + --iconv=no \ + --icu=no \ + --pcre=qt \ + --zlib=qt \ + --journald=no \ + --syslog=no \ + --ssl=no \ + --libproxy=no \ + --system-proxies=no \ + --cups=no \ + --fontconfig=no \ + --freetype=qt \ + --harfbuzz=no \ + --gtk=no \ + --opengl=no \ + --opengles3=no \ + --egl=no \ + --xcb-xlib=no \ + --directfb=no \ + --eglfs=no \ + --gbm=no \ + --linuxfb=no \ + --xcb=no \ + \ + --libudev=no \ + --evdev=no \ + --libinput=no \ + --mtdev=no \ + --tslib=no \ + --bundled-xcb-xinput=no \ + --xkbcommon=yes \ + --gif=no \ + --ico=no \ + --libjpeg=no \ + --libpng=no \ + --sql-db2=no \ + --sql-ibase=no \ + --sql-mysql=no \ + --sql-oci=no \ + --sql-odbc=no \ + --sql-psql=no \ + --sql-sqlite=no \ + --sql-sqlite2=no \ + --sql-tds=no \ + --sqlite=no \ ) endef @@ -610,6 +615,10 @@ define Package/qt5base-plugin-imageformats-jpeg/install $(call Build/Install/Plugins,$(1),imageformats,libqjpeg) endef +#define Package/qt5base-plugin-imageformats-png/install +# $(call Build/Install/Plugins,$(1),imageformats,libqpng) +#endef + define Package/qt5base-plugin-platforms-linuxfb/install $(call Build/Install/Plugins,$(1),platforms,libqlinuxfb) endef @@ -662,6 +671,7 @@ $(eval $(call BuildPackage,qt5base-plugin-input-evdevtouch)) #$(eval $(call BuildPackage,qt5base-plugin-imageformats-gif)) $(eval $(call BuildPackage,qt5base-plugin-imageformats-ico)) $(eval $(call BuildPackage,qt5base-plugin-imageformats-jpeg)) +#$(eval $(call BuildPackage,qt5base-plugin-imageformats-png)) $(eval $(call BuildPackage,qt5base-plugin-platforms-linuxfb)) #$(eval $(call BuildPackage,qt5base-plugin-platforms-eglfs)) #$(eval $(call BuildPackage,qt5base-plugin-platforms-minimalegl)) diff --git a/frameworks/qt5base/files/qmake.mk b/frameworks/qt5base/files/qmake.mk index 0128a16..34903b7 100644 --- a/frameworks/qt5base/files/qmake.mk +++ b/frameworks/qt5base/files/qmake.mk @@ -1,6 +1,6 @@ # -# Copyright (C) 2015 OpenWrt.org -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt.org +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -163,6 +163,15 @@ define Build/Install/Libs $(1)/$(QT_INSTALL_LIBS)/ endef +define Build/Install/Translations + $(INSTALL_DIR) \ + $(1)/$(QT_INSTALL_TRANSLATIONS) + + $(CP) \ + $(PKG_INSTALL_DIR)/$(QT_INSTALL_TRANSLATIONS)/$(2).qm \ + $(1)/$(QT_INSTALL_TRANSLATIONS)/ +endef + define Build/Install/Plugins $(INSTALL_DIR) \ $(1)/$(QT_INSTALL_PLUGINS)/$(2) diff --git a/frameworks/qt5base/patches/000-fix-gnuiconv-test.patch b/frameworks/qt5base/patches/000-fix-gnuiconv-test.patch new file mode 100644 index 0000000..2ec7794 --- /dev/null +++ b/frameworks/qt5base/patches/000-fix-gnuiconv-test.patch @@ -0,0 +1,81 @@ +From e9097ab24832e42df6e16093e5c3b775dbcf2367 Mon Sep 17 00:00:00 2001 +From: Mirko Vogt +Date: Fri, 5 Jun 2020 12:46:36 +0000 +Subject: [PATCH] GNU iconv() - at least in OpenWrt - behaves like POSIX + iconv() + +GNU iconv() had the terrible idea of introducing a build variant for its +iconv() function, where the second argument can either be a `char **` or +a `const char **` depending on a macro set under whatever certain +circumstances at build time, resulting in different function signatures. + +Despite those two possible variants, the project only mentions the +non-const one in their manual page. + +Since this didn't seem to be enough trouble for its users, they seem to +have changed the default variant from `const char **` to `char **` at +some point, while leaving the manual page as it is, now stating the +non-default, hence in most cases probably wrong, signature. + +Qt assumes GNU iconv() has the nowadays non-default function signature +(`const char **`), and distiguishes that way from the POSIX one. +Another issue with Qt and GNU iconv(): While we can easily make the test +work for GNU iconv with its default iconv()-signature, Qt assumes that if +the GNU-iconv succeeds, the present version of iconv is POSIX- +incompatible - which however isn't true in our case. + +However we also can't just use the POSIX iconv test, as the Qt test for +POSIX iconv fails on GNU iconv for another reason: GNU iconv requires +explicit linker flags (`-liconv`), which the Qt test for POSIX iconv +however implicitly drops when the target system is linux. + +This was extensively discussed in a Qt bug report: +https://bugreports.qt.io/projects/QTBUG/issues/QTBUG-84708 + +The only good thing seems to be that Qt's configure script is also buggy +and counter-intuitive, resulting in 'gnu' not being accepted as iconv +variant when using the default single-dash format for specifying +configure options: +https://bugreports.qt.io/projects/QTBUG/issues/QTBUG-84687 +So most likely there's nobody using Qt with GNU iconv anyway. + +This patch is what I came up with being the smallest changeset. +May it work. +--- + src/corelib/codecs/qiconvcodec.cpp | 5 ----- + src/corelib/configure.json | 2 +- + 2 files changed, 1 insertion(+), 6 deletions(-) + +diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp +index 9c397279..8d43e6c8 100644 +--- a/src/corelib/codecs/qiconvcodec.cpp ++++ b/src/corelib/codecs/qiconvcodec.cpp +@@ -180,12 +180,7 @@ QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState + IconvState *state = *pstate; + size_t inBytesLeft = len; + // best case assumption, each byte is converted into one UTF-16 character, plus 2 bytes for the BOM +-#if !QT_CONFIG(posix_libiconv) +- // GNU doesn't disagree with POSIX :/ +- const char *inBytes = chars; +-#else + char *inBytes = const_cast(chars); +-#endif + + QByteArray in; + if (remainingCount) { +diff --git a/src/corelib/configure.json b/src/corelib/configure.json +index c5e04232..32237bc4 100644 +--- a/src/corelib/configure.json ++++ b/src/corelib/configure.json +@@ -72,7 +72,7 @@ + "test": { + "main": [ + "iconv_t x = iconv_open(\"\", \"\");", +- "const char *inp;", ++ "char *inp;", + "char *outp;", + "size_t inbytes, outbytes;", + "iconv(x, &inp, &inbytes, &outp, &outbytes);", +-- +2.20.1 + diff --git a/frameworks/qt5base/patches/001-fix-pkgconfig-xcompile-detection.patch b/frameworks/qt5base/patches/001-fix-pkgconfig-xcompile-detection.patch deleted file mode 100644 index 075ab3f..0000000 --- a/frameworks/qt5base/patches/001-fix-pkgconfig-xcompile-detection.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- qtbase-opensource-src-5.8.0-beta/configure.pri.orig 2016-11-20 20:06:38.811897204 +0100 -+++ qtbase-opensource-src-5.8.0-beta/configure.pri 2016-11-20 20:06:54.279928752 +0100 -@@ -174,7 +174,7 @@ - "Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set." \ - "Set this variable to your sysroot for pkg-config to function correctly when" \ - "cross-compiling or use -pkg-config to override this test.") -- return(false) -+# return(false) - } - - pkgConfigSysrootDir = $$sysroot ---- qtbase-opensource-src-5.8.0-rc/mkspecs/features/qt_functions.prf.orig 2017-01-19 17:52:11.741970700 +0100 -+++ qtbase-opensource-src-5.8.0-rc/mkspecs/features/qt_functions.prf 2017-01-19 17:52:06.641997235 +0100 -@@ -272,7 +272,7 @@ - warning("Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set.") - warning("Set this variable to your sysroot for pkg-config to function") - warning("correctly when cross-compiling.") -- return() -+# return() - } - - pkgConfigSysrootDir = $$sysroot diff --git a/frameworks/qt5base/patches/005-fix-segv-if-no-cursor.patch b/frameworks/qt5base/patches/005-fix-segv-if-no-cursor.patch deleted file mode 100644 index cf34e4d..0000000 --- a/frameworks/qt5base/patches/005-fix-segv-if-no-cursor.patch +++ /dev/null @@ -1,41 +0,0 @@ -From a51a71ba6b08fcd761d5b0547bcd5d65f341d837 Mon Sep 17 00:00:00 2001 -From: Mirko Vogt -Date: Mon, 27 Nov 2017 20:25:38 +0100 -Subject: [PATCH 1/2] QFbCursor::pointerEvent(): Fix SEGV if - QT_QPA_FB_HIDECURSOR is set - -getCurrentRect() accesses mCursorImage.image() which is NULL in case of -QT_QPA_FB_HIDECURSOR=1. -Avoid respective calls in pointerEvent() by returning early in such -case. - -Signed-off-by: Mirko Vogt ---- - src/platformsupport/fbconvenience/qfbcursor.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/platformsupport/fbconvenience/qfbcursor.cpp b/src/platformsupport/fbconvenience/qfbcursor.cpp -index 7daf3f4d0c..c7b1a71c04 100644 ---- a/src/platformsupport/fbconvenience/qfbcursor.cpp -+++ b/src/platformsupport/fbconvenience/qfbcursor.cpp ---- a/src/platformsupport/fbconvenience/qfbcursor.cpp -+++ b/src/platformsupport/fbconvenience/qfbcursor.cpp -@@ -112,6 +112,8 @@ void QFbCursor::pointerEvent(const QMouseEvent &e) - if (e.type() != QEvent::MouseMove) - return; - m_pos = e.screenPos().toPoint(); -+ if (!mVisible) -+ return; - mCurrentRect = getCurrentRect(); - if (mOnScreen || mScreen->geometry().intersects(mCurrentRect.translated(mScreen->geometry().topLeft()))) - setDirty(); -@@ -165,6 +167,9 @@ void QFbCursor::setCursor(const uchar *data, const uchar *mask, int width, int h - #ifndef QT_NO_CURSOR - void QFbCursor::changeCursor(QCursor * widgetCursor, QWindow *window) - { -+ if (!mVisible) -+ return; -+ - Q_UNUSED(window); - const Qt::CursorShape shape = widgetCursor ? widgetCursor->shape() : Qt::ArrowCursor; - diff --git a/frameworks/qt5base/patches/010-iconv-cast.patch b/frameworks/qt5base/patches/010-iconv-cast.patch deleted file mode 100644 index c44daf1..0000000 --- a/frameworks/qt5base/patches/010-iconv-cast.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- a/src/corelib/codecs/qiconvcodec.cpp -+++ b/src/corelib/codecs/qiconvcodec.cpp -@@ -137,7 +137,7 @@ QIconvCodec::IconvState::IconvState(icon - - QIconvCodec::IconvState::~IconvState() - { -- if (cd != reinterpret_cast(-1)) -+ if (cd != (iconv_t)-1) - iconv_close(cd); - if (buffer != array) - delete[] buffer; -@@ -200,7 +200,7 @@ QString QIconvCodec::convertToUnicode(co - if (!*pstate) { - // first time, create the state - iconv_t cd = createIconv_t(UTF16, 0); -- if (cd == reinterpret_cast(-1)) { -+ if (cd == (iconv_t)-1) { - static int reported = 0; - if (!reported++) { - fprintf(stderr, -@@ -345,19 +345,19 @@ QByteArray QIconvCodec::convertFromUnico - IconvState *&state = ts ? ts->localData() : temporaryState; - if (!state) { - iconv_t cd = createIconv_t(0, UTF16); -- if (cd != reinterpret_cast(-1)) { -+ if (cd != (iconv_t)-1) { - if (!setByteOrder(cd)) { - perror("QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed for BOM"); - - iconv_close(cd); -- cd = reinterpret_cast(-1); -+ cd = (iconv_t)-1; - - return QString(uc, len).toLatin1(); - } - } - state = new IconvState(cd); - } -- if (state->cd == reinterpret_cast(-1)) { -+ if (state->cd == (iconv_t)-1) { - static int reported = 0; - if (!reported++) { - fprintf(stderr, diff --git a/frameworks/qt5graphicaleffects/Makefile b/frameworks/qt5graphicaleffects/Makefile index d1dedef..cf04a29 100644 --- a/frameworks/qt5graphicaleffects/Makefile +++ b/frameworks/qt5graphicaleffects/Makefile @@ -1,6 +1,6 @@ # -# Copyright (C) 2016 OpenWrt -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -8,16 +8,17 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5graphicaleffects -PKG_VERSION:=5.9.1 +PKG_VERSION:=5.15.0 PKG_RELEASE:=1 -PKG_HASH:=5f86c38e36d9553049cfbe56d4869e73cf8ab920905402cbcafb56dd8a1a59ff +PKG_HASH:=0d2ea4bc73b9df13a4b739dcbc1e3c7b298c7e682f7f9252b232e3bde7b63eda -PKG_SYS_NAME:=qtgraphicaleffects-opensource-src-$(PKG_VERSION) +PKG_SYS_NAME:=qtgraphicaleffects-everywhere-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 +PKG_BUILD_DEPENDS:=qt5base PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk @@ -30,8 +31,8 @@ define Package/qt5graphicaleffects SUBMENU:=Frameworks and Toolkits TITLE:=qt5graphicaleffects URL:=http://qt.io - MAINTAINER:=Mirko Vogt - DEPENDS:=+qt5quick2-quick + MAINTAINER:=Mirko Vogt + DEPENDS:=+qt5quick2-quick @BROKEN # depends on GL support, but currently we only support software rendering endef define Build/InstallDev diff --git a/frameworks/qt5quick1/Makefile b/frameworks/qt5quick1/Makefile deleted file mode 100644 index 35ac7be..0000000 --- a/frameworks/qt5quick1/Makefile +++ /dev/null @@ -1,88 +0,0 @@ -# -# Copyright (C) 2015 OpenWrt -# Author: Mirko Vogt -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=qt5quick1 -PKG_VERSION:=5.4.2 -PKG_RELEASE:=1 -PKG_MD5SUM:=8275c3ca1f962905baf1f19310e1b6e4 - -PKG_SYS_NAME:=qtquick1-opensource-src-$(PKG_VERSION) -PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules - -PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) -PKG_BUILD_PARALLEL:=1 -PKG_BUILD_DEPENDS:=qt5base -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/nls.mk --include $(STAGING_DIR)/host/mk/qmake.mk - -define Package/qt5quick1/Default - SECTION:=video-frameworks - CATEGORY:=Video - SUBMENU:=Frameworks and Toolkits - TITLE:=Qt5quick1 - DEPENDS:=qt5quick1 +qt5base-core +qt5base-gui +qt5base-network +qt5base-sql +qt5base-widgets +qt5script-script - URL:=http://qt.io - MAINTAINER:=Mirko Vogt -endef - -# define Package/qt5quick1 -# $(call Package/qt5quick1/Default) -# DEPENDS:=+qt5base +qt5script -# MENU:=1 -# endef - -define Package/qt5quick1-declarative - $(call Package/qt5quick1/Default) - TITLE+=declarative -endef - -#TODO: fine grane -define Package/qt5quick1-imports - $(call Package/qt5quick1/Default) - TITLE+=imports - DEPENDS+=+qt5quick1-declarative -endef - -define Package/qt5quick1-examples - $(call Package/qt5quick1/Default) - TITLE+=examples - DEPENDS+=+qt5quick1-declarative -endef - -define Build/InstallDev - $(call Build/Install/HostFiles,$(1)) - $(call Build/Install/Headers,$(1)) - $(call Build/Install/Libs,$(1),*) -endef - -define Package/qt5quick1-declarative/install - $(call Build/Install/Libs,$(1),*) -endef - -define Package/qt5quick1-imports/install - $(INSTALL_DIR) \ - $(1)/usr/lib/qt5 - - $(CP) \ - $(PKG_INSTALL_DIR)/usr/lib/qt5/* \ - $(1)/usr/lib/qt5/ -endef - -define Package/qt5quick1-examples/install - $(call Build/Install/Examples,$(1)) -endef - -# $(eval $(call BuildPackage,qt5quick1)) -$(eval $(call BuildPackage,qt5quick1-declarative)) -$(eval $(call BuildPackage,qt5quick1-imports)) -$(eval $(call BuildPackage,qt5quick1-examples)) diff --git a/frameworks/qt5quick2-2d-sw-renderer-GLstubs/Makefile b/frameworks/qt5quick2-2d-sw-renderer-GLstubs/Makefile index 1495fda..e0fea17 100644 --- a/frameworks/qt5quick2-2d-sw-renderer-GLstubs/Makefile +++ b/frameworks/qt5quick2-2d-sw-renderer-GLstubs/Makefile @@ -1,6 +1,6 @@ # -# Copyright (C) 2015 OpenWrt.org -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt.org +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -20,11 +20,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5quick2-2d-sw-renderer-GLstubs PKG_VERSION:=5.7.0 PKG_RELEASE:=1 -MD5SUM:=41bfcb5ab6d7a820687c4208beeb7057 +PKG_MD5SUM:=41bfcb5ab6d7a820687c4208beeb7057 PKG_SYS_NAME:=qtdeclarative-render2d-opensource-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/archive/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/qtdeclarative-render2d-opensource-src-$(PKG_VERSION)-GLstubs/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 @@ -37,7 +37,7 @@ define Package/qt5quick2-2d-sw-renderer-GLstubs SUBMENU:=Frameworks and Toolkits TITLE:=Dummy GL stubs URL:=http://qt.io - MAINTAINER:=Mirko Vogt + MAINTAINER:=Mirko Vogt endef TARGET_CFLAGS += \ diff --git a/frameworks/qt5quick2-controls2/Makefile b/frameworks/qt5quick2-controls2/Makefile index ce36e87..8fcdcd1 100644 --- a/frameworks/qt5quick2-controls2/Makefile +++ b/frameworks/qt5quick2-controls2/Makefile @@ -1,6 +1,6 @@ # -# Copyright (C) 2015 OpenWrt -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5quick2-controls2 -PKG_VERSION:=5.9.1 +PKG_VERSION:=5.15.0 PKG_RELEASE:=1 -PKG_HASH:=203be0321112d1513b722fce463f9e30d7d00befb33349901d9517f4f13408ff +PKG_HASH:=839abda9b58cd8656b2e5f46afbb484e63df466481ace43318c4c2022684648f -PKG_SYS_NAME:=qtquickcontrols2-opensource-src-$(PKG_VERSION) +PKG_SYS_NAME:=qtquickcontrols2-everywhere-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 @@ -30,7 +30,7 @@ define Package/qt5quick2-controls2 SUBMENU:=Frameworks and Toolkits TITLE:=qt5quick2-controls2 URL:=http://qt.io - MAINTAINER:=Mirko Vogt + MAINTAINER:=Mirko Vogt DEPENDS:=+qt5quick2-quick endef diff --git a/frameworks/qt5quick2/Makefile b/frameworks/qt5quick2/Makefile index 4f63d08..4d0cd28 100644 --- a/frameworks/qt5quick2/Makefile +++ b/frameworks/qt5quick2/Makefile @@ -1,6 +1,6 @@ # -# Copyright (C) 2015 OpenWrt -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5quick2 -PKG_VERSION:=5.9.1 +PKG_VERSION:=5.15.0 PKG_RELEASE:=1 -PKG_HASH:=d2fe6c9c1a9f19af6e96553c6d75366ab8f397bc232acd67d31476955fee94ff +PKG_HASH:=9c3c93fb7d340b2f7d738d12408c047318c78973cb45bfc5ff6b3a57e1fef699 -PKG_SYS_NAME:=qtdeclarative-opensource-src-$(PKG_VERSION) +PKG_SYS_NAME:=qtdeclarative-everywhere-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 @@ -29,10 +29,10 @@ define Package/qt5quick2/Default SECTION:=video-frameworks CATEGORY:=Video SUBMENU:=Frameworks and Toolkits - TITLE:=Qt5quick2 + TITLE:=Qt5Quick2 # DEPENDS+=qt5quick2 URL:=http://qt.io - MAINTAINER:=Mirko Vogt + MAINTAINER:=Mirko Vogt endef # define Package/qt5quick2 @@ -43,96 +43,153 @@ endef define Package/qt5quick2-qml $(call Package/qt5quick2/Default) - TITLE+=qml + TITLE+=Qml DEPENDS+=+qt5base-network endef +define Package/qt5quick2-qml-models + $(call Package/qt5quick2/Default) + TITLE+=QmlModels + DEPENDS+=+qt5quick2-qml +endef + +define Package/qt5quick2-qml-worker-script + $(call Package/qt5quick2/Default) + TITLE+=QmlWorkerScript + DEPENDS+=+qt5quick2-qml +endef + define Package/qt5quick2-quick $(call Package/qt5quick2/Default) - TITLE+=quick - DEPENDS+=+qt5quick2-qml +qt5base-gui + TITLE+=Quick + DEPENDS+=+qt5base-gui +qt5quick2-qml-models endef -define Package/qt5quick2-test +define Package/qt5quick2-quick-test $(call Package/qt5quick2/Default) - TITLE+=test - DEPENDS+=+qt5quick2-quick +qt5base-gui +qt5base-widgets +qt5base-test + TITLE+=QuickTest + DEPENDS+=+qt5quick2-quick +qt5base-widgets +qt5base-test endef -define Package/qt5quick2-particles +#define Package/qt5quick2-particles +# $(call Package/qt5quick2/Default) +# TITLE+=particles +# DEPENDS+=+qt5quick2-quick +#endef + +define Package/qt5quick2-quick-widgets $(call Package/qt5quick2/Default) - TITLE+=particles - DEPENDS+=+qt5quick2-quick + TITLE+=QuickWidgets + DEPENDS+=+qt5quick2-quick +qt5base-widgets endef -define Package/qt5quick2-widgets +define Package/qt5quick2-quick-shapes $(call Package/qt5quick2/Default) - TITLE+=widgets - DEPENDS+=+qt5quick2-quick +qt5base-gui +qt5base-widgets + TITLE+=QuickShapes + DEPENDS+=+qt5quick2-quick endef ### -define Package/qt5quick2-qml-statemachine +define Package/qt5quick2-qml-module-qtqml-models2 + $(call Package/qt5quick2/Default) + TITLE+=QML QtQml models + DEPENDS+=+qt5quick2-qml-models +endef + +define Package/qt5quick2-qml-module-qtqml-statemachine $(call Package/qt5quick2/Default) - TITLE+=QML statemachine + TITLE+=QML StateMachine DEPENDS:=+qt5quick2-qml endef -define Package/qt5quick2-qml-models +define Package/qt5quick2-qml-module-qtqml-workerscript2 $(call Package/qt5quick2/Default) - TITLE+=QML models - DEPENDS+=+qt5quick2-qml + TITLE+=QML WorkerScript + DEPENDS:=+qt5quick2-qml-worker-script endef -define Package/qt5quick2-qml-folderlistmodel +### + +define Package/qt5quick2-qml-module-qtlabs-animation + $(call Package/qt5quick2/Default) + TITLE+=QML QtLabs animation + DEPENDS:=+qt5quick2-qml +qt5quick2-quick +endef + +define Package/qt5quick2-qml-module-qtlabs-folderlistmodel $(call Package/qt5quick2/Default) - TITLE+=QML folderlistmodel + TITLE+=QML QtLabs folderlistmodel DEPENDS:=+qt5quick2-qml endef -define Package/qt5quick2-qml-settings +define Package/qt5quick2-qml-module-qtlabs-models + $(call Package/qt5quick2/Default) + TITLE+=QML QtLabs qmlmodels + DEPENDS+=+qt5quick2-qml-models +endef + +define Package/qt5quick2-qml-module-qtlabs-settings $(call Package/qt5quick2/Default) - TITLE+=QML settings + TITLE+=QML QtLabs settings DEPENDS:=+qt5quick2-qml endef -define Package/qt5quick2-qml-test +define Package/qt5quick2-qml-module-qtlabs-sharedimage $(call Package/qt5quick2/Default) - TITLE+=QML folderlistmodel - DEPENDS+=+qt5quick2-quick +qt5base-gui +qt5quick2-test + TITLE+=QML QtLabs sharedimage + DEPENDS:=+qt5quick2-quick endef -define Package/qt5quick2-qml-layouts +define Package/qt5quick2-qml-module-qtlabs-wavefrontmesh $(call Package/qt5quick2/Default) - TITLE+=QML layouts - DEPENDS+=+qt5quick2-quick + TITLE+=QML QtLabs wavefrontmesh + DEPENDS:=+qt5quick2-quick endef -define Package/qt5quick2-qml-particles + +define Package/qt5quick2-qml-module-qttest $(call Package/qt5quick2/Default) - TITLE+=QML particles - DEPENDS+=+qt5quick2-particles + TITLE+=QML QtTest + DEPENDS+=+qt5quick2-quick +qt5quick2-quick-test endef -define Package/qt5quick2-qml-window +define Package/qt5quick2-qml-module-qtquick-layouts $(call Package/qt5quick2/Default) - TITLE+=QML window + TITLE+=QML QtQuick Layouts DEPENDS+=+qt5quick2-quick endef -define Package/qt5quick2-qml-localstorage +#define Package/qt5quick2-qml-module-qtquick-particles2 +# $(call Package/qt5quick2/Default) +# TITLE+=QML particles +# DEPENDS+=+qt5quick2-particles +#endef + +define Package/qt5quick2-qml-module-qtquick-localstorage $(call Package/qt5quick2/Default) - TITLE+=QML localstorage + TITLE+=QML QtQuick LocalStorage DEPENDS+=+qt5quick2-qml +qt5base-sql endef -define Package/qt5quick2-qml-quick +define Package/qt5quick2-qml-module-qtquick-shapes + $(call Package/qt5quick2/Default) + TITLE+=QML QtQuick Shapes + DEPENDS+=+qt5quick2-quick-shapes +endef + +define Package/qt5quick2-qml-module-qtquick-window2 $(call Package/qt5quick2/Default) - TITLE+=QML quick2 + TITLE+=QML QtQuick Window.2 DEPENDS+=+qt5quick2-quick endef +define Package/qt5quick2-qml-module-qtquick2 + $(call Package/qt5quick2/Default) + TITLE+=QML QtQuick.2 + DEPENDS+=+qt5quick2-quick +qt5quick2-qml-worker-script +endef + #### define Build/InstallDev @@ -155,81 +212,132 @@ endef define Package/qt5quick2-qml/install $(call Build/Install/Libs,$(1),libQt5Qml) + + $(INSTALL_DIR) \ + $(1)/$(QT_INSTALL_QML) + + $(CP) \ + $(PKG_INSTALL_DIR)/$(QT_INSTALL_QML)/builtins.qmltypes \ + $(1)/$(QT_INSTALL_QML)/ +endef + +define Package/qt5quick2-qml-models/install + $(call Build/Install/Libs,$(1),libQt5QmlModels) +endef + +define Package/qt5quick2-qml-worker-script/install + $(call Build/Install/Libs,$(1),libQt5QmlWorkerScript) endef define Package/qt5quick2-quick/install $(call Build/Install/Libs,$(1),libQt5Quick) endef -define Package/qt5quick2-test/install +define Package/qt5quick2-quick-test/install $(call Build/Install/Libs,$(1),libQt5QuickTest) endef -define Package/qt5quick2-particles/install - $(call Build/Install/Libs,$(1),libQt5QuickParticles) -endef +#define Package/qt5quick2-particles/install +# $(call Build/Install/Libs,$(1),libQt5QuickParticles) +#endef -define Package/qt5quick2-widgets/install +define Package/qt5quick2-quick-widgets/install $(call Build/Install/Libs,$(1),libQt5QuickWidgets) endef - -define Package/qt5quick2-qml-statemachine/install - $(call Build/Install/QMLplugin,$(1),/QtQml/StateMachine,*) +define Package/qt5quick2-quick-shapes/install + $(call Build/Install/Libs,$(1),libQt5QuickShapes) endef -define Package/qt5quick2-qml-models/install +define Package/qt5quick2-qml-module-qtqml-models2/install $(call Build/Install/QMLplugin,$(1),QtQml/Models.2,*) endef -define Package/qt5quick2-qml-folderlistmodel/install +define Package/qt5quick2-qml-module-qtqml-statemachine/install + $(call Build/Install/QMLplugin,$(1),QtQml/StateMachine,*) +endef + +define Package/qt5quick2-qml-module-qtqml-workerscript2/install + $(call Build/Install/QMLplugin,$(1),QtQml/WorkerScript.2,*) +endef + +define Package/qt5quick2-qml-module-qtlabs-animation/install + $(call Build/Install/QMLplugin,$(1),Qt/labs/animation/,*) +endef + +define Package/qt5quick2-qml-module-qtlabs-folderlistmodel/install $(call Build/Install/QMLplugin,$(1),Qt/labs/folderlistmodel,*) endef -define Package/qt5quick2-qml-settings/install +define Package/qt5quick2-qml-module-qtlabs-models/install + $(call Build/Install/QMLplugin,$(1),Qt/labs/qmlmodels,*) +endef + +define Package/qt5quick2-qml-module-qtlabs-settings/install $(call Build/Install/QMLplugin,$(1),Qt/labs/settings/,*) endef -define Package/qt5quick2-qml-test/install +define Package/qt5quick2-qml-module-qtlabs-sharedimage/install + $(call Build/Install/QMLplugin,$(1),Qt/labs/sharedimage/,*) +endef + +define Package/qt5quick2-qml-module-qtlabs-wavefrontmesh/install + $(call Build/Install/QMLplugin,$(1),Qt/labs/wavefrontmesh/,*) +endef + +define Package/qt5quick2-qml-module-qttest/install $(call Build/Install/QMLplugin,$(1),QtTest,*) $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/qmltestrunner $(1)/usr/bin/ endef -define Package/qt5quick2-qml-layouts/install +define Package/qt5quick2-qml-module-qtquick-layouts/install $(call Build/Install/QMLplugin,$(1),QtQuick/Layouts,*) endef -define Package/qt5quick2-qml-particles/install - $(call Build/Install/QMLplugin,$(1),QtQuick/Particles.2,*) +#define Package/qt5quick2-qml-module-qtquick-particles2/install +# $(call Build/Install/QMLplugin,$(1),QtQuick/Particles.2,*) +#endef + +define Package/qt5quick2-qml-module-qtquick-localstorage/install + $(call Build/Install/QMLplugin,$(1),QtQuick/LocalStorage,*) endef -define Package/qt5quick2-qml-window/install - $(call Build/Install/QMLplugin,$(1),QtQuick/Window.2,*) +define Package/qt5quick2-qml-module-qtquick-shapes/install + $(call Build/Install/QMLplugin,$(1),QtQuick/Shapes,*) endef -define Package/qt5quick2-qml-localstorage/install - $(call Build/Install/QMLplugin,$(1),QtQuick/LocalStorage,*) +define Package/qt5quick2-qml-module-qtquick-window2/install + $(call Build/Install/QMLplugin,$(1),QtQuick/Window.2,*) endef -define Package/qt5quick2-qml-quick/install +define Package/qt5quick2-qml-module-qtquick2/install $(call Build/Install/QMLplugin,$(1),QtQuick.2,*) endef #$(eval $(call BuildPackage,qt5quick2)) $(eval $(call BuildPackage,qt5quick2-qml)) -$(eval $(call BuildPackage,qt5quick2-quick)) -$(eval $(call BuildPackage,qt5quick2-test)) -$(eval $(call BuildPackage,qt5quick2-particles)) -$(eval $(call BuildPackage,qt5quick2-widgets)) -$(eval $(call BuildPackage,qt5quick2-qml-statemachine)) $(eval $(call BuildPackage,qt5quick2-qml-models)) -$(eval $(call BuildPackage,qt5quick2-qml-folderlistmodel)) -$(eval $(call BuildPackage,qt5quick2-qml-settings)) -$(eval $(call BuildPackage,qt5quick2-qml-test)) -$(eval $(call BuildPackage,qt5quick2-qml-layouts)) -$(eval $(call BuildPackage,qt5quick2-qml-particles)) -$(eval $(call BuildPackage,qt5quick2-qml-window)) -$(eval $(call BuildPackage,qt5quick2-qml-localstorage)) -$(eval $(call BuildPackage,qt5quick2-qml-quick)) +$(eval $(call BuildPackage,qt5quick2-qml-worker-script)) +$(eval $(call BuildPackage,qt5quick2-quick)) +$(eval $(call BuildPackage,qt5quick2-quick-test)) +#$(eval $(call BuildPackage,qt5quick2-particles)) +$(eval $(call BuildPackage,qt5quick2-quick-widgets)) +$(eval $(call BuildPackage,qt5quick2-quick-shapes)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtqml-models2)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtqml-statemachine)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtqml-workerscript2)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtlabs-models)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtlabs-folderlistmodel)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtlabs-settings)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtlabs-animation)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtlabs-sharedimage)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtlabs-wavefrontmesh)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtquick2)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtquick-layouts)) +#$(eval $(call BuildPackage,qt5quick2-qml-module-qtquick-particles2)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtquick-localstorage)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtquick-shapes)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qtquick-window2)) +$(eval $(call BuildPackage,qt5quick2-qml-module-qttest)) diff --git a/frameworks/qt5script/Makefile b/frameworks/qt5script/Makefile index 3464cbf..cbad2c3 100644 --- a/frameworks/qt5script/Makefile +++ b/frameworks/qt5script/Makefile @@ -1,6 +1,6 @@ # -# Copyright (C) 2015 OpenWrt -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5script -PKG_VERSION:=5.9.1 +PKG_VERSION:=5.15.0 PKG_RELEASE:=1 -PKG_HASH:=176a08865d5f66437b0f279fc5d7f381f359f20bafbffcebdcac61e86415188f +PKG_HASH:=02dc21b309621876a89671be27cea86a58e74a96aa28da65fe1b37a3aad29373 -PKG_SYS_NAME:=qtscript-opensource-src-$(PKG_VERSION) +PKG_SYS_NAME:=qtscript-everywhere-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 @@ -33,7 +33,7 @@ define Package/qt5script/Default # DEPENDS:=qt5script +qt5base-core DEPENDS:=+qt5base-core URL:=http://qt.io - MAINTAINER:=Mirko Vogt + MAINTAINER:=Mirko Vogt endef # define Package/qt5script diff --git a/frameworks/qt5tools/Makefile b/frameworks/qt5tools/Makefile index 073fd34..5b8cce8 100644 --- a/frameworks/qt5tools/Makefile +++ b/frameworks/qt5tools/Makefile @@ -1,6 +1,6 @@ # -# Copyright (C) 2016 OpenWrt -# Author: Mirko Vogt +# Copyright (C) 2020 OpenWrt +# Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qt5tools -PKG_VERSION:=5.9.1 +PKG_VERSION:=5.15.0 PKG_RELEASE:=1 -PKG_HASH:=c4eb56cf24a75661b8317b566be37396c90357b4f6730ef12b8c97a7079ca0e8, +PKG_HASH:=ddbcb49aab3a2e3672582c6e2e7bec0058feff790f67472343c79e2895e0e437 -PKG_SYS_NAME:=qttools-opensource-src-$(PKG_VERSION) +PKG_SYS_NAME:=qttools-everywhere-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz -PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_HOST_ONLY:=1 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) @@ -35,8 +35,8 @@ define Package/qt5tools SUBMENU:=Frameworks and Toolkits TITLE:=qt5tools URL:=http://qt.io - MAINTAINER:=Mirko Vogt - DEPENDS:=+qt5base + MAINTAINER:=Mirko Vogt + DEPENDS:=+qt5base-core BUILDONLY:=1 endef @@ -54,6 +54,12 @@ define Host/Install $(CP) \ $(HOST_INSTALL_DIR)/bin/* \ $(STAGING_DIR_HOST)/bin/ + + ln -sf $(STAGING_DIR_HOST)/bin/lrelease \ + $(STAGING_DIR)/host/bin/ + ln -sf $(STAGING_DIR_HOST)/bin/lupdate \ + $(STAGING_DIR)/host/bin/ + endef $(eval $(call BuildPackage,qt5tools)) diff --git a/frameworks/qt5tools/patches/000-enable-kmap2qmap.patch b/frameworks/qt5tools/patches/000-enable-kmap2qmap.patch index 2fdc383..5181985 100644 --- a/frameworks/qt5tools/patches/000-enable-kmap2qmap.patch +++ b/frameworks/qt5tools/patches/000-enable-kmap2qmap.patch @@ -1,12 +1,14 @@ ---- qttools-opensource-src-5.8.0.orig/src/src.pro 2017-01-02 07:50:13.000000000 +0100 -+++ qttools-opensource-src-5.8.0/src/src.pro 2017-02-21 02:58:04.974231681 +0100 -@@ -14,7 +14,8 @@ +diff --git a/src/src.pro b/src/src.pro +index 5c256ea..3c4012a 100644 +--- a/src/src.pro ++++ b/src/src.pro +@@ -17,7 +17,8 @@ qtHaveModule(widgets) { + } SUBDIRS += linguist \ - qdoc \ - qtattributionsscanner + qtattributionsscanner \ + kmap2qmap - !android|android_app: SUBDIRS += qtplugininfo - + qtConfig(library) { + !android|android_app: SUBDIRS += qtplugininfo diff --git a/frameworks/qt5tools/patches/001-add-further-keys.patch b/frameworks/qt5tools/patches/001-add-further-keys.patch index cc607e5..64446fb 100644 --- a/frameworks/qt5tools/patches/001-add-further-keys.patch +++ b/frameworks/qt5tools/patches/001-add-further-keys.patch @@ -23,14 +23,3 @@ diff -ruN qttools-opensource-src-5.8.0.orig/src/kmap2qmap/main.cpp qttools-opens { "KP_0", Qt::Key_0 | Qt::KeypadModifier }, { "KP_1", Qt::Key_1 | Qt::KeypadModifier }, -@@ -696,8 +704,8 @@ - if (kcpos >= 0 && kcpos < (tokens.count()-3) && tokens[kcpos+2] == "=") { - quint16 keycode = tokens[kcpos+1].toInt(); - -- if (keycode <= 0 || keycode > 0x1ff /* KEY_MAX */) { -- parseWarning("keycode out of range [0..0x1ff]"); -+ if (keycode <= 0 || keycode > 0x2ff /* KEY_MAX */) { -+ parseWarning("keycode out of range [0..0x2ff]"); - break; - } - diff --git a/frameworks/qt5translations/Makefile b/frameworks/qt5translations/Makefile new file mode 100644 index 0000000..c0e9eba --- /dev/null +++ b/frameworks/qt5translations/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (C) 2020 OpenWrt +# Author: Mirko Vogt +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=qt5translations +PKG_VERSION:=5.15.0 +PKG_RELEASE:=1 +PKG_HASH:=45c43268d9df50784d4d8ca345fce9288a1055fd074ac0ef508097f7aeba22fe + +PKG_SYS_NAME:=qttranslations-everywhere-src-$(PKG_VERSION) +PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz +PKG_SOURCE_URL:=https://download.qt.io/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules + +PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) +PKG_BUILD_PARALLEL:=1 +PKG_INSTALL:=1 +PKG_BUILD_DEPENDS:=qt5tools/host + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk +-include $(STAGING_DIR)/host/mk/qmake.mk + +define Package/qt5translations + SECTION:=video-frameworks + CATEGORY:=Video + SUBMENU:=Frameworks and Toolkits + TITLE:=qt5translations + URL:=http://qt.io + MAINTAINER:=Mirko Vogt +endef + +define Package/qt5translations/install + $(call Build/Install/Translations,$(1),*) +endef + +$(eval $(call BuildPackage,qt5translations)) -- 2.30.2