You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mxe/src/qtbase-1-fixes.patch

362 lines
15 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

This file is part of MXE. See LICENSE.md for licensing information.
Contains ad hoc patches for cross building.
From ec06a0993dd7ceae8002852646dc1826111a1882 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/8] 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 27f4c277d6..84ff9ae0ef 100644
--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
@@ -214,12 +214,12 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
list(APPEND _Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES \"$${CMAKE_INTERFACE_QT5_MODULE_DEPS}\")
!!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")
-!!ELSE
-!!IF equals(TEMPLATE, aux)
- add_library(Qt5::$${CMAKE_MODULE_NAME} INTERFACE IMPORTED)
!!ELSE
add_library(Qt5::$${CMAKE_MODULE_NAME} SHARED IMPORTED)
!!ENDIF
--
2.17.0
From dad81660aaf6e7bd011b3541e9ab9a0a27120973 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/8] 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 f8729de947..e7f6e3651d 100644
--- a/mkspecs/features/qt_module.prf
+++ b/mkspecs/features/qt_module.prf
@@ -264,6 +264,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
@@ -274,12 +278,12 @@ load(qt_targets)
QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw]
QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw]
QMAKE_PKGCONFIG_CFLAGS = -D$$MODULE_DEFINE -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): \
- 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
@@ -313,5 +317,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
--
2.17.0
From 69740750f7905baa5c66e48bad22e39b5e07ca72 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sun, 29 Jan 2017 13:02:16 +0100
Subject: [PATCH 3/8] reenable fontconfig for win32 (MXE-specific)
Change-Id: I05b036366bd402e43309742412bcf8ca91fe125f
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 219385a108..eee90b5b20 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -973,7 +973,7 @@
"fontconfig": {
"label": "Fontconfig",
"autoDetect": "!config.darwin",
- "condition": "!config.win32 && features.system-freetype && libs.fontconfig",
+ "condition": "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 0c04608fca..a26e02fbf3 100644
--- a/src/plugins/platforms/minimal/qminimalintegration.cpp
+++ b/src/plugins/platforms/minimal/qminimalintegration.cpp
@@ -161,7 +161,11 @@ QPlatformFontDatabase *QMinimalIntegration::fontDatabase() const
if (!m_fontDatabase) {
#if QT_CONFIG(fontconfig)
- m_fontDatabase = new QGenericUnixFontDatabase;
+#ifdef Q_OS_WIN
+ m_fontDatabase = new QFreeTypeFontDatabase;
+#else
+ m_fontDatabase = new QGenericUnixFontDatabase;
+#endif
#else
m_fontDatabase = QPlatformIntegration::fontDatabase();
#endif
--
2.17.0
From e28fcb374385d6dfb29a6c99bea283a4fbc894a7 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sun, 29 Jan 2017 16:22:03 +0100
Subject: [PATCH 4/8] fix treatment of SYBASE_LIBS
Change-Id: I4c9914cf7ef9d91feb0718a57f2551c1eeed47e0
diff --git a/src/plugins/sqldrivers/configure.pri b/src/plugins/sqldrivers/configure.pri
index b69b51b679..d37423adbd 100644
--- a/src/plugins/sqldrivers/configure.pri
+++ b/src/plugins/sqldrivers/configure.pri
@@ -92,7 +92,7 @@ defineTest(qtConfLibrary_sybaseEnv) {
libs += "-L$${sybase}/lib"
libs += $$getenv(SYBASE_LIBS)
!isEmpty(libs) {
- $${1}.libs = "$$val_escape(libs)"
+ $${1}.libs = $$libs
export($${1}.libs)
}
return(true)
--
2.17.0
From ef350f7199772d5846a1f6f9214e8d562183f393 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sun, 11 Jun 2017 00:27:41 +0200
Subject: [PATCH 5/8] use pkg-config for harfbuzz
Change-Id: Ia65cbb90fd180f1bc10ce077a9a8323a48e51421
diff --git a/src/gui/configure.json b/src/gui/configure.json
index eee90b5b20..6c6745b1dd 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -215,7 +215,8 @@
]
},
"sources": [
- "-lharfbuzz"
+ { "type": "pkgConfig", "args": "harfbuzz" },
+ "-lharfbuzz"
]
},
"imf": {
--
2.17.0
From 65353949d9a7f6bbdcd5ddabf09ac3e5357eac1d Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Thu, 23 Nov 2017 11:28:47 +0200
Subject: [PATCH 6/8] disable qt_random_cpu for i686-w64-mingw32
Workaround for gcc internal error compiling for mingw32:
global/qrandom.cpp: In function 'qsizetype qt_random_cpu(void*, qsizetype)':
global/qrandom.cpp:123:1: internal compiler error: in
ix86_compute_frame_layout, at config/i386/i386.c:10145
}
^
global/qrandom.cpp:123:1: internal compiler error: Segmentation fault
i686-w64-mingw32.static-g++: internal compiler error: Segmentation fault
(program cc1plus)
Based on https://codereview.qt-project.org/#/c/212360/
Change-Id: Ia1c902e7b147bdda2b8d7904b40a3b968b8d0369
diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp
index ebf9864b15..9a31933975 100644
--- a/src/corelib/global/qrandom.cpp
+++ b/src/corelib/global/qrandom.cpp
@@ -90,7 +90,7 @@ DECLSPEC_IMPORT BOOLEAN WINAPI SystemFunction036(PVOID RandomBuffer, ULONG Rando
QT_BEGIN_NAMESPACE
-#if defined(Q_PROCESSOR_X86) && QT_COMPILER_SUPPORTS_HERE(RDRND)
+#if defined(Q_PROCESSOR_X86) && !defined(Q_PROCESSOR_X86_32) && QT_COMPILER_SUPPORTS_HERE(RDRND)
static qsizetype qt_random_cpu(void *buffer, qsizetype count) Q_DECL_NOTHROW;
# ifdef Q_PROCESSOR_X86_64
--
2.17.0
From 84cf457b4bc814fb82b08e0917b09397bbf9ec1a Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Tue, 8 May 2018 21:57:07 -0700
Subject: [PATCH 7/8] Fix build with GCC 8: memset/memcpy/memmove of
non-trivials
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
qarraydataops.h:73:17: error: void* memset(void*, int, size_t) clearing an object of non-trivial type
struct TCBPoint; use assignment or value-initialization instead [-Werror=class-memaccess]
Change-Id: I5d0ee9389a794d80983efffd152ce10eb557341f
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h
index d0f83d2b6a..7e1b43f9b1 100644
--- a/src/corelib/tools/qarraydataops.h
+++ b/src/corelib/tools/qarraydataops.h
@@ -65,7 +65,7 @@ struct QPodArrayOps
Q_ASSERT(newSize > uint(this->size));
Q_ASSERT(newSize <= this->alloc);
- ::memset(this->end(), 0, (newSize - this->size) * sizeof(T));
+ ::memset(static_cast<void *>(this->end()), 0, (newSize - this->size) * sizeof(T));
this->size = int(newSize);
}
@@ -121,8 +121,9 @@ struct QPodArrayOps
Q_ASSERT(e <= where || b > this->end()); // No overlap
Q_ASSERT(size_t(e - b) <= this->alloc - uint(this->size));
- ::memmove(where + (e - b), where, (static_cast<const T*>(this->end()) - where) * sizeof(T));
- ::memcpy(where, b, (e - b) * sizeof(T));
+ ::memmove(static_cast<void *>(where + (e - b)), static_cast<void *>(where),
+ (static_cast<const T*>(this->end()) - where) * sizeof(T));
+ ::memcpy(static_cast<void *>(where), static_cast<const void *>(b), (e - b) * sizeof(T));
this->size += (e - b);
}
@@ -133,7 +134,8 @@ struct QPodArrayOps
Q_ASSERT(b >= this->begin() && b < this->end());
Q_ASSERT(e > this->begin() && e < this->end());
- ::memmove(b, e, (static_cast<T *>(this->end()) - e) * sizeof(T));
+ ::memmove(static_cast<void *>(b), static_cast<void *>(e),
+ (static_cast<T *>(this->end()) - e) * sizeof(T));
this->size -= (e - b);
}
};
--
2.17.0
From 77082d00f719fc72daa85ad2a59f3f395201ba6a Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Date: Mon, 9 Apr 2018 18:34:18 +0200
Subject: [PATCH 8/8] qmake: fix look-up of relative files from .depend_command
in shadow builds
the dependency paths are fixified against the output directory, so we
must resolve them accordingly.
Change-Id: Id92750aad358153bd2db5daca3194c54eda58dbb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit 75587c8030ff8057b90200cb20cff1e4549c00b5)
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 82573347b6..99aecdd8ce 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -1953,11 +1953,12 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
}
QT_PCLOSE(proc);
if(!indeps.isEmpty()) {
+ QDir outDir(Option::output_dir);
// ### This is basically fubar. Add 'lines' flag to CONFIG?
QStringList dep_cmd_deps = indeps.replace('\n', ' ').simplified().split(' ');
for(int i = 0; i < dep_cmd_deps.count(); ++i) {
QString &file = dep_cmd_deps[i];
- QString absFile = QDir(Option::output_dir).absoluteFilePath(file);
+ QString absFile = outDir.absoluteFilePath(file);
if (exists(absFile)) {
file = absFile;
} else {
@@ -1965,8 +1966,9 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
QList<QMakeLocalFileName> depdirs = QMakeSourceFileInfo::dependencyPaths();
for (QList<QMakeLocalFileName>::Iterator dit = depdirs.begin();
dit != depdirs.end(); ++dit) {
- if (exists((*dit).local() + '/' + file)) {
- localFile = (*dit).local() + '/' + file;
+ QString lf = outDir.absoluteFilePath((*dit).local() + '/' + file);
+ if (exists(lf)) {
+ localFile = lf;
break;
}
}
@@ -2045,11 +2047,12 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
}
QT_PCLOSE(proc);
if(!indeps.isEmpty()) {
+ QDir outDir(Option::output_dir);
// ### This is basically fubar. Add 'lines' flag to CONFIG?
QStringList dep_cmd_deps = indeps.replace('\n', ' ').simplified().split(' ');
for(int i = 0; i < dep_cmd_deps.count(); ++i) {
QString &file = dep_cmd_deps[i];
- QString absFile = QDir(Option::output_dir).absoluteFilePath(file);
+ QString absFile = outDir.absoluteFilePath(file);
if (exists(absFile)) {
file = absFile;
} else {
@@ -2057,8 +2060,9 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
QList<QMakeLocalFileName> depdirs = QMakeSourceFileInfo::dependencyPaths();
for (QList<QMakeLocalFileName>::Iterator dit = depdirs.begin();
dit != depdirs.end(); ++dit) {
- if (exists((*dit).local() + '/' + file)) {
- localFile = (*dit).local() + '/' + file;
+ QString lf = outDir.absoluteFilePath((*dit).local() + '/' + file);
+ if (exists(lf)) {
+ localFile = lf;
break;
}
}
--
2.17.0