level Qt up to version 5.7.0 + several bug fixes

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.
This commit is contained in:
Mirko Vogt
2016-08-27 21:41:07 +02:00
committed by Mirko Vogt
parent 5c4360ede2
commit d4d2a3d5ea
4 changed files with 106 additions and 93 deletions

View 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))

View 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

View File

@@ -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)

View 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