aboutsummaryrefslogtreecommitdiff
path: root/depends/patches/qt/dont_hardcode_x86_64.patch
blob: 0e1ca6acdabbc89c71646797d6e14470c55f0d51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
macOS: Don't hard-code x86_64 as the architecture when using qmake

Upstream commit:
 - Qt 6.1: 9082cc8e8d5a6441dabe5e7a95bc0cd9085b95fe

For other Qt branches see
https://codereview.qt-project.org/q/I70db7e4c27f0d3da5d0af33cb491d72c312d3fa8


--- old/qtbase/configure.json
+++ new/qtbase/configure.json
@@ -208,11 +208,18 @@
 
     "testTypeDependencies": {
         "linkerSupportsFlag": [ "use_gold_linker" ],
-        "verifySpec": [ "shared", "use_gold_linker", "compiler-flags", "qmakeargs", "commit" ],
+        "verifySpec": [
+            "shared",
+            "use_gold_linker",
+            "compiler-flags", "qmakeargs",
+            "simulator_and_device",
+            "thread",
+            "commit" ],
         "compile": [ "verifyspec" ],
         "detectPkgConfig": [ "cross_compile", "machineTuple" ],
         "library": [ "pkg-config", "compiler-flags" ],
-        "getPkgConfigVariable": [ "pkg-config" ]
+        "getPkgConfigVariable": [ "pkg-config" ],
+        "architecture" : [ "verifyspec" ]
     },
 
     "testTypeAliases": {
@@ -653,7 +660,7 @@
         },
         "architecture": {
             "label": "Architecture",
-            "output": [ "architecture" ]
+            "output": [ "architecture", "commitConfig" ]
         },
         "pkg-config": {
             "label": "Using pkg-config",
diff --git a/configure.pri b/configure.pri
index 33c90a8c2f..71767e29d6 100644

--- old/qtbase/configure.pri
+++ new/qtbase/configure.pri
@@ -642,6 +642,13 @@ defineTest(qtConfOutput_commitOptions) {
     write_file($$QT_BUILD_TREE/mkspecs/qdevice.pri, $${currentConfig}.output.devicePro)|error()
 }
 
+# Output is written after configuring each Qt module,
+# but some tests within a module might depend on the
+# configuration output of previous tests.
+defineTest(qtConfOutput_commitConfig) {
+    qtConfProcessOutput()
+}
+
 # type (empty or 'host'), option name, default value
 defineTest(processQtPath) {
     out_var = config.rel_input.$${2}
diff --git a/mkspecs/common/macx.conf b/mkspecs/common/macx.conf
index 7d4a406134..de96c12fc9 100644

--- old/qtbase/mkspecs/common/macx.conf
+++ new/qtbase/mkspecs/common/macx.conf
@@ -6,7 +6,6 @@ QMAKE_PLATFORM         += macos osx macx
 QMAKE_MAC_SDK           = macosx
 
 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
-QMAKE_APPLE_DEVICE_ARCHS = x86_64
 
 QT_MAC_SDK_VERSION_MIN = 10.13
 QT_MAC_SDK_VERSION_MAX = 11.0
diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf
index d052808c14..0a89effe87 100644

--- old/qtbase/mkspecs/features/mac/default_post.prf
+++ new/qtbase/mkspecs/features/mac/default_post.prf
@@ -89,6 +89,11 @@ app_extension_api_only {
     QMAKE_LFLAGS              += $$QMAKE_CFLAGS_APPLICATION_EXTENSION
 }
 
+# Non-universal builds do not set QMAKE_APPLE_DEVICE_ARCHS,
+# so we pick it up from what the arch test resolved instead.
+isEmpty(QMAKE_APPLE_DEVICE_ARCHS): \
+    QMAKE_APPLE_DEVICE_ARCHS = $$QT_ARCH
+
 macx-xcode {
     qmake_pkginfo_typeinfo.name = QMAKE_PKGINFO_TYPEINFO
     !isEmpty(QMAKE_PKGINFO_TYPEINFO): \
@@ -144,9 +149,6 @@ macx-xcode {
     simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS
     VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS
 
-    isEmpty(VALID_ARCHS): \
-        error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture")
-
     single_arch: VALID_ARCHS = $$first(VALID_ARCHS)
 
     ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS))
diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf
index 5003679bd0..c7c080cb07 100644

--- old/qtbase/mkspecs/features/toolchain.prf
+++ new/qtbase/mkspecs/features/toolchain.prf
@@ -182,9 +182,14 @@ isEmpty($${target_prefix}.INCDIRS) {
         # UIKit simulator platforms will see the device SDK's sysroot in
         # QMAKE_DEFAULT_*DIRS, because they're handled in a single build pass.
         darwin {
-            # Clang doesn't pick up the architecture from the sysroot, and will
-            # default to the host architecture, so we need to manually set it.
-            cxx_flags += -arch $$QMAKE_APPLE_DEVICE_ARCHS
+            uikit {
+                # Clang doesn't automatically pick up the architecture, just because
+                # we're passing the iOS sysroot below, and we will end up building the
+                # test for the host architecture, resulting in linker errors when
+                # linking against the iOS libraries. We work around this by passing
+                # the architecture explicitly.
+                cxx_flags += -arch $$first(QMAKE_APPLE_DEVICE_ARCHS)
+            }
 
             uikit:macx-xcode: \
                 cxx_flags += -isysroot $$sdk_path_device.value