mxe/src/qtbase-1-fixes.patch

246 lines
9.6 KiB
Diff
Raw Normal View History

This file is part of MXE. See LICENSE.md for licensing information.
Contains ad hoc patches for cross building.
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Wed, 26 Aug 2015 12:45:43 +0100
Subject: [PATCH 1/7] cmake: Rearrange STATIC vs INTERFACE targets
Otherwise we attempt to add_library(Qt5::UiPlugin STATIC IMPORTED)
for header-only modules when building Qt5 statically.
Source: https://git.io/vzWJz
See also: https://github.com/mxe/mxe/issues/1185
diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
index 55c74aad..d7bcffeb 100644
--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
2017-11-22 21:23:29 +00:00
@@ -224,12 +224,12 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
endif()
!!ENDIF
+!!IF equals(TEMPLATE, aux)
+ add_library(Qt5::$${CMAKE_MODULE_NAME} INTERFACE IMPORTED)
+!!ELSE
!!IF !isEmpty(CMAKE_STATIC_TYPE)
add_library(Qt5::$${CMAKE_MODULE_NAME} STATIC IMPORTED)
set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")
2017-11-22 21:23:29 +00:00
-!!ELSE
-!!IF equals(TEMPLATE, aux)
- add_library(Qt5::$${CMAKE_MODULE_NAME} INTERFACE IMPORTED)
2017-11-22 21:23:29 +00:00
!!ELSE
add_library(Qt5::$${CMAKE_MODULE_NAME} SHARED IMPORTED)
!!ENDIF
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tony Theodore <tonyt@logyst.com>
Date: Sat, 16 Jul 2016 20:31:07 +1000
Subject: [PATCH 2/7] Fix pkgconfig file and library naming
See: https://codereview.qt-project.org/#/c/165394/
https://bugreports.qt.io/browse/QTBUG-30898
Currently, *.pc files are generated with debug suffix `d` in `-release`
mode and without the suffix in `-debug` or `-debug-and-release`. This
can be worked around by `CONIFG-=debug_and_release`, however, a more
predictable and consistent naming approach would be preferable.
This change mimics the *.prl file and lib conventions:
-release: creates normal *.pc files and lib names
-release -force-debug-info: normal as above
-debug: creates *d.pc and *d lib names
-debug-and-release: creates both
-default: creates both (default link: debug)
and should be unsurprising to users of `pkg-config`. At very least,
it's deterministic and easily incorporated into build systems.
Task-number: 30898
Change-Id: If75336ec7d21a7ec0cb6d245fe87c64afcb5a644
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
index c0a8dcc2..d5e24ac1 100644
--- a/mkspecs/features/qt_module.prf
+++ b/mkspecs/features/qt_module.prf
2017-12-16 08:44:26 +00:00
@@ -265,6 +265,10 @@ load(qt_installs)
load(qt_targets)
+# Set TARGET towards the end but before pkgconfig setup to keep naming
+# conventions consistent with *prl files
+TARGET = $$qt5LibraryTarget($$TARGET$$QT_LIBINFIX)
+
# this builds on top of qt_common
!internal_module:!lib_bundle:if(unix|mingw) {
CONFIG += create_pc
2017-12-16 08:44:26 +00:00
@@ -275,12 +279,12 @@ load(qt_targets)
QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw]
QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw]
QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME
- QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$QT_MAJOR_VERSION ")
- QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$QT_MAJOR_VERSION)
+ QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt$$QT_MAJOR_VERSION, "Qt$$QT_MAJOR_VERSION ")
+ QMAKE_PKGCONFIG_FILE = $$TARGET
for(i, MODULE_DEPENDS): \
2017-06-02 14:07:52 +01:00
- QMAKE_PKGCONFIG_REQUIRES += $$replace(QT.$${i}.name, ^Qt, Qt$$section(QT.$${i}.VERSION, ., 0, 0))
+ QMAKE_PKGCONFIG_REQUIRES += $$replace(QT.$${i}.name, ^Qt, Qt$$section(QT.$${i}.VERSION, ., 0, 0))$$qtPlatformTargetSuffix()
isEmpty(QMAKE_PKGCONFIG_DESCRIPTION): \
- QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module
+ QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt$$QT_MAJOR_VERSION, "Qt ") module
pclib_replace.match = $$lib_replace.match
!isEmpty(lib_replace.replace): \
pclib_replace.replace = $$QMAKE_PKGCONFIG_LIBDIR
2017-12-16 08:44:26 +00:00
@@ -314,5 +318,3 @@ win32 {
# On other platforms, Qt's own compilation goes needs to compile the Qt 5.0 API
DEFINES *= QT_DISABLE_DEPRECATED_BEFORE=0x050000
}
-
-TARGET = $$qt5LibraryTarget($$TARGET$$QT_LIBINFIX) # Do this towards the end
2016-12-15 13:48:16 +00:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2017-01-29 13:07:45 +00:00
From: Mark Brand <mabrand@mabrand.nl>
Date: Sun, 29 Jan 2017 13:02:16 +0100
Subject: [PATCH 3/7] reenable fontconfig for win32 (MXE-specific)
2017-01-29 13:07:45 +00:00
Change-Id: I05b036366bd402e43309742412bcf8ca91fe125f
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 0a591e11..4791b345 100644
2017-01-29 13:07:45 +00:00
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
2017-12-16 08:44:26 +00:00
@@ -928,7 +928,7 @@
2017-01-29 13:07:45 +00:00
},
"fontconfig": {
"label": "Fontconfig",
- "condition": "!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig",
+ "condition": "!config.darwin && features.system-freetype && libs.fontconfig",
"output": [ "privateFeature", "feature" ]
},
"gbm": {
diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp
index ca33689c..194523ee 100644
2017-01-29 13:07:45 +00:00
--- a/src/plugins/platforms/minimal/qminimalintegration.cpp
+++ b/src/plugins/platforms/minimal/qminimalintegration.cpp
2017-06-02 14:07:52 +01:00
@@ -130,7 +130,11 @@ QPlatformFontDatabase *QMinimalIntegration::fontDatabase() const
{
if (!m_fontDatabase && (m_options & EnableFonts)) {
2017-01-29 13:07:45 +00:00
#if QT_CONFIG(fontconfig)
+#ifdef Q_OS_WIN
2017-06-02 14:07:52 +01:00
+ m_fontDatabase = new QFreeTypeFontDatabase;
2017-01-29 13:07:45 +00:00
+#else
2017-06-02 14:07:52 +01:00
m_fontDatabase = new QGenericUnixFontDatabase;
2017-01-29 13:07:45 +00:00
+#endif
2017-06-02 14:07:52 +01:00
#elif defined(Q_OS_WINRT)
m_fontDatabase = new QWinRTFontDatabase;
#elif defined(Q_OS_WIN)
2017-01-29 13:07:45 +00:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2016-12-15 13:48:16 +00:00
From: Mark Brand <mabrand@mabrand.nl>
2017-01-29 13:07:45 +00:00
Date: Sun, 29 Jan 2017 16:22:03 +0100
Subject: [PATCH 4/7] fix treatment of SYBASE_LIBS
2017-01-29 13:07:45 +00:00
Change-Id: I4c9914cf7ef9d91feb0718a57f2551c1eeed47e0
2017-07-29 14:05:33 +01:00
diff --git a/src/plugins/sqldrivers/configure.pri b/src/plugins/sqldrivers/configure.pri
index b69b51b6..d37423ad 100644
2017-07-29 14:05:33 +01:00
--- a/src/plugins/sqldrivers/configure.pri
+++ b/src/plugins/sqldrivers/configure.pri
@@ -92,7 +92,7 @@ defineTest(qtConfLibrary_sybaseEnv) {
2017-01-29 13:07:45 +00:00
libs += "-L$${sybase}/lib"
libs += $$getenv(SYBASE_LIBS)
!isEmpty(libs) {
- $${1}.libs = "$$val_escape(libs)"
+ $${1}.libs = $$libs
export($${1}.libs)
}
return(true)
2017-06-10 23:29:30 +01:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2017-06-10 23:29:30 +01:00
From: Mark Brand <mabrand@mabrand.nl>
Date: Sun, 11 Jun 2017 00:27:41 +0200
Subject: [PATCH 5/7] use pkg-config for harfbuzz
2017-06-10 23:29:30 +01:00
Change-Id: Ia65cbb90fd180f1bc10ce077a9a8323a48e51421
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 4791b345..5f606217 100644
2017-06-10 23:29:30 +01:00
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
2017-12-16 08:44:26 +00:00
@@ -220,7 +220,8 @@
]
},
2017-06-10 23:29:30 +01:00
"sources": [
- "-lharfbuzz"
+ { "type": "pkgConfig", "args": "harfbuzz" },
+ "-lharfbuzz"
]
},
"imf": {
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sat, 7 Oct 2017 11:39:29 +0200
Subject: [PATCH 6/7] Revert "qmake: don't limit command line length when not
actually on windows"
This breaks cross compiling for mingw.
This reverts commit 8bebded9ab02b8eec67c44bfddf802d6bf9cda3c.
diff --git a/mkspecs/win32-g++/qmake.conf b/mkspecs/win32-g++/qmake.conf
index 884286ea..780e5512 100644
--- a/mkspecs/win32-g++/qmake.conf
+++ b/mkspecs/win32-g++/qmake.conf
2017-12-16 08:44:26 +00:00
@@ -52,10 +52,8 @@ QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
QMAKE_LFLAGS_DLL = -shared
QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections
-equals(QMAKE_HOST.os, Windows) {
- QMAKE_LINK_OBJECT_MAX = 10
- QMAKE_LINK_OBJECT_SCRIPT = object_script
-}
+QMAKE_LINK_OBJECT_MAX = 10
+QMAKE_LINK_OBJECT_SCRIPT = object_script
QMAKE_PREFIX_SHLIB =
QMAKE_EXTENSION_SHLIB = dll
QMAKE_PREFIX_STATICLIB = lib
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index 792ffb19..33002326 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
2017-11-22 21:23:29 +00:00
@@ -279,8 +279,7 @@ void MingwMakefileGenerator::writeLibsPart(QTextStream &t)
void MingwMakefileGenerator::writeObjectsPart(QTextStream &t)
{
- const ProString &objmax = project->first("QMAKE_LINK_OBJECT_MAX");
- if (objmax.isEmpty() || project->values("OBJECTS").count() < objmax.toInt()) {
+ if (project->values("OBJECTS").count() < var("QMAKE_LINK_OBJECT_MAX").toInt()) {
objectsLinkLine = "$(OBJECTS)";
} else if (project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") {
QString ar_script_file = var("QMAKE_LINK_OBJECT_SCRIPT") + "." + var("TARGET");
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tony Theodore <tonyt@logyst.com>
Date: Wed, 20 Dec 2017 12:08:48 +1100
Subject: [PATCH 7/7] qtbase: add workaround for internal compiler error
taken from:
https://codereview.qt-project.org/#/c/212360/
diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp
index 67691903..c1a775a5 100644
--- a/src/corelib/global/qrandom.cpp
+++ b/src/corelib/global/qrandom.cpp
@@ -92,7 +92,7 @@ DECLSPEC_IMPORT BOOLEAN WINAPI SystemFunction036(PVOID RandomBuffer, ULONG Rando
QT_BEGIN_NAMESPACE
-#if defined(Q_PROCESSOR_X86) && QT_COMPILER_SUPPORTS_HERE(RDRND)
+#if 0
static qsizetype qt_random_cpu(void *buffer, qsizetype count) Q_DECL_NOTHROW;
# ifdef Q_PROCESSOR_X86_64