- Update to Qt 5.7.0
This commit is contained in:
parent
6c9f815259
commit
4d72c83364
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
||||
/sources
|
||||
/qtbase-opensource-src-5.6.0.tar.xz
|
||||
/qtbase-opensource-src-5.6.1.tar.xz
|
||||
/qtbase-opensource-src-5.7.0.tar.xz
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 46f1c4c86bbfe7b6917907700bec998626ad4a8b Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||
Date: Wed, 11 May 2016 18:42:24 +0300
|
||||
Subject: [PATCH 001/178] xcb: Properly interpret data.l[0] field of XdndStatus
|
||||
message
|
||||
|
||||
The standard https://freedesktop.org/wiki/Specifications/XDND/
|
||||
states: "In order for the proxy window to behave correctly, the
|
||||
appropriate field of the client messages, window or data.l[0],
|
||||
must contain the ID of the window in which the mouse is located,
|
||||
not the proxy window that is receiving the messages."
|
||||
|
||||
So compare it with the current target window instead of the
|
||||
current proxy window.
|
||||
|
||||
Change-Id: Ie31fd3aeadebcf5a9be7b9a9194f35a4ec7bdebb
|
||||
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbdrag.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
|
||||
index 6fa5dfa..f93e420 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
|
||||
@@ -829,7 +829,7 @@ void QXcbDrag::handle_xdnd_status(const xcb_client_message_event_t *event)
|
||||
DEBUG("xdndHandleStatus");
|
||||
waiting_for_status = false;
|
||||
// ignore late status messages
|
||||
- if (event->data.data32[0] && event->data.data32[0] != current_proxy_target)
|
||||
+ if (event->data.data32[0] && event->data.data32[0] != current_target)
|
||||
return;
|
||||
|
||||
const bool dropPossible = event->data.data32[1];
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,31 +0,0 @@
|
||||
From 2852a8b87e3a8ed95b72d26b0e180b7fd4491cf3 Mon Sep 17 00:00:00 2001
|
||||
From: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
|
||||
Date: Fri, 26 Feb 2016 11:53:01 -0800
|
||||
Subject: [PATCH 011/178] XCB: Auto-detect xcb-glx also with xcb-qt
|
||||
|
||||
Task-number: QTBUG-43784
|
||||
Change-Id: Iaa0388e34900f6241db8cd864caed4fb6fc32819
|
||||
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
||||
---
|
||||
configure | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index ce5b9c2..a481981 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -5555,6 +5555,11 @@ if [ "$CFG_XCB" != "no" ]; then
|
||||
|
||||
if [ "$CFG_XCB" = "qt" ]; then
|
||||
QT_CONFIG="$QT_CONFIG xcb-qt"
|
||||
+
|
||||
+ if compileTest qpa/xcb-glx "xcb-glx" $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then
|
||||
+ CFG_XCB_GLX=yes
|
||||
+ QT_CONFIG="$QT_CONFIG xcb-glx"
|
||||
+ fi
|
||||
else
|
||||
CFG_XCB="system"
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xcb >= 1.5" 2>/dev/null; then
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,78 +0,0 @@
|
||||
From 1108291e1a2e7de23440c2b36b2fd31010ae3f51 Mon Sep 17 00:00:00 2001
|
||||
From: Urs Fleisch <ufleisch@users.sourceforge.net>
|
||||
Date: Tue, 3 May 2016 20:01:01 +0200
|
||||
Subject: [PATCH 032/178] xcb: Fix drop of text/uri-list and text/html.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When dropping URLs from Firefox or Chrome, the contents are encoded as
|
||||
UTF16, but not correctly decoded. Moreover, the special handling of
|
||||
"text/x-moz-url" drops does not work because this format is converted to
|
||||
"text/uri-list" before. This fixes the handling for URL list and also
|
||||
for UTF16 "text/html".
|
||||
|
||||
Task-number: QTBUG-47981
|
||||
Change-Id: I1153f21ede07b2bfe4d104e0fe8bc8487ec5c165
|
||||
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbmime.cpp | 42 +++++++++++++++++++++++++---------
|
||||
1 file changed, 31 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp
|
||||
index eeac561..cef2210 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbmime.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbmime.cpp
|
||||
@@ -182,17 +182,37 @@ QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a,
|
||||
a == connection->atom(QXcbAtom::TEXT))
|
||||
return QString::fromLatin1(data);
|
||||
}
|
||||
-
|
||||
- // special case for uri types
|
||||
- if (format == QLatin1String("text/uri-list")) {
|
||||
- if (atomName == QLatin1String("text/x-moz-url")) {
|
||||
- // we expect this as utf16 <url><space><title>
|
||||
- // the first part is a url that should only contain ascci char
|
||||
- // so it should be safe to check that the second char is 0
|
||||
- // to verify that it is utf16
|
||||
- if (data.size() > 1 && data.at(1) == 0)
|
||||
- return QString::fromRawData((const QChar *)data.constData(),
|
||||
- data.size() / 2).split(QLatin1Char('\n')).first().toLatin1();
|
||||
+ // If data contains UTF16 text, convert it to a string.
|
||||
+ // Firefox uses UTF16 without BOM for text/x-moz-url, "text/html",
|
||||
+ // Google Chrome uses UTF16 without BOM for "text/x-moz-url",
|
||||
+ // UTF16 with BOM for "text/html".
|
||||
+ if ((format == QLatin1String("text/html") || format == QLatin1String("text/uri-list"))
|
||||
+ && data.size() > 1) {
|
||||
+ const quint8 byte0 = data.at(0);
|
||||
+ const quint8 byte1 = data.at(1);
|
||||
+ if ((byte0 == 0xff && byte1 == 0xfe) || (byte0 == 0xfe && byte1 == 0xff)
|
||||
+ || (byte0 != 0 && byte1 == 0) || (byte0 == 0 && byte1 != 0)) {
|
||||
+ const QString str = QString::fromUtf16(
|
||||
+ reinterpret_cast<const ushort *>(data.constData()), data.size() / 2);
|
||||
+ if (!str.isNull()) {
|
||||
+ if (format == QLatin1String("text/uri-list")) {
|
||||
+ const QStringList urls = str.split(QLatin1Char('\n'));
|
||||
+ QList<QVariant> list;
|
||||
+ foreach (const QString &s, urls) {
|
||||
+ const QUrl url(s.trimmed());
|
||||
+ if (url.isValid())
|
||||
+ list.append(url);
|
||||
+ }
|
||||
+ // We expect "text/x-moz-url" as <url><space><title>.
|
||||
+ // The atomName variable is not used because mimeAtomToString()
|
||||
+ // converts "text/x-moz-url" to "text/uri-list".
|
||||
+ if (!list.isEmpty() && connection->atomName(a) == "text/x-moz-url")
|
||||
+ return list.first();
|
||||
+ return list;
|
||||
+ } else {
|
||||
+ return str;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,58 +0,0 @@
|
||||
From f162e29acca99aaab173fb323d112aad9ec6c2b5 Mon Sep 17 00:00:00 2001
|
||||
From: Urs Fleisch <ufleisch@users.sourceforge.net>
|
||||
Date: Wed, 4 May 2016 19:47:16 +0200
|
||||
Subject: [PATCH 033/178] xcb: Fix dropping URL on Firefox window.
|
||||
|
||||
When a URL is dropped on a Firefox window, the "text/x-moz-url" data
|
||||
takes precedence over the "text/uri-list". The "text/x-moz-url" is
|
||||
interpreted as UTF16, however, the data from Qt 5 applications is not
|
||||
in the correct format. The code to create correct UTF16 data exists,
|
||||
but it is not called for two reasons: The atomName will never be
|
||||
"text/x-moz-url" because it is changed to "text/uri-list" by
|
||||
mimeAtomToString() and the InternalMimeData::hasFormatHelper() case is
|
||||
already handled above and the else part will never be considered.
|
||||
This patch fixes the check and brings it into the right order.
|
||||
|
||||
Task-number: QTBUG-49947
|
||||
Change-Id: I5ebd31914cc6c1417c513c1ff09e0e858a16915d
|
||||
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbmime.cpp | 19 ++++++++++---------
|
||||
1 file changed, 10 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp
|
||||
index cef2210..7fea068 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbmime.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbmime.cpp
|
||||
@@ -111,17 +111,18 @@ bool QXcbMime::mimeDataForAtom(QXcbConnection *connection, xcb_atom_t a, QMimeDa
|
||||
QString atomName = mimeAtomToString(connection, a);
|
||||
if (QInternalMimeData::hasFormatHelper(atomName, mimeData)) {
|
||||
*data = QInternalMimeData::renderDataHelper(atomName, mimeData);
|
||||
- if (atomName == QLatin1String("application/x-color"))
|
||||
+ // mimeAtomToString() converts "text/x-moz-url" to "text/uri-list",
|
||||
+ // so QXcbConnection::atomName() has to be used.
|
||||
+ if (atomName == QLatin1String("text/uri-list")
|
||||
+ && connection->atomName(a) == "text/x-moz-url") {
|
||||
+ const QByteArray uri = data->split('\n').first();
|
||||
+ QString mozUri = QString::fromLatin1(uri, uri.size());
|
||||
+ mozUri += QLatin1Char('\n');
|
||||
+ *data = QByteArray(reinterpret_cast<const char *>(mozUri.utf16()),
|
||||
+ mozUri.length() * 2);
|
||||
+ } else if (atomName == QLatin1String("application/x-color"))
|
||||
*dataFormat = 16;
|
||||
ret = true;
|
||||
- } else if (atomName == QLatin1String("text/x-moz-url") &&
|
||||
- QInternalMimeData::hasFormatHelper(QLatin1String("text/uri-list"), mimeData)) {
|
||||
- QByteArray uri = QInternalMimeData::renderDataHelper(
|
||||
- QLatin1String("text/uri-list"), mimeData).split('\n').first();
|
||||
- QString mozUri = QString::fromLatin1(uri, uri.size());
|
||||
- mozUri += QLatin1Char('\n');
|
||||
- *data = QByteArray(reinterpret_cast<const char *>(mozUri.utf16()), mozUri.length() * 2);
|
||||
- ret = true;
|
||||
} else if ((a == XCB_ATOM_PIXMAP || a == XCB_ATOM_BITMAP) && mimeData->hasImage()) {
|
||||
ret = true;
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 76810e1495b65a09e9abd6164639e0caf34d61b8 Mon Sep 17 00:00:00 2001
|
||||
From: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
||||
Date: Fri, 20 May 2016 14:52:18 +0200
|
||||
Subject: [PATCH 148/178] xcb: Disable GLX pbuffers with Chromium in VMs
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Change-Id: I474e4a4ce424a92b46381eb26aeda811ed059819
|
||||
Task-number: QTCREATORBUG-16252
|
||||
Task-number: QTCREATORBUG-14937
|
||||
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
|
||||
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
|
||||
---
|
||||
.../platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
|
||||
index a3a8aa2..55d0ff3 100644
|
||||
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
|
||||
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
|
||||
@@ -201,8 +201,10 @@ QPlatformOffscreenSurface *QXcbGlxIntegration::createPlatformOffscreenSurface(QO
|
||||
display = static_cast<Display *>(m_connection->xlib_display());
|
||||
#endif
|
||||
const char *glxvendor = glXGetClientString(display, GLX_VENDOR);
|
||||
- if (glxvendor && !strcmp(glxvendor, "ATI"))
|
||||
- glxPbufferUsable = false;
|
||||
+ if (glxvendor) {
|
||||
+ if (!strcmp(glxvendor, "ATI") || !strcmp(glxvendor, "Chromium"))
|
||||
+ glxPbufferUsable = false;
|
||||
+ }
|
||||
}
|
||||
if (glxPbufferUsable)
|
||||
return new QGLXPbuffer(surface);
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,64 +0,0 @@
|
||||
From 4762fabce16c611f12542a48b0dd31b3cec8e530 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <spaz16@wp.pl>
|
||||
Date: Thu, 14 Apr 2016 13:20:23 +0200
|
||||
Subject: [PATCH 155/178] xcb: Fix transient parent and "Qt::Window" flag
|
||||
|
||||
Don't set transient parent property when Qt::Window flag is set.
|
||||
Delete transient parent property if a window doesn't have a transient parent.
|
||||
Force setting standard window flags for Qt::Window only if there are no other
|
||||
flags.
|
||||
|
||||
Amends 98c10a02c5b77e023471ad6993dc66b013889cfb
|
||||
|
||||
Task-number: QTBUG-52550
|
||||
Change-Id: I68ee715b632487e9dd0e7ffbbfc0c2cdd0f0e151
|
||||
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbwindow.cpp | 16 ++++++++++------
|
||||
1 file changed, 10 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
index 429ba8d..0c2f0d7 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
@@ -821,9 +821,9 @@ void QXcbWindow::show()
|
||||
propagateSizeHints();
|
||||
|
||||
// update WM_TRANSIENT_FOR
|
||||
- const QWindow *tp = window()->transientParent();
|
||||
- if (isTransient(window()) || tp != 0) {
|
||||
- xcb_window_t transientXcbParent = 0;
|
||||
+ xcb_window_t transientXcbParent = 0;
|
||||
+ if (isTransient(window())) {
|
||||
+ const QWindow *tp = window()->transientParent();
|
||||
if (tp && tp->handle())
|
||||
transientXcbParent = static_cast<const QXcbWindow *>(tp->handle())->winId();
|
||||
// Default to client leader if there is no transient parent, else modal dialogs can
|
||||
@@ -836,6 +836,8 @@ void QXcbWindow::show()
|
||||
1, &transientXcbParent));
|
||||
}
|
||||
}
|
||||
+ if (!transientXcbParent)
|
||||
+ Q_XCB_CALL(xcb_delete_property(xcb_connection(), m_window, XCB_ATOM_WM_TRANSIENT_FOR));
|
||||
|
||||
// update _MOTIF_WM_HINTS
|
||||
updateMotifWmHintsBeforeMap();
|
||||
@@ -1195,9 +1197,11 @@ void QXcbWindow::setMotifWindowFlags(Qt::WindowFlags flags)
|
||||
mwmhints.flags |= MWM_HINTS_DECORATIONS;
|
||||
|
||||
bool customize = flags & Qt::CustomizeWindowHint;
|
||||
- if (type == Qt::Window && !customize)
|
||||
- flags |= Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint;
|
||||
-
|
||||
+ if (type == Qt::Window && !customize) {
|
||||
+ const Qt::WindowFlags defaultFlags = Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint;
|
||||
+ if (!(flags & defaultFlags))
|
||||
+ flags |= defaultFlags;
|
||||
+ }
|
||||
if (!(flags & Qt::FramelessWindowHint) && !(customize && !(flags & Qt::WindowTitleHint))) {
|
||||
mwmhints.decorations |= MWM_DECOR_BORDER;
|
||||
mwmhints.decorations |= MWM_DECOR_RESIZEH;
|
||||
--
|
||||
2.7.4
|
||||
|
35
macros.qt5
35
macros.qt5
@ -1,35 +0,0 @@
|
||||
%_qt5 @@NAME@@
|
||||
%_qt5_epoch @@EPOCH@@
|
||||
%_qt5_version @@VERSION@@
|
||||
%_qt5_evr @@EVR@@
|
||||
%_qt5_prefix %{_libdir}/qt5
|
||||
%_qt5_archdatadir %{_qt5_prefix}
|
||||
%_qt5_bindir %{_qt5_prefix}/bin
|
||||
%_qt5_datadir %{_datadir}/qt5
|
||||
%_qt5_docdir %{_docdir}/qt5
|
||||
%_qt5_examplesdir %{_qt5_prefix}/examples
|
||||
%_qt5_headerdir %{_includedir}/qt5
|
||||
%_qt5_importdir %{_qt5_archdatadir}/imports
|
||||
%_qt5_libdir %{_libdir}
|
||||
%_qt5_libexecdir %{_qt5_archdatadir}/libexec
|
||||
%_qt5_plugindir %{_qt5_archdatadir}/plugins
|
||||
%_qt5_qmake %{_qt5_bindir}/qmake
|
||||
%_qt5_settingsdir %{_sysconfdir}/xdg
|
||||
%_qt5_sysconfdir %{_qt5_settingsdir}
|
||||
%_qt5_translationdir %{_datadir}/qt5/translations
|
||||
|
||||
%_qt5_cflags %{nil}@@QT5_CFLAGS@@
|
||||
%_qt5_cxxflags %{nil}@@QT5_CXXFLAGS@@
|
||||
%_qt5_ldflags %{nil}%{?__global_ldflags} @@QT5_RPM_LD_FLAGS@@
|
||||
%_qt5_optflags %{optflags} @@QT5_RPM_OPT_FLAGS@@
|
||||
|
||||
%_qt5_qmake_flags \\\
|
||||
QMAKE_CFLAGS_DEBUG="${CFLAGS:-%{_qt5_optflags} %{?_qt5_cflags}}" \\\
|
||||
QMAKE_CFLAGS_RELEASE="${CFLAGS:-%{_qt5_optflags} %{?_qt5_cflags}}" \\\
|
||||
QMAKE_CXXFLAGS_DEBUG="${CXXFLAGS:-%{_qt5_optflags} %{?_qt5_cxxflags}}" \\\
|
||||
QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-%{_qt5_optflags} %{?_qt5_cxxflags}}" \\\
|
||||
QMAKE_LFLAGS_DEBUG="${LDFLAGS:-%{_qt5_ldflags}}" \\\
|
||||
QMAKE_LFLAGS_RELEASE="${LDFLAGS:-%{_qt5_ldflags}}" \\\
|
||||
QMAKE_STRIP=
|
||||
|
||||
%qmake_qt5 %{_qt5_qmake} %{?_qt5_qmake_flags}
|
@ -1,368 +0,0 @@
|
||||
From fa0d02eedcacc22db1026b902801b29176755362 Mon Sep 17 00:00:00 2001
|
||||
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||
Date: Fri, 21 Aug 2015 17:08:19 -0700
|
||||
Subject: [PATCH] moc: get the system #defines from the compiler itself
|
||||
|
||||
In order for moc to properly parse #ifdefs and family, we've had
|
||||
QMAKE_COMPILER_DEFINES as a list of pre-defined macros from the
|
||||
compiler. That list is woefully incomplete.
|
||||
|
||||
Instead, let's simply ask the compiler for the list. With GCC and
|
||||
family, we use the -dM flag while preprocessing. With ICC on Windows,
|
||||
the flag gains an extra "Q" but is otherwise the same. For MSVC, it
|
||||
requires using some undocumented switches and parsing environment
|
||||
variables (I've tested MSVC 2012, 2013 and 2015).
|
||||
|
||||
The new moc option is called --include to be similar to GCC's -include
|
||||
option. It does more than just parse a list of pre-defined macros and
|
||||
can be used to insert any sort of code that moc needs to parse prior to
|
||||
the main file.
|
||||
|
||||
Change-Id: I7de033f80b0e4431b7f1ffff13fca02dbb60a0a6
|
||||
---
|
||||
mkspecs/features/moc.prf | 31 +++++++++++++--
|
||||
qmake/main.cpp | 38 +++++++++++++++++++
|
||||
src/tools/moc/main.cpp | 16 +++++++-
|
||||
src/tools/moc/preprocessor.cpp | 60 +++++++++++++++++-------------
|
||||
src/tools/moc/preprocessor.h | 1 +
|
||||
tests/auto/tools/moc/subdir/extradefines.h | 1 +
|
||||
tests/auto/tools/moc/tst_moc.cpp | 42 +++++++++++++++++++++
|
||||
7 files changed, 158 insertions(+), 31 deletions(-)
|
||||
create mode 100644 tests/auto/tools/moc/subdir/extradefines.h
|
||||
|
||||
diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
|
||||
index c0b5682..af885c3 100644
|
||||
--- a/mkspecs/features/moc.prf
|
||||
+++ b/mkspecs/features/moc.prf
|
||||
@@ -24,8 +24,25 @@ win32:count(MOC_INCLUDEPATH, 40, >) {
|
||||
write_file($$absolute_path($$WIN_INCLUDETEMP, $$OUT_PWD), WIN_INCLUDETEMP_CONT)|error("Aborting.")
|
||||
}
|
||||
|
||||
+# QNX's compiler sets "gcc" config, but does not support the -dM option;
|
||||
+# iOS builds are multi-arch, so this feature cannot possibly work.
|
||||
+if(gcc|intel_icl|msvc):!rim_qcc:!ios {
|
||||
+ moc_predefs.CONFIG = no_link
|
||||
+ gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
|
||||
+ else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
|
||||
+ else:msvc {
|
||||
+ # make sure that our bin dir is first in path, so qmake is found
|
||||
+ moc_predefs.commands = PATH $$shell_path($$[QT_INSTALL_BINS/src]);%PATH%&
|
||||
+ moc_predefs.commands += $$QMAKE_CXX -Bxqmake $$QMAKE_CXXFLAGS -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT}
|
||||
+ } else: error("Oops, I messed up")
|
||||
+ moc_predefs.output = $$MOC_DIR/moc_predefs.h
|
||||
+ moc_predefs.input = MOC_PREDEF_FILE
|
||||
+ silent: moc_predefs.commands = @echo generating $$moc_predefs.output$$escape_expand(\n\t)@$$moc_predefs.commands
|
||||
+ QMAKE_EXTRA_COMPILERS += moc_predefs
|
||||
+ MOC_PREDEF_FILE = $$[QT_HOST_DATA/src]/mkspecs/features/data/dummy.cpp
|
||||
+}
|
||||
+
|
||||
defineReplace(mocCmdBase) {
|
||||
- RET =
|
||||
!isEmpty(WIN_INCLUDETEMP) {
|
||||
incvar = @$$WIN_INCLUDETEMP
|
||||
} else {
|
||||
@@ -34,7 +51,13 @@ defineReplace(mocCmdBase) {
|
||||
incvar += -I$$shell_quote($$inc)
|
||||
incvar += $$QMAKE_FRAMEWORKPATH_FLAGS
|
||||
}
|
||||
- RET += $$QMAKE_MOC $(DEFINES) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$incvar $$QMAKE_MOC_OPTIONS
|
||||
+
|
||||
+ RET = $$QMAKE_MOC $(DEFINES)
|
||||
+
|
||||
+ isEmpty(MOC_PREDEF_FILE): RET += $$join(QMAKE_COMPILER_DEFINES, " -D", -D)
|
||||
+ else: RET += --include $$moc_predefs.output
|
||||
+
|
||||
+ RET += $$incvar $$QMAKE_MOC_OPTIONS
|
||||
return($$RET)
|
||||
}
|
||||
|
||||
@@ -46,7 +69,7 @@ moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAK
|
||||
moc_header.input = HEADERS
|
||||
moc_header.variable_out = SOURCES
|
||||
moc_header.name = MOC ${QMAKE_FILE_IN}
|
||||
-moc_header.depends += $$WIN_INCLUDETEMP
|
||||
+moc_header.depends += $$WIN_INCLUDETEMP $$moc_predefs.output
|
||||
silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands
|
||||
QMAKE_EXTRA_COMPILERS += moc_header
|
||||
INCREDIBUILD_XGE += moc_header
|
||||
@@ -58,7 +81,7 @@ moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_
|
||||
moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
|
||||
moc_source.input = SOURCES OBJECTIVE_SOURCES
|
||||
moc_source.name = MOC ${QMAKE_FILE_IN}
|
||||
-moc_source.depends += $$WIN_INCLUDETEMP
|
||||
+moc_source.depends += $$WIN_INCLUDETEMP $$moc_predefs.output
|
||||
silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
|
||||
QMAKE_EXTRA_COMPILERS += moc_source
|
||||
INCREDIBUILD_XGE += moc_source
|
||||
diff --git a/qmake/main.cpp b/qmake/main.cpp
|
||||
index bde537d..e9b8bde 100644
|
||||
--- a/qmake/main.cpp
|
||||
+++ b/qmake/main.cpp
|
||||
@@ -1,6 +1,7 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
+** Copyright (C) 2015 Intel Corporation.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the qmake application of the Qt Toolkit.
|
||||
@@ -47,6 +48,10 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
+#ifdef Q_OS_WIN
|
||||
+# include <qt_windows.h>
|
||||
+#endif
|
||||
+
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
@@ -246,6 +251,30 @@ static int doInstall(int argc, char **argv)
|
||||
return 3;
|
||||
}
|
||||
|
||||
+static int dumpMacros(const wchar_t *cmdline)
|
||||
+{
|
||||
+ // from http://stackoverflow.com/questions/3665537/how-to-find-out-cl-exes-built-in-macros
|
||||
+ int argc;
|
||||
+ wchar_t **argv = CommandLineToArgvW(cmdline, &argc);
|
||||
+ if (!argv)
|
||||
+ return 2;
|
||||
+ for (int i = 0; i < argc; ++i) {
|
||||
+ if (argv[i][0] != L'-' || argv[i][1] != 'D')
|
||||
+ continue;
|
||||
+
|
||||
+ wchar_t *value = wcschr(argv[i], L'=');
|
||||
+ if (value) {
|
||||
+ *value = 0;
|
||||
+ ++value;
|
||||
+ } else {
|
||||
+ // point to the NUL at the end, so we don't print anything
|
||||
+ value = argv[i] + wcslen(argv[i]);
|
||||
+ }
|
||||
+ wprintf(L"#define %Ls %Ls\n", argv[i] + 2, value);
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
#endif // Q_OS_WIN
|
||||
|
||||
/* This is to work around lame implementation on Darwin. It has been noted that the getpwd(3) function
|
||||
@@ -280,6 +309,15 @@ int runQMake(int argc, char **argv)
|
||||
// Workaround for inferior/missing command line tools on Windows: make our own!
|
||||
if (argc >= 2 && !strcmp(argv[1], "-install"))
|
||||
return doInstall(argc - 2, argv + 2);
|
||||
+
|
||||
+ {
|
||||
+ // Support running as Visual C++'s compiler
|
||||
+ const wchar_t *cmdline = _wgetenv(L"MSC_CMD_FLAGS");
|
||||
+ if (!cmdline || !*cmdline)
|
||||
+ cmdline = _wgetenv(L"MSC_IDE_FLAGS");
|
||||
+ if (cmdline && *cmdline)
|
||||
+ return dumpMacros(cmdline);
|
||||
+ }
|
||||
#endif
|
||||
|
||||
QMakeVfs vfs;
|
||||
diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp
|
||||
index a5cbad7..d06335d 100644
|
||||
--- a/src/tools/moc/main.cpp
|
||||
+++ b/src/tools/moc/main.cpp
|
||||
@@ -259,6 +259,11 @@ int runMoc(int argc, char **argv)
|
||||
prependIncludeOption.setValueName(QStringLiteral("file"));
|
||||
parser.addOption(prependIncludeOption);
|
||||
|
||||
+ QCommandLineOption includeOption(QStringLiteral("include"));
|
||||
+ includeOption.setDescription(QStringLiteral("Parse <file> as an #include before the main source(s)."));
|
||||
+ includeOption.setValueName(QStringLiteral("file"));
|
||||
+ parser.addOption(includeOption);
|
||||
+
|
||||
QCommandLineOption noNotesWarningsCompatOption(QStringLiteral("n"));
|
||||
noNotesWarningsCompatOption.setDescription(QStringLiteral("Do not display notes (-nn) or warnings (-nw). Compatibility option."));
|
||||
noNotesWarningsCompatOption.setValueName(QStringLiteral("which"));
|
||||
@@ -406,7 +411,16 @@ int runMoc(int argc, char **argv)
|
||||
moc.includes = pp.includes;
|
||||
|
||||
// 1. preprocess
|
||||
- moc.symbols = pp.preprocessed(moc.filename, &in);
|
||||
+ foreach (const QString &includeName, parser.values(includeOption)) {
|
||||
+ QByteArray rawName = pp.resolveInclude(QFile::encodeName(includeName), moc.filename);
|
||||
+ QFile f(QFile::decodeName(rawName));
|
||||
+ if (f.open(QIODevice::ReadOnly)) {
|
||||
+ moc.symbols += Symbol(0, MOC_INCLUDE_BEGIN, rawName);
|
||||
+ moc.symbols += pp.preprocessed(rawName, &f);
|
||||
+ moc.symbols += Symbol(0, MOC_INCLUDE_END, rawName);
|
||||
+ }
|
||||
+ }
|
||||
+ moc.symbols += pp.preprocessed(moc.filename, &in);
|
||||
|
||||
if (!pp.preprocessOnly) {
|
||||
// 2. parse
|
||||
diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp
|
||||
index d036c40..70cf14a 100644
|
||||
--- a/src/tools/moc/preprocessor.cpp
|
||||
+++ b/src/tools/moc/preprocessor.cpp
|
||||
@@ -1001,6 +1001,37 @@ static void mergeStringLiterals(Symbols *_symbols)
|
||||
}
|
||||
}
|
||||
|
||||
+QByteArray Preprocessor::resolveInclude(const QByteArray &include, const QByteArray &relativeTo)
|
||||
+{
|
||||
+ // #### stringery
|
||||
+ QFileInfo fi;
|
||||
+ if (!relativeTo.isEmpty())
|
||||
+ fi.setFile(QFileInfo(QString::fromLocal8Bit(relativeTo.constData())).dir(), QString::fromLocal8Bit(include.constData()));
|
||||
+ for (int j = 0; j < Preprocessor::includes.size() && !fi.exists(); ++j) {
|
||||
+ const IncludePath &p = Preprocessor::includes.at(j);
|
||||
+ if (p.isFrameworkPath) {
|
||||
+ const int slashPos = include.indexOf('/');
|
||||
+ if (slashPos == -1)
|
||||
+ continue;
|
||||
+ QByteArray frameworkCandidate = include.left(slashPos);
|
||||
+ frameworkCandidate.append(".framework/Headers/");
|
||||
+ fi.setFile(QString::fromLocal8Bit(QByteArray(p.path + '/' + frameworkCandidate).constData()), QString::fromLocal8Bit(include.mid(slashPos + 1).constData()));
|
||||
+ } else {
|
||||
+ fi.setFile(QString::fromLocal8Bit(p.path.constData()), QString::fromLocal8Bit(include.constData()));
|
||||
+ }
|
||||
+ // try again, maybe there's a file later in the include paths with the same name
|
||||
+ // (186067)
|
||||
+ if (fi.isDir()) {
|
||||
+ fi = QFileInfo();
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!fi.exists() || fi.isDir())
|
||||
+ return QByteArray();
|
||||
+ return fi.canonicalFilePath().toLocal8Bit();
|
||||
+}
|
||||
+
|
||||
void Preprocessor::preprocess(const QByteArray &filename, Symbols &preprocessed)
|
||||
{
|
||||
currentFilenames.push(filename);
|
||||
@@ -1021,33 +1052,9 @@ void Preprocessor::preprocess(const QByteArray &filename, Symbols &preprocessed)
|
||||
continue;
|
||||
until(PP_NEWLINE);
|
||||
|
||||
- // #### stringery
|
||||
- QFileInfo fi;
|
||||
- if (local)
|
||||
- fi.setFile(QFileInfo(QString::fromLocal8Bit(filename.constData())).dir(), QString::fromLocal8Bit(include.constData()));
|
||||
- for (int j = 0; j < Preprocessor::includes.size() && !fi.exists(); ++j) {
|
||||
- const IncludePath &p = Preprocessor::includes.at(j);
|
||||
- if (p.isFrameworkPath) {
|
||||
- const int slashPos = include.indexOf('/');
|
||||
- if (slashPos == -1)
|
||||
- continue;
|
||||
- QByteArray frameworkCandidate = include.left(slashPos);
|
||||
- frameworkCandidate.append(".framework/Headers/");
|
||||
- fi.setFile(QString::fromLocal8Bit(QByteArray(p.path + '/' + frameworkCandidate).constData()), QString::fromLocal8Bit(include.mid(slashPos + 1).constData()));
|
||||
- } else {
|
||||
- fi.setFile(QString::fromLocal8Bit(p.path.constData()), QString::fromLocal8Bit(include.constData()));
|
||||
- }
|
||||
- // try again, maybe there's a file later in the include paths with the same name
|
||||
- // (186067)
|
||||
- if (fi.isDir()) {
|
||||
- fi = QFileInfo();
|
||||
- continue;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (!fi.exists() || fi.isDir())
|
||||
+ include = resolveInclude(include, local ? filename : QByteArray());
|
||||
+ if (include.isNull())
|
||||
continue;
|
||||
- include = fi.canonicalFilePath().toLocal8Bit();
|
||||
|
||||
if (Preprocessor::preprocessedIncludes.contains(include))
|
||||
continue;
|
||||
@@ -1202,6 +1209,7 @@ Symbols Preprocessor::preprocessed(const QByteArray &filename, QFile *file)
|
||||
input = cleaned(input);
|
||||
|
||||
// phase 2: tokenize for the preprocessor
|
||||
+ index = 0;
|
||||
symbols = tokenize(input);
|
||||
|
||||
#if 0
|
||||
diff --git a/src/tools/moc/preprocessor.h b/src/tools/moc/preprocessor.h
|
||||
index 9c81f86..d876caf 100644
|
||||
--- a/src/tools/moc/preprocessor.h
|
||||
+++ b/src/tools/moc/preprocessor.h
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
QList<QByteArray> frameworks;
|
||||
QSet<QByteArray> preprocessedIncludes;
|
||||
Macros macros;
|
||||
+ QByteArray resolveInclude(const QByteArray &filename, const QByteArray &relativeTo);
|
||||
Symbols preprocessed(const QByteArray &filename, QFile *device);
|
||||
|
||||
void parseDefineArguments(Macro *m);
|
||||
diff --git a/tests/auto/tools/moc/subdir/extradefines.h b/tests/auto/tools/moc/subdir/extradefines.h
|
||||
new file mode 100644
|
||||
index 0000000..e7888ce
|
||||
--- /dev/null
|
||||
+++ b/tests/auto/tools/moc/subdir/extradefines.h
|
||||
@@ -0,0 +1 @@
|
||||
+#define FOO 1
|
||||
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
|
||||
index fa1b68b..1d6a911 100644
|
||||
--- a/tests/auto/tools/moc/tst_moc.cpp
|
||||
+++ b/tests/auto/tools/moc/tst_moc.cpp
|
||||
@@ -552,6 +552,8 @@ private slots:
|
||||
void frameworkSearchPath();
|
||||
void cstyleEnums();
|
||||
void defineMacroViaCmdline();
|
||||
+ void defineMacroViaForcedInclude();
|
||||
+ void defineMacroViaForcedIncludeRelative();
|
||||
void specifyMetaTagsFromCmdline();
|
||||
void invokable();
|
||||
void singleFunctionKeywordSignalAndSlot();
|
||||
@@ -1219,6 +1221,46 @@ void tst_Moc::defineMacroViaCmdline()
|
||||
#endif
|
||||
}
|
||||
|
||||
+void tst_Moc::defineMacroViaForcedInclude()
|
||||
+{
|
||||
+#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
|
||||
+ QProcess proc;
|
||||
+
|
||||
+ QStringList args;
|
||||
+ args << "--include" << m_sourceDirectory + QLatin1String("/subdir/extradefines.h");
|
||||
+ args << m_sourceDirectory + QStringLiteral("/macro-on-cmdline.h");
|
||||
+
|
||||
+ proc.start(m_moc, args);
|
||||
+ QVERIFY(proc.waitForFinished());
|
||||
+ QCOMPARE(proc.exitCode(), 0);
|
||||
+ QCOMPARE(proc.readAllStandardError(), QByteArray());
|
||||
+ QByteArray mocOut = proc.readAllStandardOutput();
|
||||
+ QVERIFY(!mocOut.isEmpty());
|
||||
+#else
|
||||
+ QSKIP("Only tested on linux/gcc");
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+void tst_Moc::defineMacroViaForcedIncludeRelative()
|
||||
+{
|
||||
+#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
|
||||
+ QProcess proc;
|
||||
+
|
||||
+ QStringList args;
|
||||
+ args << "--include" << QStringLiteral("extradefines.h") << "-I" + m_sourceDirectory + "/subdir";
|
||||
+ args << m_sourceDirectory + QStringLiteral("/macro-on-cmdline.h");
|
||||
+
|
||||
+ proc.start(m_moc, args);
|
||||
+ QVERIFY(proc.waitForFinished());
|
||||
+ QCOMPARE(proc.exitCode(), 0);
|
||||
+ QCOMPARE(proc.readAllStandardError(), QByteArray());
|
||||
+ QByteArray mocOut = proc.readAllStandardOutput();
|
||||
+ QVERIFY(!mocOut.isEmpty());
|
||||
+#else
|
||||
+ QSKIP("Only tested on linux/gcc");
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
// tst_Moc::specifyMetaTagsFromCmdline()
|
||||
// plugin_metadata.h contains a plugin which we register here. Since we're not building this
|
||||
// application as a plugin, we need top copy some of the initializer code found in qplugin.h:
|
||||
--
|
||||
1.9.3
|
||||
|
142
qt5-qtbase.spec
142
qt5-qtbase.spec
@ -1,3 +1,5 @@
|
||||
#define prerelease rc
|
||||
|
||||
# See http://bugzilla.redhat.com/223663
|
||||
%define multilib_archs x86_64 %{ix86} %{?mips} ppc64 ppc s390x s390 sparc64 sparcv9
|
||||
%define multilib_basearchs x86_64 %{?mips64} ppc64 s390x sparc64
|
||||
@ -11,9 +13,13 @@
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%global qt_module qtbase
|
||||
%define platform linux-g++
|
||||
|
||||
%global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
||||
%if 0%{?use_clang}
|
||||
%define platform linux-clang
|
||||
%endif
|
||||
|
||||
%global qt_module qtbase
|
||||
|
||||
## set to 1 to enable bootstrap
|
||||
%global bootstrap 0
|
||||
@ -30,7 +36,6 @@
|
||||
|
||||
%if 0%{?fedora} > 23 || 0%{?rhel} > 6
|
||||
%global journald -journald
|
||||
BuildRequires: perl-generators
|
||||
BuildRequires: pkgconfig(libsystemd)
|
||||
%endif
|
||||
|
||||
@ -52,12 +57,10 @@ BuildRequires: pkgconfig(libsystemd)
|
||||
%global tests 1
|
||||
%endif
|
||||
|
||||
#define prerelease rc
|
||||
|
||||
Summary: Qt5 - QtBase components
|
||||
Name: qt5-qtbase
|
||||
Version: 5.6.1
|
||||
Release: 3%{?prerelease:.%{prerelease}}%{?dist}
|
||||
Summary: Qt5 - QtBase components
|
||||
Version: 5.7.0
|
||||
Release: 2%{?dist}
|
||||
|
||||
# See LGPL_EXCEPTIONS.txt, for exception details
|
||||
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
||||
@ -94,47 +97,16 @@ Patch52: qtbase-opensource-src-5.6.0-moc_WORDSIZE.patch
|
||||
# arm patch
|
||||
Patch54: qtbase-opensource-src-5.6.0-arm.patch
|
||||
|
||||
# recently passed code review, not integrated yet
|
||||
# https://codereview.qt-project.org/126102/
|
||||
Patch60: moc-get-the-system-defines-from-the-compiler-itself.patch
|
||||
|
||||
# drop -O3 and make -O2 by default
|
||||
Patch61: qt5-qtbase-cxxflag.patch
|
||||
|
||||
## upstream patches
|
||||
Patch101: 0001-xcb-Properly-interpret-data.l-0-field-of-XdndStatus-.patch
|
||||
Patch111: 0011-XCB-Auto-detect-xcb-glx-also-with-xcb-qt.patch
|
||||
Patch132: 0032-xcb-Fix-drop-of-text-uri-list-and-text-html.patch
|
||||
Patch133: 0033-xcb-Fix-dropping-URL-on-Firefox-window.patch
|
||||
Patch148: 0148-xcb-Disable-GLX-pbuffers-with-Chromium-in-VMs.patch
|
||||
Patch155: 0155-xcb-Fix-transient-parent-and-Qt-Window-flag.patch
|
||||
|
||||
# macros, be mindful to keep sync'd with macros.qt5
|
||||
Source10: macros.qt5
|
||||
%define _qt5 %{name}
|
||||
%define _qt5_prefix %{_libdir}/qt5
|
||||
%define _qt5_archdatadir %{_libdir}/qt5
|
||||
# -devel bindir items (still) conflict with qt4
|
||||
# at least until this is all implemented,
|
||||
# http://lists.qt-project.org/pipermail/development/2012-November/007990.html
|
||||
%define _qt5_bindir %{_qt5_prefix}/bin
|
||||
%define _qt5_datadir %{_datadir}/qt5
|
||||
%define _qt5_docdir %{_docdir}/qt5
|
||||
%define _qt5_examplesdir %{_qt5_prefix}/examples
|
||||
%define _qt5_headerdir %{_includedir}/qt5
|
||||
%define _qt5_importdir %{_qt5_archdatadir}/imports
|
||||
%define _qt5_libdir %{_libdir}
|
||||
%define _qt5_libexecdir %{_qt5_archdatadir}/libexec
|
||||
%define _qt5_plugindir %{_qt5_archdatadir}/plugins
|
||||
%define _qt5_settingsdir %{_sysconfdir}/xdg
|
||||
%define _qt5_sysconfdir %{_qt5_settingsdir}
|
||||
%define _qt5_translationdir %{_datadir}/qt5/translations
|
||||
|
||||
# Do not check any files in %%{_qt5_plugindir}/platformthemes/ for requires.
|
||||
# Those themes are there for platform integration. If the required libraries are
|
||||
# not there, the platform to integrate with isn't either. Then Qt will just
|
||||
# silently ignore the plugin that fails to load. Thus, there is no need to let
|
||||
# RPM drag in gtk2 as a dependency for the GTK+ 2 dialog support.
|
||||
# RPM drag in gtk3 as a dependency for the GTK+3 dialog support.
|
||||
%global __requires_exclude_from ^%{_qt5_plugindir}/platformthemes/.*$
|
||||
|
||||
# for %%check
|
||||
@ -146,6 +118,9 @@ BuildRequires: libjpeg-devel
|
||||
BuildRequires: libmng-devel
|
||||
BuildRequires: libtiff-devel
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
%if 0%{?use_clang}
|
||||
BuildRequires: clang >= 3.7.0
|
||||
%endif
|
||||
# http://bugzilla.redhat.com/1196359
|
||||
%if 0%{?fedora} || 0%{?rhel} > 6
|
||||
%global dbus -dbus-linked
|
||||
@ -155,7 +130,7 @@ BuildRequires: pkgconfig(libdrm)
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
BuildRequires: pkgconfig(gl)
|
||||
BuildRequires: pkgconfig(glib-2.0)
|
||||
BuildRequires: pkgconfig(gtk+-2.0)
|
||||
BuildRequires: pkgconfig(gtk+-3.0)
|
||||
BuildRequires: pkgconfig(libproxy-1.0)
|
||||
# xcb-sm
|
||||
BuildRequires: pkgconfig(ice) pkgconfig(sm)
|
||||
@ -200,6 +175,7 @@ BuildRequires: libicu-devel
|
||||
%endif
|
||||
BuildRequires: pkgconfig(xcb) pkgconfig(xcb-glx) pkgconfig(xcb-icccm) pkgconfig(xcb-image) pkgconfig(xcb-keysyms) pkgconfig(xcb-renderutil)
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
BuildRequires: qt5-rpm-macros >= %{version}
|
||||
|
||||
%if 0%{?tests}
|
||||
BuildRequires: dbus-x11
|
||||
@ -249,6 +225,9 @@ Requires: pkgconfig(egl)
|
||||
%endif
|
||||
Requires: pkgconfig(gl)
|
||||
Requires: qt5-rpm-macros
|
||||
%if 0%{?use_clang}
|
||||
Requires: clang >= 3.7.0
|
||||
%endif
|
||||
%description devel
|
||||
%{summary}.
|
||||
|
||||
@ -260,6 +239,7 @@ Requires: %{name} = %{version}-%{release}
|
||||
BuildRequires: qt5-qhelpgenerator
|
||||
BuildRequires: qt5-qdoc
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
%{summary}.
|
||||
%endif
|
||||
@ -267,6 +247,7 @@ BuildArch: noarch
|
||||
%package examples
|
||||
Summary: Programming examples for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description examples
|
||||
%{summary}.
|
||||
|
||||
@ -280,6 +261,7 @@ Requires: pkgconfig(libinput)
|
||||
Requires: pkgconfig(xkbcommon)
|
||||
%endif
|
||||
Requires: pkgconfig(zlib)
|
||||
|
||||
%description static
|
||||
%{summary}.
|
||||
|
||||
@ -337,18 +319,6 @@ Requires: glx-utils
|
||||
%description gui
|
||||
Qt5 libraries used for drawing widgets and OpenGL items.
|
||||
|
||||
%package -n qt5-rpm-macros
|
||||
Summary: RPM macros for Qt5
|
||||
%if 0%{?fedora} > 22 && 0%{?inject_optflags}
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1248174
|
||||
Requires: redhat-rpm-config
|
||||
%endif
|
||||
# when qt5-rpm-macros was split out
|
||||
Conflicts: qt5-qtbase-devel < 5.6.0-0.23
|
||||
BuildArch: noarch
|
||||
%description -n qt5-rpm-macros
|
||||
RPM macros for building Qt5 packages.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n %{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}}
|
||||
@ -358,24 +328,10 @@ RPM macros for building Qt5 packages.
|
||||
|
||||
%patch52 -p1 -b .moc_WORDSIZE
|
||||
%patch54 -p1 -b .arm
|
||||
%patch60 -p1 -b .moc_system_defines
|
||||
%patch61 -p1 -b .qt5-qtbase-cxxflag
|
||||
|
||||
%patch101 -p1 -b .0001-xcb
|
||||
%patch111 -p1 -b .0011
|
||||
%patch132 -p1 -b .0032
|
||||
%patch133 -p1 -b .0033
|
||||
%patch148 -p1 -b .0148
|
||||
%patch155 -p1 -b .0155
|
||||
|
||||
%define platform linux-g++
|
||||
|
||||
%if 0%{?inject_optflags}
|
||||
## adjust $RPM_OPT_FLAGS
|
||||
# remove -fexceptions
|
||||
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
|
||||
# these flags are for qtbase build only, no need to propogate elsewhere
|
||||
#RPM_OPT_FLAGS="$RPM_OPT_FLAGS %{?qt5_deprecated_flag} %{?qt5_arm_flag}"
|
||||
|
||||
%patch2 -p1 -b .multilib_optflags
|
||||
# drop backup file(s), else they get installed too, http://bugzilla.redhat.com/639463
|
||||
@ -391,10 +347,6 @@ sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 $RPM_LD_FLAGS|" \
|
||||
sed -i -e 's|^\(QMAKE_STRIP.*=\).*$|\1|g' mkspecs/common/linux.conf
|
||||
%endif
|
||||
|
||||
%if 0%{?prerelease}
|
||||
bin/syncqt.pl -version %{version}
|
||||
%endif
|
||||
|
||||
# move some bundled libs to ensure they're not accidentally used
|
||||
pushd src/3rdparty
|
||||
mkdir UNUSED
|
||||
@ -423,6 +375,10 @@ test -x configure || chmod +x configure
|
||||
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
|
||||
RPM_OPT_FLAGS="$RPM_OPT_FLAGS %{?qt5_arm_flag} %{?qt5_deprecated_flag} %{?qt5_null_flag}"
|
||||
|
||||
%if 0%{?use_clang}
|
||||
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fno-delete-null-pointer-checks||g'`
|
||||
%endif
|
||||
|
||||
export CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
|
||||
export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS"
|
||||
export LDFLAGS="$LDFLAGS $RPM_LD_FLAGS"
|
||||
@ -451,7 +407,7 @@ export MAKEFLAGS="%{?_smp_mflags}"
|
||||
%{?dbus}%{!?dbus:-dbus-runtime} \
|
||||
-fontconfig \
|
||||
-glib \
|
||||
-gtkstyle \
|
||||
-gtk \
|
||||
%{?ibase} \
|
||||
-iconv \
|
||||
-icu \
|
||||
@ -531,23 +487,9 @@ translationdir=%{_qt5_translationdir}
|
||||
|
||||
Name: Qt5
|
||||
Description: Qt5 Configuration
|
||||
Version: %{version}
|
||||
Version: 5.6.0
|
||||
EOF
|
||||
|
||||
# rpm macros
|
||||
install -p -m644 -D %{SOURCE10} \
|
||||
%{buildroot}%{rpm_macros_dir}/macros.qt5
|
||||
sed -i \
|
||||
-e "s|@@NAME@@|%{name}|g" \
|
||||
-e "s|@@EPOCH@@|%{?epoch}%{!?epoch:0}|g" \
|
||||
-e "s|@@VERSION@@|%{version}|g" \
|
||||
-e "s|@@EVR@@|%{?epoch:%{epoch:}}%{version}-%{release}|g" \
|
||||
-e "s|@@QT5_CFLAGS@@|%{?qt5_cflags}|g" \
|
||||
-e "s|@@QT5_CXXFLAGS@@|%{?qt5_cxxflags}|g" \
|
||||
-e "s|@@QT5_RPM_LD_FLAGS@@|%{?qt5_rpm_ld_flags}|g" \
|
||||
-e "s|@@QT5_RPM_OPT_FLAGS@@|%{?qt5_rpm_opt_flags} %{?qt5_null_flag}|g" \
|
||||
%{buildroot}%{rpm_macros_dir}/macros.qt5
|
||||
|
||||
# create/own dirs
|
||||
mkdir -p %{buildroot}{%{_qt5_archdatadir}/mkspecs/modules,%{_qt5_importdir},%{_qt5_libexecdir},%{_qt5_plugindir}/{designer,iconengines,script,styles},%{_qt5_translationdir}}
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/xdg/QtProject
|
||||
@ -844,6 +786,8 @@ fi
|
||||
%if 0%{?egl}
|
||||
%{_qt5_libdir}/libQt5EglDeviceIntegration.prl
|
||||
%{_qt5_libdir}/libQt5EglDeviceIntegration.so
|
||||
%{_qt5_libdir}/libQt5EglFsKmsSupport.prl
|
||||
%{_qt5_libdir}/libQt5EglFsKmsSupport.so
|
||||
%endif
|
||||
|
||||
|
||||
@ -929,6 +873,7 @@ fi
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QIbusPlatformInputContextPlugin.cmake
|
||||
%if 0%{?egl}
|
||||
%{_qt5_libdir}/libQt5EglDeviceIntegration.so.5*
|
||||
%{_qt5_libdir}/libQt5EglFsKmsSupport.so.5*
|
||||
%{_qt5_plugindir}/platforms/libqeglfs.so
|
||||
%{_qt5_plugindir}/platforms/libqminimalegl.so
|
||||
%dir %{_qt5_plugindir}/egldeviceintegrations/
|
||||
@ -937,9 +882,10 @@ fi
|
||||
%{_qt5_plugindir}/xcbglintegrations/libqxcb-egl-integration.so
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QMinimalEglIntegrationPlugin.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSIntegrationPlugin.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSKmsIntegrationPlugin.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSX11IntegrationPlugin.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSKmsGbmIntegrationPlugin.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QXcbEglIntegrationPlugin.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QGtk3ThemePlugin.cmake
|
||||
%endif
|
||||
%{_qt5_plugindir}/platforms/libqlinuxfb.so
|
||||
%{_qt5_plugindir}/platforms/libqminimal.so
|
||||
@ -951,24 +897,24 @@ fi
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QXcbIntegrationPlugin.cmake
|
||||
%{_qt5_plugindir}/xcbglintegrations/libqxcb-glx-integration.so
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QXcbGlxIntegrationPlugin.cmake
|
||||
%{_qt5_plugindir}/platformthemes/libqgtk2.so
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QGtk2ThemePlugin.cmake
|
||||
%{_qt5_plugindir}/platformthemes/libqgtk3.so
|
||||
%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QGtk3ThemePlugin.cmake
|
||||
%{_qt5_plugindir}/printsupport/libcupsprintersupport.so
|
||||
%{_qt5_libdir}/cmake/Qt5PrintSupport/Qt5PrintSupport_QCupsPrinterSupportPlugin.cmake
|
||||
|
||||
%files -n qt5-rpm-macros
|
||||
%{rpm_macros_dir}/macros.qt5
|
||||
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Jun 14 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.1-3
|
||||
- backport some xcb-plugin-related fixes
|
||||
* Tue Jun 14 2016 Helio Chissini de Castro <helio@kde.org> - 5.7.0-2
|
||||
- Compiled with gcc
|
||||
|
||||
* Thu Jun 09 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.1-2
|
||||
- fix Qt5.pc version
|
||||
* Tue Jun 14 2016 Helio Chissini de Castro <helio@kde.org> - 5.7.0-1
|
||||
- Qt 5.7.0 release
|
||||
|
||||
* Thu Jun 09 2016 Jan Grulich <jgrulich@redhat.com> - 5.6.1-1
|
||||
- Update to 5.6.1
|
||||
* Thu Jun 09 2016 Helio Chissini de Castro <helio@kde.org> - 5.7.0-0.1
|
||||
- Prepare 5.7
|
||||
- Move macros package away from qtbase. Now is called qt5-rpm-macros
|
||||
|
||||
* Thu Jun 02 2016 Than Ngo <than@redhat.com> - 5.6.0-21
|
||||
- drop gcc6 workaround on arm
|
||||
|
Loading…
Reference in New Issue
Block a user