level Qt up to version 5.7.0 + several bug fixes
authorMirko Vogt <mirko-openwrt@nanl.de>
Sat, 27 Aug 2016 19:41:07 +0000 (21:41 +0200)
committerMirko Vogt <mirko@mai>
Mon, 29 Aug 2016 18:04:29 +0000 (20:04 +0200)
Qt5-GUI now gets compiled with support for OpenGL,
however only links against GL stubs provided by the
2d software renderer.
That way we can decide at runtime, whether we want to
use GL or not - with almost no overhead, if not.
This also enables QtQuick2 being built correctly,
which depends on GL support and provides the
possibility of using QtQuick2 with the 2d-sw-renderer
even on hardware without native support for GL.

frameworks/qt5base/Makefile
frameworks/qt5base/files/qmake.mk
frameworks/qt5base/patches/002-musl.patch [deleted file]
frameworks/qt5base/patches/011-use-posix-iconv.patch

index c0fae4ebd7be003a27c5b90185c76e2062e42ac0..7b6abdf53cc617bb38ef0abd8fe0d735050f375e 100644 (file)
@@ -1,20 +1,20 @@
 #
-# Copyright (C) 2015 OpenWrt.org
-# Author: Mirko Vogt <mirko@openwrt.org>
+# Copyright (C) 2016 OpenWrt.org
+# Author: Mirko Vogt <mirko-openwrt@nanl.de>
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 #
 
 # TODO / known bugs:
-# - only framebuffer (linuxfb) support for now, XBC/DirectFB to come - thus no GL thus no qtquick2 / QML2, as it has a hard dependency on GL
-# - host_build functionality seems to be broken - qmake doesn't switch to the host toolchain (linux-g++) when host_build gets invoked
+# - plugins don't work when sstrip is used for stripping
+# - no X11/wayland/xcb/kms support so far - primary target is linuxfb
 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qt5base
-PKG_VERSION:=5.4.2
+PKG_VERSION:=5.7.0
 PKG_RELEASE:=1
-PKG_MD5SUM:=67a95eec79ffc4a14f516ad6f3d24c96
+PKG_MD5SUM:=184f9460b40752d71b15b827260580c2
 
 PKG_SYS_NAME:=qtbase-opensource-src-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz
@@ -31,13 +31,17 @@ include $(INCLUDE_DIR)/nls.mk
 include ./files/qmake.mk
 
 PKG_CONFIG_DEPENDS:= \
-       CONFIG_PACKAGE_qt5base-plugin-sqldrivers-sqlite \
        CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg \
+       CONFIG_PACKAGE_qt5base-plugin-imageformats-png \
        CONFIG_PACKAGE_qt5base-network \
        CONFIG_PACKAGE_qt5base-gui \
-       CONFIG_PACKAGE_qt5base-plugin-imageformats-gif \
+       CONFIG_PACKAGE_qt5base-gl \
+       CONFIG_PACKAGE_qt5base-widgets \
+       CONFIG_PACKAGE_qt5base-examples \
+       CONFIG_PACKAGE_qt5base-plugin-platforms-minimal \
        CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb \
-       CONFIG_PACKAGE_qt5base-plugin-platforms-minimal
+#      CONFIG_PACKAGE_qt5base-plugin-platforms-eglfs \
+#      CONFIG_PACKAGE_qt5base-plugin-platforms-minimalegl \
 
 # Do not use sstrip for QT5. When sstrip is used the QT5 plugin loading does
 # not work, because of QT''s internal elf parser, see
@@ -60,7 +64,7 @@ define Package/qt5base/Default
   CATEGORY:=Video
   SUBMENU:=Frameworks and Toolkits
   TITLE:=Qt5base
-  DEPENDS:=qt5base
+  DEPENDS+=qt5base
   URL:=http://qt.io
   MAINTAINER:=Mirko Vogt <mirko@openwrt.org>
 endef
@@ -77,16 +81,22 @@ define Package/qt5base-concurrent
   DEPENDS+=+qt5base-core
 endef
 
+define Package/qt5base-gl
+  $(call Package/qt5base/Default)
+  TITLE+=gl
+  DEPENDS+=+qt5base-core +qt5base-gui +qt5base-widgets
+endef
+
 define Package/qt5base-core
   $(call Package/qt5base/Default)
   TITLE+=core
-  DEPENDS+=+libpthread +zlib +libpcre16 +libstdcpp +librt $(ICONV_DEPENDS)
+  DEPENDS+=+libpthread +zlib +libpcre16 +libstdcpp +librt +libdouble-conversion $(ICONV_DEPENDS) #+icu
 endef
 
 define Package/qt5base-gui
   $(call Package/qt5base/Default)
   TITLE+=gui
-  DEPENDS+=+qt5base-core +libpng
+  DEPENDS+=+qt5base-core +qt5quick2-2d-sw-renderer-GLstubs +libpng +fontconfig +libfreetype +libudev
 endef
 
 define Package/qt5base-network
@@ -169,11 +179,11 @@ endef
 
 ####### imageformats
 
-define Package/qt5base-plugin-imageformats-gif
-  $(call Package/qt5base/Default)
-TITLE+=imageformat gif (plugin)
-  DEPENDS+=+qt5base-core +qt5base-gui
-endef
+#define Package/qt5base-plugin-imageformats-gif
+#  $(call Package/qt5base/Default)
+#TITLE+=imageformat gif (plugin)
+#  DEPENDS+=+qt5base-core +qt5base-gui
+#endef
 
 define Package/qt5base-plugin-imageformats-ico
   $(call Package/qt5base/Default)
@@ -189,6 +199,18 @@ endef
 
 ####### platforms
 
+#define Package/qt5base-plugin-platforms-eglfs
+#  $(call Package/qt5base/Default)
+#  TITLE+=platform eglfs (plugin)
+#  DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig
+#endef
+
+#define Package/qt5base-plugin-platforms-minimalegl
+#  $(call Package/qt5base/Default)
+#  TITLE+=platform minimalegl (plugin)
+#  DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig
+#endef
+
 define Package/qt5base-plugin-platforms-linuxfb
   $(call Package/qt5base/Default)
   TITLE+=platform linuxfb (plugin)
@@ -209,11 +231,11 @@ endef
 
 ###### sql
 
-define Package/qt5base-plugin-sqldrivers-sqlite
-  $(call Package/qt5base/Default)
-  TITLE+=sqldriver sqlite (plugin)
-  DEPENDS+=+qt5base-core +qt5base-sql +libsqlite3
-endef
+#define Package/qt5base-plugin-sqldrivers-sqlite
+#  $(call Package/qt5base/Default)
+#  TITLE+=sqldriver sqlite (plugin)
+#  DEPENDS+=+qt5base-core +qt5base-sql +libsqlite3
+#endef
 
 define Package/qt5base-examples
   $(call Package/qt5base/Default)
@@ -226,7 +248,8 @@ define Package/qt5base-examples
                +qt5base-sql \
                +qt5base-xml \
                +qt5base-printSupport \
-               +qt5base-concurrent 
+               +qt5base-concurrent \
+               +qt5base-gl
 endef
 
 define Build/Prepare
@@ -236,6 +259,10 @@ define Build/Prepare
                $(PKG_BUILD_DIR)/mkspecs/
 endef
 
+TARGET_CFLAGS += \
+         -I$(STAGING_DIR)/usr/include/freetype2 \
+         -I$(STAGING_DIR)/usr/include/libdrm
+
 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.),
@@ -249,6 +276,7 @@ define Build/Configure
                        -prefix $(QT_INSTALL_PREFIX) \
                        -extprefix $(QT_EXTPREFIX) \
                        -hostprefix $(QT_HOST_PREFIX) \
+                       -no-gcc-sysroot \
                        -bindir $(QT_INSTALL_BINS) \
                        -headerdir $(QT_INSTALL_HEADERS) \
                        -libdir $(QT_INSTALL_LIBS) \
@@ -268,41 +296,46 @@ define Build/Configure
                        -hostdatadir $(QT_HOST_DATA) \
                        -v \
                        -release \
+                       -no-optimized-tools \
                        -opensource \
                        -confirm-license \
-                       -c++11 \
                        -shared \
                        -largefile \
                        -accessibility \
-                       $(if $(CONFIG_PACKAGE_qt5base-plugin-sqldrivers-sqlite),-system-sqlite,-no-sql-sqlite) \
                        -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 \
+                       -system-sqlite \
                        -no-qml-debug \
-                       -no-nis \
-                       -no-sse2 \
                        -no-sse3 \
                        -no-ssse3 \
                        -no-sse4.1 \
                        -no-sse4.2 \
                        -no-avx \
                        -no-avx2 \
-                       $(if $(findstring -mdsp,$(TARGET_CFLAGS)),,-no-mips_dsp)\
-                       $(if $(findstring -mdspr2,$(TARGET_CFLAGS)),,-no-mips_dspr2)\
+                       -no-avx512 \
+                       $(if $(findstring -mdsp,$(TARGET_CFLAGS)),,-no-mips_dsp) \
+                       $(if $(findstring -mdspr2,$(TARGET_CFLAGS)),,-no-mips_dspr2) \
+                       -no-mips_dspr2 \
                        -force-pkg-config \
                        -system-zlib \
-                       -mtdev \
+                       -no-mtdev \
                        -no-journald \
+                       -syslog \
+                       -no-gif \
                        $(if $(CONFIG_PACKAGE_qt5base-gui),-system-libpng,-no-libpng) \
                        $(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg),-system-libjpeg,-no-libjpeg) \
+                       -system-doubleconversion \
                        -system-freetype \
                        -no-harfbuzz \
                        $(if $(CONFIG_PACKAGE_qt5base-network),-openssl-linked,-no-openssl) \
+                       -no-libproxy \
                        -system-pcre \
                        -system-xcb \
                        -system-xkbcommon \
@@ -311,16 +344,18 @@ define Build/Configure
                        -no-glib \
                        -no-pulseaudio \
                        -no-alsa \
-                       -no-gtkstyle \
+                       -no-gtk \
+                       -no-optimized-qmake \
                        -nomake tools \
+                       -make examples \
                        $(if $(CONFIG_PACKAGE_qt5base-examples),-make examples,-nomake examples) \
                        $(if $(CONFIG_PACKAGE_qt5base-gui),-gui,-no-gui) \
-                       $(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-gif),,-no-gif) \
                        $(if $(CONFIG_PACKAGE_qt5base-widgets),-widgets,-no-widgets) \
-                       -no-optimized-qmake \
+                       -no-nis \
                        -no-cups \
                        $(if $(CONFIG_BUILD_NLS),-iconv,-no-iconv) \
                        -evdev \
+                       -no-tslib \
                        -no-icu \
                        -fontconfig \
                        -no-strip \
@@ -330,14 +365,18 @@ define Build/Configure
                        -no-use-gold-linker \
                        -no-xcb \
                        -no-eglfs \
+                       -no-kms \
+                       -no-gbm \
                        -no-directfb \
                        $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb),-linuxfb,-no-linuxfb) \
-                       -no-kms \
+                       -no-mirclient \
+                       -opengl \
                        $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-minimal),,-qpa minimal) \
-                       -xplatform linux-openwrt-g++ \
-                       -no-opengl \
-                       -no-system-proxies \
+                       -no-libinput \
+                       -no-gstreamer \
+                       -system-proxies \
                        -no-warnings-are-errors \
+                       -xplatform linux-openwrt-g++ \
        )
 endef
 
@@ -362,6 +401,10 @@ define Package/qt5base-core/install
        $(call Build/Install/Libs,$(1),libQt5Core)
 endef
 
+define Package/qt5base-gl/install
+       $(call Build/Install/Libs,$(1),libQt5OpenGL)
+endef
+
 define Package/qt5base-gui/install
        $(call Build/Install/Libs,$(1),libQt5Gui)
 endef
@@ -410,9 +453,9 @@ define Package/qt5base-plugin-input-evdevtouch/install
        $(call Build/Install/Plugins,$(1),generic,libqevdevtouchplugin)
 endef
 
-define Package/qt5base-plugin-imageformats-gif/install
-       $(call Build/Install/Plugins,$(1),imageformats,libqgif)
-endef
+#define Package/qt5base-plugin-imageformats-gif/install
+#      $(call Build/Install/Plugins,$(1),imageformats,libqgif)
+#endef
 
 define Package/qt5base-plugin-imageformats-ico/install
        $(call Build/Install/Plugins,$(1),imageformats,libqico)
@@ -426,6 +469,14 @@ define Package/qt5base-plugin-platforms-linuxfb/install
        $(call Build/Install/Plugins,$(1),platforms,libqlinuxfb)
 endef
 
+#define Package/qt5base-plugin-platforms-eglfs/install
+#      $(call Build/Install/Plugins,$(1),platforms,libqeglfs)
+#endef
+
+#define Package/qt5base-plugin-platforms-minimalegl/install
+#      $(call Build/Install/Plugins,$(1),platforms,libqminimalegl)
+#endef
+
 define Package/qt5base-plugin-platforms-minimal/install
        $(call Build/Install/Plugins,$(1),platforms,libqminimal)
 endef
@@ -434,9 +485,9 @@ define Package/qt5base-plugin-platforms-offscreen/install
        $(call Build/Install/Plugins,$(1),platforms,libqoffscreen)
 endef
 
-define Package/qt5base-plugin-sqldrivers-sqlite/install
-       $(call Build/Install/Plugins,$(1),sqldrivers,libqsqlite)
-endef
+#define Package/qt5base-plugin-sqldrivers-sqlite/install
+#      $(call Build/Install/Plugins,$(1),sqldrivers,libqsqlite)
+#endef
 
 define Package/qt5base-examples/install
        $(call Build/Install/Examples,$(1))
@@ -446,6 +497,7 @@ $(eval $(call BuildPackage,qt5base))
 $(eval $(call BuildPackage,qt5base-concurrent))
 $(eval $(call BuildPackage,qt5base-core))
 $(eval $(call BuildPackage,qt5base-gui))
+$(eval $(call BuildPackage,qt5base-gl))
 $(eval $(call BuildPackage,qt5base-network))
 $(eval $(call BuildPackage,qt5base-printSupport))
 $(eval $(call BuildPackage,qt5base-sql))
@@ -457,11 +509,13 @@ $(eval $(call BuildPackage,qt5base-plugin-input-evdevkeyboard))
 $(eval $(call BuildPackage,qt5base-plugin-input-evdevmouse))
 $(eval $(call BuildPackage,qt5base-plugin-input-evdevtablet))
 $(eval $(call BuildPackage,qt5base-plugin-input-evdevtouch))
-$(eval $(call BuildPackage,qt5base-plugin-imageformats-gif))
+#$(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-platforms-linuxfb))
+#$(eval $(call BuildPackage,qt5base-plugin-platforms-eglfs))
+#$(eval $(call BuildPackage,qt5base-plugin-platforms-minimalegl))
 $(eval $(call BuildPackage,qt5base-plugin-platforms-minimal))
 $(eval $(call BuildPackage,qt5base-plugin-platforms-offscreen))
-$(eval $(call BuildPackage,qt5base-plugin-sqldrivers-sqlite))
+#$(eval $(call BuildPackage,qt5base-plugin-sqldrivers-sqlite))
 $(eval $(call BuildPackage,qt5base-examples))
index 2115ef45a4e198044c335da86f77916b4bd99481..61d69208e7b6f66c593fb12561f930d22d7f1ba0 100644 (file)
@@ -74,8 +74,8 @@ define Build/Configure/Default
        TARGET_CXXFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CXXFLAGS)" \
        TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \
        qmake \
-               -o $(PKG_BUILD_DIR)/$(2)/Makefile \
-               $(PKG_BUILD_DIR)/$(2)/$(if $(1),$(1),$(PKG_NAME)).pro
+               -o $(PKG_BUILD_DIR)/$(MAKE_PATH)/Makefile \
+               $(PKG_BUILD_DIR)/$(MAKE_PATH)/$(if $(1),$(1),$(PKG_NAME)).pro
 endef
 
 # we need to pass everything to $(MAKE) as well, as Makefiles may invoke qmake once again for creating further Makefiles
@@ -138,7 +138,7 @@ define Build/Install/Examples
                $(PKG_INSTALL_DIR)/$(QT_INSTALL_EXAMPLES)/* \
                $(1)/$(QT_INSTALL_EXAMPLES)/
 
-       $(FIND) $(1)/usr/share/qt5/examples/ \
+       $(FIND) $(1)/$(QT_INSTALL_EXAMPLES) \
                -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.pro' -o -name '*.pri' \) | \
                $(XARGS) $(RM) -vf
 endef
diff --git a/frameworks/qt5base/patches/002-musl.patch b/frameworks/qt5base/patches/002-musl.patch
deleted file mode 100644 (file)
index 2f5fe45..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-From 8f09897de948cea8861ca95e182f442cf15a339e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 8 Jun 2015 13:59:25 -0700
-Subject: [PATCH] linux-oe-g++: Invert conditional for defining QT_SOCKLEN_T
-
-This helps to make sure that QT_SOCKLEN_T is defined to be 'int'
-only when its glibc < 2 and not also for the libraries which may define
-it as per standards but are not glibc, e.g. musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- mkspecs/linux-oe-g++/qplatformdefs.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/mkspecs/linux-g++/qplatformdefs.h
-+++ b/mkspecs/linux-g++/qplatformdefs.h
-@@ -78,10 +78,10 @@
- #undef QT_SOCKLEN_T
--#if defined(__GLIBC__) && (__GLIBC__ >= 2)
--#define QT_SOCKLEN_T            socklen_t
--#else
-+#if defined(__GLIBC__) && (__GLIBC__ < 2)
- #define QT_SOCKLEN_T            int
-+#else
-+#define QT_SOCKLEN_T            socklen_t
- #endif
- #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
index 23e4f85f2e68d5942fc5bde76f3e3164dfda837f..f58b06f4fd8071610608d016d1f1043554dc39ab 100644 (file)
@@ -1,17 +1,6 @@
 --- a/config.tests/unix/iconv/iconv.pro
 +++ b/config.tests/unix/iconv/iconv.pro
-@@ -1,3 +1,3 @@
- SOURCES = iconv.cpp
- CONFIG -= qt dylib
--mac|mingw|qnx:LIBS += -liconv
-+mac|mingw|qnx|linux:LIBS += -liconv
---- a/src/corelib/codecs/codecs.pri
-+++ b/src/corelib/codecs/codecs.pri
-@@ -44,6 +44,7 @@ contains(QT_CONFIG,icu) {
-             contains(QT_CONFIG,iconv) {
-                     HEADERS += codecs/qiconvcodec_p.h
-                     SOURCES += codecs/qiconvcodec.cpp
-+                    LIBS_PRIVATE *= -liconv
-             } else:contains(QT_CONFIG,gnu-libiconv) {
-                     HEADERS += codecs/qiconvcodec_p.h
-                     SOURCES += codecs/qiconvcodec.cpp
+@@ -1,2 +1,2 @@
+ CONFIG -= qt dylib       
+-mac|mingw|qnx|haiku:LIBS += -liconv
++mac|mingw|qnx|haiku|linux:LIBS += -liconv